// 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
#pragma pack(1)
struct BFu0ll_Us_BFu0ll { unsigned long long :0; unsigned short v1; unsigned long long :0; };
struct BFu0ll_Us_BFu0s { unsigned long long :0; unsigned short v1; unsigned short :0; };
struct BFu0ll_Us_BFu15i { unsigned long long :0; unsigned short v1; unsigned int v2:15; };
struct BFu0ll_Us_BFu15ll { unsigned long long :0; unsigned short v1; unsigned long long v2:15; };
struct BFu0ll_Us_BFu15s { unsigned long long :0; unsigned short v1; unsigned short v2:15; };
struct BFu0ll_Us_BFu16i { unsigned long long :0; unsigned short v1; unsigned int v2:16; };
struct BFu0ll_Us_BFu16ll { unsigned long long :0; unsigned short v1; unsigned long long v2:16; };
struct BFu0ll_Us_BFu16s { unsigned long long :0; unsigned short v1; unsigned short v2:16; };
struct BFu0ll_Us_BFu17i { unsigned long long :0; unsigned short v1; unsigned int v2:17; };
struct BFu0ll_Us_BFu17ll { unsigned long long :0; unsigned short v1; unsigned long long v2:17; };
struct BFu0ll_Us_BFu1c { unsigned long long :0; unsigned short v1; unsigned char v2:1; };
struct BFu0ll_Us_BFu1i { unsigned long long :0; unsigned short v1; unsigned int v2:1; };
struct BFu0ll_Us_BFu1ll { unsigned long long :0; unsigned short v1; unsigned long long v2:1; };
struct BFu0ll_Us_BFu1s { unsigned long long :0; unsigned short v1; unsigned short v2:1; };
struct BFu0ll_Us_BFu31i { unsigned long long :0; unsigned short v1; unsigned int v2:31; };
struct BFu0ll_Us_BFu31ll { unsigned long long :0; unsigned short v1; unsigned long long v2:31; };
struct BFu0ll_Us_BFu32i { unsigned long long :0; unsigned short v1; unsigned int v2:32; };
struct BFu0ll_Us_BFu32ll { unsigned long long :0; unsigned short v1; unsigned long long v2:32; };
struct BFu0ll_Us_BFu33 { unsigned long long :0; unsigned short v1; unsigned long long v2:33; };
struct BFu0ll_Us_BFu7c { unsigned long long :0; unsigned short v1; unsigned char v2:7; };
struct BFu0ll_Us_BFu7i { unsigned long long :0; unsigned short v1; unsigned int v2:7; };
struct BFu0ll_Us_BFu7ll { unsigned long long :0; unsigned short v1; unsigned long long v2:7; };
struct BFu0ll_Us_BFu7s { unsigned long long :0; unsigned short v1; unsigned short v2:7; };
struct BFu0ll_Us_BFu8c { unsigned long long :0; unsigned short v1; unsigned char v2:8; };
struct BFu0ll_Us_BFu8i { unsigned long long :0; unsigned short v1; unsigned int v2:8; };
struct BFu0ll_Us_BFu8ll { unsigned long long :0; unsigned short v1; unsigned long long v2:8; };
struct BFu0ll_Us_BFu8s { unsigned long long :0; unsigned short v1; unsigned short v2:8; };
struct BFu0ll_Us_BFu9i { unsigned long long :0; unsigned short v1; unsigned int v2:9; };
struct BFu0ll_Us_BFu9ll { unsigned long long :0; unsigned short v1; unsigned long long v2:9; };
struct BFu0ll_Us_BFu9s { unsigned long long :0; unsigned short v1; unsigned short v2:9; };
struct BFu0ll_Us_C { unsigned long long :0; unsigned short v1; char v2; };
struct BFu0ll_Us_D { unsigned long long :0; unsigned short v1; double v2; };
struct BFu0ll_Us_F { unsigned long long :0; unsigned short v1; float v2; };
struct BFu0ll_Us_I { unsigned long long :0; unsigned short v1; int v2; };
struct BFu0ll_Us_Ip { unsigned long long :0; unsigned short v1; int * v2; };
struct BFu0ll_Us_L { unsigned long long :0; unsigned short v1; long long v2; };
struct BFu0ll_Us_S { unsigned long long :0; unsigned short v1; short v2; };
struct BFu0ll_Us_Uc { unsigned long long :0; unsigned short v1; unsigned char v2; };
struct BFu0ll_Us_Ui { unsigned long long :0; unsigned short v1; unsigned int v2; };
struct BFu0ll_Us_Ul { unsigned long long :0; unsigned short v1; unsigned long long v2; };
struct BFu0ll_Us_Us { unsigned long long :0; unsigned short v1; unsigned short v2; };
struct BFu0ll_Us_Vp { unsigned long long :0; unsigned short v1; void * v2; };
struct BFu0ll_Vp { unsigned long long :0; void * v1; };
struct BFu0ll_Vp_BFu0c { unsigned long long :0; void * v1; unsigned char :0; };
struct BFu0ll_Vp_BFu0i { unsigned long long :0; void * v1; unsigned int :0; };
struct BFu0ll_Vp_BFu0ll { unsigned long long :0; void * v1; unsigned long long :0; };
struct BFu0ll_Vp_BFu0s { unsigned long long :0; void * v1; unsigned short :0; };
struct BFu0ll_Vp_BFu15i { unsigned long long :0; void * v1; unsigned int v2:15; };
struct BFu0ll_Vp_BFu15ll { unsigned long long :0; void * v1; unsigned long long v2:15; };
struct BFu0ll_Vp_BFu15s { unsigned long long :0; void * v1; unsigned short v2:15; };
struct BFu0ll_Vp_BFu16i { unsigned long long :0; void * v1; unsigned int v2:16; };
struct BFu0ll_Vp_BFu16ll { unsigned long long :0; void * v1; unsigned long long v2:16; };
struct BFu0ll_Vp_BFu16s { unsigned long long :0; void * v1; unsigned short v2:16; };
struct BFu0ll_Vp_BFu17i { unsigned long long :0; void * v1; unsigned int v2:17; };
struct BFu0ll_Vp_BFu17ll { unsigned long long :0; void * v1; unsigned long long v2:17; };
struct BFu0ll_Vp_BFu1c { unsigned long long :0; void * v1; unsigned char v2:1; };
struct BFu0ll_Vp_BFu1i { unsigned long long :0; void * v1; unsigned int v2:1; };
struct BFu0ll_Vp_BFu1ll { unsigned long long :0; void * v1; unsigned long long v2:1; };
struct BFu0ll_Vp_BFu1s { unsigned long long :0; void * v1; unsigned short v2:1; };
struct BFu0ll_Vp_BFu31i { unsigned long long :0; void * v1; unsigned int v2:31; };
struct BFu0ll_Vp_BFu31ll { unsigned long long :0; void * v1; unsigned long long v2:31; };
struct BFu0ll_Vp_BFu32i { unsigned long long :0; void * v1; unsigned int v2:32; };
struct BFu0ll_Vp_BFu32ll { unsigned long long :0; void * v1; unsigned long long v2:32; };
struct BFu0ll_Vp_BFu33 { unsigned long long :0; void * v1; unsigned long long v2:33; };
struct BFu0ll_Vp_BFu7c { unsigned long long :0; void * v1; unsigned char v2:7; };
struct BFu0ll_Vp_BFu7i { unsigned long long :0; void * v1; unsigned int v2:7; };
struct BFu0ll_Vp_BFu7ll { unsigned long long :0; void * v1; unsigned long long v2:7; };
struct BFu0ll_Vp_BFu7s { unsigned long long :0; void * v1; unsigned short v2:7; };
struct BFu0ll_Vp_BFu8c { unsigned long long :0; void * v1; unsigned char v2:8; };
struct BFu0ll_Vp_BFu8i { unsigned long long :0; void * v1; unsigned int v2:8; };
struct BFu0ll_Vp_BFu8ll { unsigned long long :0; void * v1; unsigned long long v2:8; };
struct BFu0ll_Vp_BFu8s { unsigned long long :0; void * v1; unsigned short v2:8; };
struct BFu0ll_Vp_BFu9i { unsigned long long :0; void * v1; unsigned int v2:9; };
struct BFu0ll_Vp_BFu9ll { unsigned long long :0; void * v1; unsigned long long v2:9; };
struct BFu0ll_Vp_BFu9s { unsigned long long :0; void * v1; unsigned short v2:9; };
struct BFu0ll_Vp_C { unsigned long long :0; void * v1; char v2; };
struct BFu0ll_Vp_D { unsigned long long :0; void * v1; double v2; };
struct BFu0ll_Vp_F { unsigned long long :0; void * v1; float v2; };
struct BFu0ll_Vp_I { unsigned long long :0; void * v1; int v2; };
struct BFu0ll_Vp_Ip { unsigned long long :0; void * v1; int * v2; };
struct BFu0ll_Vp_L { unsigned long long :0; void * v1; long long v2; };
struct BFu0ll_Vp_S { unsigned long long :0; void * v1; short v2; };
struct BFu0ll_Vp_Uc { unsigned long long :0; void * v1; unsigned char v2; };
struct BFu0ll_Vp_Ui { unsigned long long :0; void * v1; unsigned int v2; };
struct BFu0ll_Vp_Ul { unsigned long long :0; void * v1; unsigned long long v2; };
struct BFu0ll_Vp_Us { unsigned long long :0; void * v1; unsigned short v2; };
struct BFu0ll_Vp_Vp { unsigned long long :0; void * v1; void * v2; };
struct BFu0s { unsigned short :0; };
struct BFu0s_BFs0c { unsigned short :0; signed char :0; };
struct BFu0s_BFs0c_BFs0c { unsigned short :0; signed char :0; signed char :0; };
struct BFu0s_BFs0c_BFs0c_BFs0c { unsigned short :0; signed char :0; signed char :0; signed char :0; };
struct BFu0s_BFs0c_BFs0c_BFs0i { unsigned short :0; signed char :0; signed char :0; signed int :0; };
struct BFu0s_BFs0c_BFs0c_BFs0ll { unsigned short :0; signed char :0; signed char :0; signed long long :0; };
struct BFu0s_BFs0c_BFs0c_BFs0s { unsigned short :0; signed char :0; signed char :0; signed short :0; };
struct BFu0s_BFs0c_BFs0c_BFu0c { unsigned short :0; signed char :0; signed char :0; unsigned char :0; };
struct BFu0s_BFs0c_BFs0c_BFu0i { unsigned short :0; signed char :0; signed char :0; unsigned int :0; };
struct BFu0s_BFs0c_BFs0c_BFu0ll { unsigned short :0; signed char :0; signed char :0; unsigned long long :0; };
struct BFu0s_BFs0c_BFs0c_BFu0s { unsigned short :0; signed char :0; signed char :0; unsigned short :0; };
struct BFu0s_BFs0c_BFs0i { unsigned short :0; signed char :0; signed int :0; };
struct BFu0s_BFs0c_BFs0i_BFs0c { unsigned short :0; signed char :0; signed int :0; signed char :0; };
struct BFu0s_BFs0c_BFs0i_BFs0i { unsigned short :0; signed char :0; signed int :0; signed int :0; };
struct BFu0s_BFs0c_BFs0i_BFs0ll { unsigned short :0; signed char :0; signed int :0; signed long long :0; };
struct BFu0s_BFs0c_BFs0i_BFs0s { unsigned short :0; signed char :0; signed int :0; signed short :0; };
struct BFu0s_BFs0c_BFs0i_BFu0c { unsigned short :0; signed char :0; signed int :0; unsigned char :0; };
struct BFu0s_BFs0c_BFs0i_BFu0i { unsigned short :0; signed char :0; signed int :0; unsigned int :0; };
struct BFu0s_BFs0c_BFs0i_BFu0ll { unsigned short :0; signed char :0; signed int :0; unsigned long long :0; };
struct BFu0s_BFs0c_BFs0i_BFu0s { unsigned short :0; signed char :0; signed int :0; unsigned short :0; };
struct BFu0s_BFs0c_BFs0ll { unsigned short :0; signed char :0; signed long long :0; };
struct BFu0s_BFs0c_BFs0ll_BFs0c { unsigned short :0; signed char :0; signed long long :0; signed char :0; };
struct BFu0s_BFs0c_BFs0ll_BFs0i { unsigned short :0; signed char :0; signed long long :0; signed int :0; };
struct BFu0s_BFs0c_BFs0ll_BFs0ll { unsigned short :0; signed char :0; signed long long :0; signed long long :0; };
struct BFu0s_BFs0c_BFs0ll_BFs0s { unsigned short :0; signed char :0; signed long long :0; signed short :0; };
struct BFu0s_BFs0c_BFs0ll_BFu0c { unsigned short :0; signed char :0; signed long long :0; unsigned char :0; };
struct BFu0s_BFs0c_BFs0ll_BFu0i { unsigned short :0; signed char :0; signed long long :0; unsigned int :0; };
struct BFu0s_BFs0c_BFs0ll_BFu0ll { unsigned short :0; signed char :0; signed long long :0; unsigned long long :0; };
struct BFu0s_BFs0c_BFs0ll_BFu0s { unsigned short :0; signed char :0; signed long long :0; unsigned short :0; };
struct BFu0s_BFs0c_BFs0s { unsigned short :0; signed char :0; signed short :0; };
struct BFu0s_BFs0c_BFs0s_BFs0c { unsigned short :0; signed char :0; signed short :0; signed char :0; };
struct BFu0s_BFs0c_BFs0s_BFs0i { unsigned short :0; signed char :0; signed short :0; signed int :0; };
struct BFu0s_BFs0c_BFs0s_BFs0ll { unsigned short :0; signed char :0; signed short :0; signed long long :0; };
struct BFu0s_BFs0c_BFs0s_BFs0s { unsigned short :0; signed char :0; signed short :0; signed short :0; };
struct BFu0s_BFs0c_BFs0s_BFu0c { unsigned short :0; signed char :0; signed short :0; unsigned char :0; };
struct BFu0s_BFs0c_BFs0s_BFu0i { unsigned short :0; signed char :0; signed short :0; unsigned int :0; };
struct BFu0s_BFs0c_BFs0s_BFu0ll { unsigned short :0; signed char :0; signed short :0; unsigned long long :0; };
struct BFu0s_BFs0c_BFs0s_BFu0s { unsigned short :0; signed char :0; signed short :0; unsigned short :0; };
struct BFu0s_BFs0c_BFu0c { unsigned short :0; signed char :0; unsigned char :0; };
struct BFu0s_BFs0c_BFu0c_BFs0c { unsigned short :0; signed char :0; unsigned char :0; signed char :0; };
struct BFu0s_BFs0c_BFu0c_BFs0i { unsigned short :0; signed char :0; unsigned char :0; signed int :0; };
struct BFu0s_BFs0c_BFu0c_BFs0ll { unsigned short :0; signed char :0; unsigned char :0; signed long long :0; };
struct BFu0s_BFs0c_BFu0c_BFs0s { unsigned short :0; signed char :0; unsigned char :0; signed short :0; };
struct BFu0s_BFs0c_BFu0c_BFu0c { unsigned short :0; signed char :0; unsigned char :0; unsigned char :0; };
struct BFu0s_BFs0c_BFu0c_BFu0i { unsigned short :0; signed char :0; unsigned char :0; unsigned int :0; };
struct BFu0s_BFs0c_BFu0c_BFu0ll { unsigned short :0; signed char :0; unsigned char :0; unsigned long long :0; };
struct BFu0s_BFs0c_BFu0c_BFu0s { unsigned short :0; signed char :0; unsigned char :0; unsigned short :0; };
struct BFu0s_BFs0c_BFu0i { unsigned short :0; signed char :0; unsigned int :0; };
struct BFu0s_BFs0c_BFu0i_BFs0c { unsigned short :0; signed char :0; unsigned int :0; signed char :0; };
struct BFu0s_BFs0c_BFu0i_BFs0i { unsigned short :0; signed char :0; unsigned int :0; signed int :0; };
struct BFu0s_BFs0c_BFu0i_BFs0ll { unsigned short :0; signed char :0; unsigned int :0; signed long long :0; };
struct BFu0s_BFs0c_BFu0i_BFs0s { unsigned short :0; signed char :0; unsigned int :0; signed short :0; };
struct BFu0s_BFs0c_BFu0i_BFu0c { unsigned short :0; signed char :0; unsigned int :0; unsigned char :0; };
struct BFu0s_BFs0c_BFu0i_BFu0i { unsigned short :0; signed char :0; unsigned int :0; unsigned int :0; };
struct BFu0s_BFs0c_BFu0i_BFu0ll { unsigned short :0; signed char :0; unsigned int :0; unsigned long long :0; };
struct BFu0s_BFs0c_BFu0i_BFu0s { unsigned short :0; signed char :0; unsigned int :0; unsigned short :0; };
struct BFu0s_BFs0c_BFu0ll { unsigned short :0; signed char :0; unsigned long long :0; };
struct BFu0s_BFs0c_BFu0ll_BFs0c { unsigned short :0; signed char :0; unsigned long long :0; signed char :0; };
struct BFu0s_BFs0c_BFu0ll_BFs0i { unsigned short :0; signed char :0; unsigned long long :0; signed int :0; };
struct BFu0s_BFs0c_BFu0ll_BFs0ll { unsigned short :0; signed char :0; unsigned long long :0; signed long long :0; };
struct BFu0s_BFs0c_BFu0ll_BFs0s { unsigned short :0; signed char :0; unsigned long long :0; signed short :0; };
struct BFu0s_BFs0c_BFu0ll_BFu0c { unsigned short :0; signed char :0; unsigned long long :0; unsigned char :0; };
struct BFu0s_BFs0c_BFu0ll_BFu0i { unsigned short :0; signed char :0; unsigned long long :0; unsigned int :0; };
struct BFu0s_BFs0c_BFu0ll_BFu0ll { unsigned short :0; signed char :0; unsigned long long :0; unsigned long long :0; };
struct BFu0s_BFs0c_BFu0ll_BFu0s { unsigned short :0; signed char :0; unsigned long long :0; unsigned short :0; };
struct BFu0s_BFs0c_BFu0s { unsigned short :0; signed char :0; unsigned short :0; };
struct BFu0s_BFs0c_BFu0s_BFs0c { unsigned short :0; signed char :0; unsigned short :0; signed char :0; };
struct BFu0s_BFs0c_BFu0s_BFs0i { unsigned short :0; signed char :0; unsigned short :0; signed int :0; };
struct BFu0s_BFs0c_BFu0s_BFs0ll { unsigned short :0; signed char :0; unsigned short :0; signed long long :0; };
struct BFu0s_BFs0c_BFu0s_BFs0s { unsigned short :0; signed char :0; unsigned short :0; signed short :0; };
struct BFu0s_BFs0c_BFu0s_BFu0c { unsigned short :0; signed char :0; unsigned short :0; unsigned char :0; };
struct BFu0s_BFs0c_BFu0s_BFu0i { unsigned short :0; signed char :0; unsigned short :0; unsigned int :0; };
struct BFu0s_BFs0c_BFu0s_BFu0ll { unsigned short :0; signed char :0; unsigned short :0; unsigned long long :0; };
struct BFu0s_BFs0c_BFu0s_BFu0s { unsigned short :0; signed char :0; unsigned short :0; unsigned short :0; };
struct BFu0s_BFs0i { unsigned short :0; signed int :0; };
struct BFu0s_BFs0i_BFs0c { unsigned short :0; signed int :0; signed char :0; };
struct BFu0s_BFs0i_BFs0c_BFs0c { unsigned short :0; signed int :0; signed char :0; signed char :0; };
struct BFu0s_BFs0i_BFs0c_BFs0i { unsigned short :0; signed int :0; signed char :0; signed int :0; };
struct BFu0s_BFs0i_BFs0c_BFs0ll { unsigned short :0; signed int :0; signed char :0; signed long long :0; };
struct BFu0s_BFs0i_BFs0c_BFs0s { unsigned short :0; signed int :0; signed char :0; signed short :0; };
struct BFu0s_BFs0i_BFs0c_BFu0c { unsigned short :0; signed int :0; signed char :0; unsigned char :0; };
struct BFu0s_BFs0i_BFs0c_BFu0i { unsigned short :0; signed int :0; signed char :0; unsigned int :0; };
struct BFu0s_BFs0i_BFs0c_BFu0ll { unsigned short :0; signed int :0; signed char :0; unsigned long long :0; };
struct BFu0s_BFs0i_BFs0c_BFu0s { unsigned short :0; signed int :0; signed char :0; unsigned short :0; };
struct BFu0s_BFs0i_BFs0i { unsigned short :0; signed int :0; signed int :0; };
struct BFu0s_BFs0i_BFs0i_BFs0c { unsigned short :0; signed int :0; signed int :0; signed char :0; };
struct BFu0s_BFs0i_BFs0i_BFs0i { unsigned short :0; signed int :0; signed int :0; signed int :0; };
struct BFu0s_BFs0i_BFs0i_BFs0ll { unsigned short :0; signed int :0; signed int :0; signed long long :0; };
struct BFu0s_BFs0i_BFs0i_BFs0s { unsigned short :0; signed int :0; signed int :0; signed short :0; };
struct BFu0s_BFs0i_BFs0i_BFu0c { unsigned short :0; signed int :0; signed int :0; unsigned char :0; };
struct BFu0s_BFs0i_BFs0i_BFu0i { unsigned short :0; signed int :0; signed int :0; unsigned int :0; };
struct BFu0s_BFs0i_BFs0i_BFu0ll { unsigned short :0; signed int :0; signed int :0; unsigned long long :0; };
struct BFu0s_BFs0i_BFs0i_BFu0s { unsigned short :0; signed int :0; signed int :0; unsigned short :0; };
struct BFu0s_BFs0i_BFs0ll { unsigned short :0; signed int :0; signed long long :0; };
struct BFu0s_BFs0i_BFs0ll_BFs0c { unsigned short :0; signed int :0; signed long long :0; signed char :0; };
struct BFu0s_BFs0i_BFs0ll_BFs0i { unsigned short :0; signed int :0; signed long long :0; signed int :0; };
struct BFu0s_BFs0i_BFs0ll_BFs0ll { unsigned short :0; signed int :0; signed long long :0; signed long long :0; };
struct BFu0s_BFs0i_BFs0ll_BFs0s { unsigned short :0; signed int :0; signed long long :0; signed short :0; };
struct BFu0s_BFs0i_BFs0ll_BFu0c { unsigned short :0; signed int :0; signed long long :0; unsigned char :0; };
struct BFu0s_BFs0i_BFs0ll_BFu0i { unsigned short :0; signed int :0; signed long long :0; unsigned int :0; };
struct BFu0s_BFs0i_BFs0ll_BFu0ll { unsigned short :0; signed int :0; signed long long :0; unsigned long long :0; };
struct BFu0s_BFs0i_BFs0ll_BFu0s { unsigned short :0; signed int :0; signed long long :0; unsigned short :0; };
struct BFu0s_BFs0i_BFs0s { unsigned short :0; signed int :0; signed short :0; };
struct BFu0s_BFs0i_BFs0s_BFs0c { unsigned short :0; signed int :0; signed short :0; signed char :0; };
struct BFu0s_BFs0i_BFs0s_BFs0i { unsigned short :0; signed int :0; signed short :0; signed int :0; };
struct BFu0s_BFs0i_BFs0s_BFs0ll { unsigned short :0; signed int :0; signed short :0; signed long long :0; };
struct BFu0s_BFs0i_BFs0s_BFs0s { unsigned short :0; signed int :0; signed short :0; signed short :0; };
struct BFu0s_BFs0i_BFs0s_BFu0c { unsigned short :0; signed int :0; signed short :0; unsigned char :0; };
struct BFu0s_BFs0i_BFs0s_BFu0i { unsigned short :0; signed int :0; signed short :0; unsigned int :0; };
struct BFu0s_BFs0i_BFs0s_BFu0ll { unsigned short :0; signed int :0; signed short :0; unsigned long long :0; };
struct BFu0s_BFs0i_BFs0s_BFu0s { unsigned short :0; signed int :0; signed short :0; unsigned short :0; };
struct BFu0s_BFs0i_BFu0c { unsigned short :0; signed int :0; unsigned char :0; };
struct BFu0s_BFs0i_BFu0c_BFs0c { unsigned short :0; signed int :0; unsigned char :0; signed char :0; };
struct BFu0s_BFs0i_BFu0c_BFs0i { unsigned short :0; signed int :0; unsigned char :0; signed int :0; };
struct BFu0s_BFs0i_BFu0c_BFs0ll { unsigned short :0; signed int :0; unsigned char :0; signed long long :0; };
struct BFu0s_BFs0i_BFu0c_BFs0s { unsigned short :0; signed int :0; unsigned char :0; signed short :0; };
struct BFu0s_BFs0i_BFu0c_BFu0c { unsigned short :0; signed int :0; unsigned char :0; unsigned char :0; };
struct BFu0s_BFs0i_BFu0c_BFu0i { unsigned short :0; signed int :0; unsigned char :0; unsigned int :0; };
struct BFu0s_BFs0i_BFu0c_BFu0ll { unsigned short :0; signed int :0; unsigned char :0; unsigned long long :0; };
struct BFu0s_BFs0i_BFu0c_BFu0s { unsigned short :0; signed int :0; unsigned char :0; unsigned short :0; };
struct BFu0s_BFs0i_BFu0i { unsigned short :0; signed int :0; unsigned int :0; };
struct BFu0s_BFs0i_BFu0i_BFs0c { unsigned short :0; signed int :0; unsigned int :0; signed char :0; };
struct BFu0s_BFs0i_BFu0i_BFs0i { unsigned short :0; signed int :0; unsigned int :0; signed int :0; };
struct BFu0s_BFs0i_BFu0i_BFs0ll { unsigned short :0; signed int :0; unsigned int :0; signed long long :0; };
struct BFu0s_BFs0i_BFu0i_BFs0s { unsigned short :0; signed int :0; unsigned int :0; signed short :0; };
struct BFu0s_BFs0i_BFu0i_BFu0c { unsigned short :0; signed int :0; unsigned int :0; unsigned char :0; };
struct BFu0s_BFs0i_BFu0i_BFu0i { unsigned short :0; signed int :0; unsigned int :0; unsigned int :0; };
struct BFu0s_BFs0i_BFu0i_BFu0ll { unsigned short :0; signed int :0; unsigned int :0; unsigned long long :0; };
struct BFu0s_BFs0i_BFu0i_BFu0s { unsigned short :0; signed int :0; unsigned int :0; unsigned short :0; };
struct BFu0s_BFs0i_BFu0ll { unsigned short :0; signed int :0; unsigned long long :0; };
struct BFu0s_BFs0i_BFu0ll_BFs0c { unsigned short :0; signed int :0; unsigned long long :0; signed char :0; };
struct BFu0s_BFs0i_BFu0ll_BFs0i { unsigned short :0; signed int :0; unsigned long long :0; signed int :0; };
struct BFu0s_BFs0i_BFu0ll_BFs0ll { unsigned short :0; signed int :0; unsigned long long :0; signed long long :0; };
struct BFu0s_BFs0i_BFu0ll_BFs0s { unsigned short :0; signed int :0; unsigned long long :0; signed short :0; };
struct BFu0s_BFs0i_BFu0ll_BFu0c { unsigned short :0; signed int :0; unsigned long long :0; unsigned char :0; };
struct BFu0s_BFs0i_BFu0ll_BFu0i { unsigned short :0; signed int :0; unsigned long long :0; unsigned int :0; };
struct BFu0s_BFs0i_BFu0ll_BFu0ll { unsigned short :0; signed int :0; unsigned long long :0; unsigned long long :0; };
struct BFu0s_BFs0i_BFu0ll_BFu0s { unsigned short :0; signed int :0; unsigned long long :0; unsigned short :0; };
struct BFu0s_BFs0i_BFu0s { unsigned short :0; signed int :0; unsigned short :0; };
struct BFu0s_BFs0i_BFu0s_BFs0c { unsigned short :0; signed int :0; unsigned short :0; signed char :0; };
struct BFu0s_BFs0i_BFu0s_BFs0i { unsigned short :0; signed int :0; unsigned short :0; signed int :0; };
struct BFu0s_BFs0i_BFu0s_BFs0ll { unsigned short :0; signed int :0; unsigned short :0; signed long long :0; };
struct BFu0s_BFs0i_BFu0s_BFs0s { unsigned short :0; signed int :0; unsigned short :0; signed short :0; };
struct BFu0s_BFs0i_BFu0s_BFu0c { unsigned short :0; signed int :0; unsigned short :0; unsigned char :0; };
struct BFu0s_BFs0i_BFu0s_BFu0i { unsigned short :0; signed int :0; unsigned short :0; unsigned int :0; };
struct BFu0s_BFs0i_BFu0s_BFu0ll { unsigned short :0; signed int :0; unsigned short :0; unsigned long long :0; };
struct BFu0s_BFs0i_BFu0s_BFu0s { unsigned short :0; signed int :0; unsigned short :0; unsigned short :0; };
struct BFu0s_BFs0ll { unsigned short :0; signed long long :0; };
struct BFu0s_BFs0ll_BFs0c { unsigned short :0; signed long long :0; signed char :0; };
struct BFu0s_BFs0ll_BFs0c_BFs0c { unsigned short :0; signed long long :0; signed char :0; signed char :0; };
struct BFu0s_BFs0ll_BFs0c_BFs0i { unsigned short :0; signed long long :0; signed char :0; signed int :0; };
struct BFu0s_BFs0ll_BFs0c_BFs0ll { unsigned short :0; signed long long :0; signed char :0; signed long long :0; };
struct BFu0s_BFs0ll_BFs0c_BFs0s { unsigned short :0; signed long long :0; signed char :0; signed short :0; };
struct BFu0s_BFs0ll_BFs0c_BFu0c { unsigned short :0; signed long long :0; signed char :0; unsigned char :0; };
struct BFu0s_BFs0ll_BFs0c_BFu0i { unsigned short :0; signed long long :0; signed char :0; unsigned int :0; };
struct BFu0s_BFs0ll_BFs0c_BFu0ll { unsigned short :0; signed long long :0; signed char :0; unsigned long long :0; };
struct BFu0s_BFs0ll_BFs0c_BFu0s { unsigned short :0; signed long long :0; signed char :0; unsigned short :0; };
struct BFu0s_BFs0ll_BFs0i { unsigned short :0; signed long long :0; signed int :0; };
struct BFu0s_BFs0ll_BFs0i_BFs0c { unsigned short :0; signed long long :0; signed int :0; signed char :0; };
struct BFu0s_BFs0ll_BFs0i_BFs0i { unsigned short :0; signed long long :0; signed int :0; signed int :0; };
struct BFu0s_BFs0ll_BFs0i_BFs0ll { unsigned short :0; signed long long :0; signed int :0; signed long long :0; };
struct BFu0s_BFs0ll_BFs0i_BFs0s { unsigned short :0; signed long long :0; signed int :0; signed short :0; };
struct BFu0s_BFs0ll_BFs0i_BFu0c { unsigned short :0; signed long long :0; signed int :0; unsigned char :0; };
struct BFu0s_BFs0ll_BFs0i_BFu0i { unsigned short :0; signed long long :0; signed int :0; unsigned int :0; };
struct BFu0s_BFs0ll_BFs0i_BFu0ll { unsigned short :0; signed long long :0; signed int :0; unsigned long long :0; };
struct BFu0s_BFs0ll_BFs0i_BFu0s { unsigned short :0; signed long long :0; signed int :0; unsigned short :0; };
struct BFu0s_BFs0ll_BFs0ll { unsigned short :0; signed long long :0; signed long long :0; };
struct BFu0s_BFs0ll_BFs0ll_BFs0c { unsigned short :0; signed long long :0; signed long long :0; signed char :0; };
struct BFu0s_BFs0ll_BFs0ll_BFs0i { unsigned short :0; signed long long :0; signed long long :0; signed int :0; };
struct BFu0s_BFs0ll_BFs0ll_BFs0ll { unsigned short :0; signed long long :0; signed long long :0; signed long long :0; };
struct BFu0s_BFs0ll_BFs0ll_BFs0s { unsigned short :0; signed long long :0; signed long long :0; signed short :0; };
struct BFu0s_BFs0ll_BFs0ll_BFu0c { unsigned short :0; signed long long :0; signed long long :0; unsigned char :0; };
struct BFu0s_BFs0ll_BFs0ll_BFu0i { unsigned short :0; signed long long :0; signed long long :0; unsigned int :0; };
struct BFu0s_BFs0ll_BFs0ll_BFu0ll { unsigned short :0; signed long long :0; signed long long :0; unsigned long long :0; };
struct BFu0s_BFs0ll_BFs0ll_BFu0s { unsigned short :0; signed long long :0; signed long long :0; unsigned short :0; };
struct BFu0s_BFs0ll_BFs0s { unsigned short :0; signed long long :0; signed short :0; };
struct BFu0s_BFs0ll_BFs0s_BFs0c { unsigned short :0; signed long long :0; signed short :0; signed char :0; };
struct BFu0s_BFs0ll_BFs0s_BFs0i { unsigned short :0; signed long long :0; signed short :0; signed int :0; };
struct BFu0s_BFs0ll_BFs0s_BFs0ll { unsigned short :0; signed long long :0; signed short :0; signed long long :0; };
struct BFu0s_BFs0ll_BFs0s_BFs0s { unsigned short :0; signed long long :0; signed short :0; signed short :0; };
struct BFu0s_BFs0ll_BFs0s_BFu0c { unsigned short :0; signed long long :0; signed short :0; unsigned char :0; };
struct BFu0s_BFs0ll_BFs0s_BFu0i { unsigned short :0; signed long long :0; signed short :0; unsigned int :0; };
struct BFu0s_BFs0ll_BFs0s_BFu0ll { unsigned short :0; signed long long :0; signed short :0; unsigned long long :0; };
struct BFu0s_BFs0ll_BFs0s_BFu0s { unsigned short :0; signed long long :0; signed short :0; unsigned short :0; };
struct BFu0s_BFs0ll_BFu0c { unsigned short :0; signed long long :0; unsigned char :0; };
struct BFu0s_BFs0ll_BFu0c_BFs0c { unsigned short :0; signed long long :0; unsigned char :0; signed char :0; };
struct BFu0s_BFs0ll_BFu0c_BFs0i { unsigned short :0; signed long long :0; unsigned char :0; signed int :0; };
struct BFu0s_BFs0ll_BFu0c_BFs0ll { unsigned short :0; signed long long :0; unsigned char :0; signed long long :0; };
struct BFu0s_BFs0ll_BFu0c_BFs0s { unsigned short :0; signed long long :0; unsigned char :0; signed short :0; };
struct BFu0s_BFs0ll_BFu0c_BFu0c { unsigned short :0; signed long long :0; unsigned char :0; unsigned char :0; };
struct BFu0s_BFs0ll_BFu0c_BFu0i { unsigned short :0; signed long long :0; unsigned char :0; unsigned int :0; };
struct BFu0s_BFs0ll_BFu0c_BFu0ll { unsigned short :0; signed long long :0; unsigned char :0; unsigned long long :0; };
struct BFu0s_BFs0ll_BFu0c_BFu0s { unsigned short :0; signed long long :0; unsigned char :0; unsigned short :0; };
struct BFu0s_BFs0ll_BFu0i { unsigned short :0; signed long long :0; unsigned int :0; };
struct BFu0s_BFs0ll_BFu0i_BFs0c { unsigned short :0; signed long long :0; unsigned int :0; signed char :0; };
struct BFu0s_BFs0ll_BFu0i_BFs0i { unsigned short :0; signed long long :0; unsigned int :0; signed int :0; };
struct BFu0s_BFs0ll_BFu0i_BFs0ll { unsigned short :0; signed long long :0; unsigned int :0; signed long long :0; };
struct BFu0s_BFs0ll_BFu0i_BFs0s { unsigned short :0; signed long long :0; unsigned int :0; signed short :0; };
struct BFu0s_BFs0ll_BFu0i_BFu0c { unsigned short :0; signed long long :0; unsigned int :0; unsigned char :0; };
struct BFu0s_BFs0ll_BFu0i_BFu0i { unsigned short :0; signed long long :0; unsigned int :0; unsigned int :0; };
struct BFu0s_BFs0ll_BFu0i_BFu0ll { unsigned short :0; signed long long :0; unsigned int :0; unsigned long long :0; };
struct BFu0s_BFs0ll_BFu0i_BFu0s { unsigned short :0; signed long long :0; unsigned int :0; unsigned short :0; };
struct BFu0s_BFs0ll_BFu0ll { unsigned short :0; signed long long :0; unsigned long long :0; };
struct BFu0s_BFs0ll_BFu0ll_BFs0c { unsigned short :0; signed long long :0; unsigned long long :0; signed char :0; };
struct BFu0s_BFs0ll_BFu0ll_BFs0i { unsigned short :0; signed long long :0; unsigned long long :0; signed int :0; };
struct BFu0s_BFs0ll_BFu0ll_BFs0ll { unsigned short :0; signed long long :0; unsigned long long :0; signed long long :0; };
struct BFu0s_BFs0ll_BFu0ll_BFs0s { unsigned short :0; signed long long :0; unsigned long long :0; signed short :0; };
struct BFu0s_BFs0ll_BFu0ll_BFu0c { unsigned short :0; signed long long :0; unsigned long long :0; unsigned char :0; };
struct BFu0s_BFs0ll_BFu0ll_BFu0i { unsigned short :0; signed long long :0; unsigned long long :0; unsigned int :0; };
struct BFu0s_BFs0ll_BFu0ll_BFu0ll { unsigned short :0; signed long long :0; unsigned long long :0; unsigned long long :0; };
struct BFu0s_BFs0ll_BFu0ll_BFu0s { unsigned short :0; signed long long :0; unsigned long long :0; unsigned short :0; };
struct BFu0s_BFs0ll_BFu0s { unsigned short :0; signed long long :0; unsigned short :0; };
struct BFu0s_BFs0ll_BFu0s_BFs0c { unsigned short :0; signed long long :0; unsigned short :0; signed char :0; };
struct BFu0s_BFs0ll_BFu0s_BFs0i { unsigned short :0; signed long long :0; unsigned short :0; signed int :0; };
struct BFu0s_BFs0ll_BFu0s_BFs0ll { unsigned short :0; signed long long :0; unsigned short :0; signed long long :0; };
struct BFu0s_BFs0ll_BFu0s_BFs0s { unsigned short :0; signed long long :0; unsigned short :0; signed short :0; };
struct BFu0s_BFs0ll_BFu0s_BFu0c { unsigned short :0; signed long long :0; unsigned short :0; unsigned char :0; };
struct BFu0s_BFs0ll_BFu0s_BFu0i { unsigned short :0; signed long long :0; unsigned short :0; unsigned int :0; };
struct BFu0s_BFs0ll_BFu0s_BFu0ll { unsigned short :0; signed long long :0; unsigned short :0; unsigned long long :0; };
struct BFu0s_BFs0ll_BFu0s_BFu0s { unsigned short :0; signed long long :0; unsigned short :0; unsigned short :0; };
struct BFu0s_BFs0s { unsigned short :0; signed short :0; };
struct BFu0s_BFs0s_BFs0c { unsigned short :0; signed short :0; signed char :0; };
struct BFu0s_BFs0s_BFs0c_BFs0c { unsigned short :0; signed short :0; signed char :0; signed char :0; };
struct BFu0s_BFs0s_BFs0c_BFs0i { unsigned short :0; signed short :0; signed char :0; signed int :0; };
struct BFu0s_BFs0s_BFs0c_BFs0ll { unsigned short :0; signed short :0; signed char :0; signed long long :0; };
struct BFu0s_BFs0s_BFs0c_BFs0s { unsigned short :0; signed short :0; signed char :0; signed short :0; };
struct BFu0s_BFs0s_BFs0c_BFu0c { unsigned short :0; signed short :0; signed char :0; unsigned char :0; };
struct BFu0s_BFs0s_BFs0c_BFu0i { unsigned short :0; signed short :0; signed char :0; unsigned int :0; };
struct BFu0s_BFs0s_BFs0c_BFu0ll { unsigned short :0; signed short :0; signed char :0; unsigned long long :0; };
struct BFu0s_BFs0s_BFs0c_BFu0s { unsigned short :0; signed short :0; signed char :0; unsigned short :0; };
struct BFu0s_BFs0s_BFs0i { unsigned short :0; signed short :0; signed int :0; };
struct BFu0s_BFs0s_BFs0i_BFs0c { unsigned short :0; signed short :0; signed int :0; signed char :0; };
struct BFu0s_BFs0s_BFs0i_BFs0i { unsigned short :0; signed short :0; signed int :0; signed int :0; };
struct BFu0s_BFs0s_BFs0i_BFs0ll { unsigned short :0; signed short :0; signed int :0; signed long long :0; };
struct BFu0s_BFs0s_BFs0i_BFs0s { unsigned short :0; signed short :0; signed int :0; signed short :0; };
struct BFu0s_BFs0s_BFs0i_BFu0c { unsigned short :0; signed short :0; signed int :0; unsigned char :0; };
struct BFu0s_BFs0s_BFs0i_BFu0i { unsigned short :0; signed short :0; signed int :0; unsigned int :0; };
struct BFu0s_BFs0s_BFs0i_BFu0ll { unsigned short :0; signed short :0; signed int :0; unsigned long long :0; };
struct BFu0s_BFs0s_BFs0i_BFu0s { unsigned short :0; signed short :0; signed int :0; unsigned short :0; };
struct BFu0s_BFs0s_BFs0ll { unsigned short :0; signed short :0; signed long long :0; };
struct BFu0s_BFs0s_BFs0ll_BFs0c { unsigned short :0; signed short :0; signed long long :0; signed char :0; };
struct BFu0s_BFs0s_BFs0ll_BFs0i { unsigned short :0; signed short :0; signed long long :0; signed int :0; };
struct BFu0s_BFs0s_BFs0ll_BFs0ll { unsigned short :0; signed short :0; signed long long :0; signed long long :0; };
struct BFu0s_BFs0s_BFs0ll_BFs0s { unsigned short :0; signed short :0; signed long long :0; signed short :0; };
struct BFu0s_BFs0s_BFs0ll_BFu0c { unsigned short :0; signed short :0; signed long long :0; unsigned char :0; };
struct BFu0s_BFs0s_BFs0ll_BFu0i { unsigned short :0; signed short :0; signed long long :0; unsigned int :0; };
struct BFu0s_BFs0s_BFs0ll_BFu0ll { unsigned short :0; signed short :0; signed long long :0; unsigned long long :0; };
struct BFu0s_BFs0s_BFs0ll_BFu0s { unsigned short :0; signed short :0; signed long long :0; unsigned short :0; };
struct BFu0s_BFs0s_BFs0s { unsigned short :0; signed short :0; signed short :0; };
struct BFu0s_BFs0s_BFs0s_BFs0c { unsigned short :0; signed short :0; signed short :0; signed char :0; };
struct BFu0s_BFs0s_BFs0s_BFs0i { unsigned short :0; signed short :0; signed short :0; signed int :0; };
struct BFu0s_BFs0s_BFs0s_BFs0ll { unsigned short :0; signed short :0; signed short :0; signed long long :0; };
struct BFu0s_BFs0s_BFs0s_BFs0s { unsigned short :0; signed short :0; signed short :0; signed short :0; };
struct BFu0s_BFs0s_BFs0s_BFu0c { unsigned short :0; signed short :0; signed short :0; unsigned char :0; };
struct BFu0s_BFs0s_BFs0s_BFu0i { unsigned short :0; signed short :0; signed short :0; unsigned int :0; };
struct BFu0s_BFs0s_BFs0s_BFu0ll { unsigned short :0; signed short :0; signed short :0; unsigned long long :0; };
struct BFu0s_BFs0s_BFs0s_BFu0s { unsigned short :0; signed short :0; signed short :0; unsigned short :0; };
struct BFu0s_BFs0s_BFu0c { unsigned short :0; signed short :0; unsigned char :0; };
struct BFu0s_BFs0s_BFu0c_BFs0c { unsigned short :0; signed short :0; unsigned char :0; signed char :0; };
struct BFu0s_BFs0s_BFu0c_BFs0i { unsigned short :0; signed short :0; unsigned char :0; signed int :0; };
struct BFu0s_BFs0s_BFu0c_BFs0ll { unsigned short :0; signed short :0; unsigned char :0; signed long long :0; };
struct BFu0s_BFs0s_BFu0c_BFs0s { unsigned short :0; signed short :0; unsigned char :0; signed short :0; };
struct BFu0s_BFs0s_BFu0c_BFu0c { unsigned short :0; signed short :0; unsigned char :0; unsigned char :0; };
struct BFu0s_BFs0s_BFu0c_BFu0i { unsigned short :0; signed short :0; unsigned char :0; unsigned int :0; };
struct BFu0s_BFs0s_BFu0c_BFu0ll { unsigned short :0; signed short :0; unsigned char :0; unsigned long long :0; };
struct BFu0s_BFs0s_BFu0c_BFu0s { unsigned short :0; signed short :0; unsigned char :0; unsigned short :0; };
struct BFu0s_BFs0s_BFu0i { unsigned short :0; signed short :0; unsigned int :0; };
struct BFu0s_BFs0s_BFu0i_BFs0c { unsigned short :0; signed short :0; unsigned int :0; signed char :0; };
struct BFu0s_BFs0s_BFu0i_BFs0i { unsigned short :0; signed short :0; unsigned int :0; signed int :0; };
struct BFu0s_BFs0s_BFu0i_BFs0ll { unsigned short :0; signed short :0; unsigned int :0; signed long long :0; };
struct BFu0s_BFs0s_BFu0i_BFs0s { unsigned short :0; signed short :0; unsigned int :0; signed short :0; };
struct BFu0s_BFs0s_BFu0i_BFu0c { unsigned short :0; signed short :0; unsigned int :0; unsigned char :0; };
struct BFu0s_BFs0s_BFu0i_BFu0i { unsigned short :0; signed short :0; unsigned int :0; unsigned int :0; };
struct BFu0s_BFs0s_BFu0i_BFu0ll { unsigned short :0; signed short :0; unsigned int :0; unsigned long long :0; };
struct BFu0s_BFs0s_BFu0i_BFu0s { unsigned short :0; signed short :0; unsigned int :0; unsigned short :0; };
struct BFu0s_BFs0s_BFu0ll { unsigned short :0; signed short :0; unsigned long long :0; };
struct BFu0s_BFs0s_BFu0ll_BFs0c { unsigned short :0; signed short :0; unsigned long long :0; signed char :0; };
struct BFu0s_BFs0s_BFu0ll_BFs0i { unsigned short :0; signed short :0; unsigned long long :0; signed int :0; };
struct BFu0s_BFs0s_BFu0ll_BFs0ll { unsigned short :0; signed short :0; unsigned long long :0; signed long long :0; };
struct BFu0s_BFs0s_BFu0ll_BFs0s { unsigned short :0; signed short :0; unsigned long long :0; signed short :0; };
struct BFu0s_BFs0s_BFu0ll_BFu0c { unsigned short :0; signed short :0; unsigned long long :0; unsigned char :0; };
struct BFu0s_BFs0s_BFu0ll_BFu0i { unsigned short :0; signed short :0; unsigned long long :0; unsigned int :0; };
struct BFu0s_BFs0s_BFu0ll_BFu0ll { unsigned short :0; signed short :0; unsigned long long :0; unsigned long long :0; };
struct BFu0s_BFs0s_BFu0ll_BFu0s { unsigned short :0; signed short :0; unsigned long long :0; unsigned short :0; };
struct BFu0s_BFs0s_BFu0s { unsigned short :0; signed short :0; unsigned short :0; };
struct BFu0s_BFs0s_BFu0s_BFs0c { unsigned short :0; signed short :0; unsigned short :0; signed char :0; };
struct BFu0s_BFs0s_BFu0s_BFs0i { unsigned short :0; signed short :0; unsigned short :0; signed int :0; };
struct BFu0s_BFs0s_BFu0s_BFs0ll { unsigned short :0; signed short :0; unsigned short :0; signed long long :0; };
struct BFu0s_BFs0s_BFu0s_BFs0s { unsigned short :0; signed short :0; unsigned short :0; signed short :0; };
struct BFu0s_BFs0s_BFu0s_BFu0c { unsigned short :0; signed short :0; unsigned short :0; unsigned char :0; };
struct BFu0s_BFs0s_BFu0s_BFu0i { unsigned short :0; signed short :0; unsigned short :0; unsigned int :0; };
struct BFu0s_BFs0s_BFu0s_BFu0ll { unsigned short :0; signed short :0; unsigned short :0; unsigned long long :0; };
struct BFu0s_BFs0s_BFu0s_BFu0s { unsigned short :0; signed short :0; unsigned short :0; unsigned short :0; };
struct BFu0s_BFu0c { unsigned short :0; unsigned char :0; };
struct BFu0s_BFu0c_BFs0c { unsigned short :0; unsigned char :0; signed char :0; };
struct BFu0s_BFu0c_BFs0c_BFs0c { unsigned short :0; unsigned char :0; signed char :0; signed char :0; };
struct BFu0s_BFu0c_BFs0c_BFs0i { unsigned short :0; unsigned char :0; signed char :0; signed int :0; };
struct BFu0s_BFu0c_BFs0c_BFs0ll { unsigned short :0; unsigned char :0; signed char :0; signed long long :0; };
struct BFu0s_BFu0c_BFs0c_BFs0s { unsigned short :0; unsigned char :0; signed char :0; signed short :0; };
struct BFu0s_BFu0c_BFs0c_BFu0c { unsigned short :0; unsigned char :0; signed char :0; unsigned char :0; };
struct BFu0s_BFu0c_BFs0c_BFu0i { unsigned short :0; unsigned char :0; signed char :0; unsigned int :0; };
struct BFu0s_BFu0c_BFs0c_BFu0ll { unsigned short :0; unsigned char :0; signed char :0; unsigned long long :0; };
struct BFu0s_BFu0c_BFs0c_BFu0s { unsigned short :0; unsigned char :0; signed char :0; unsigned short :0; };
struct BFu0s_BFu0c_BFs0i { unsigned short :0; unsigned char :0; signed int :0; };
struct BFu0s_BFu0c_BFs0i_BFs0c { unsigned short :0; unsigned char :0; signed int :0; signed char :0; };
struct BFu0s_BFu0c_BFs0i_BFs0i { unsigned short :0; unsigned char :0; signed int :0; signed int :0; };
struct BFu0s_BFu0c_BFs0i_BFs0ll { unsigned short :0; unsigned char :0; signed int :0; signed long long :0; };
struct BFu0s_BFu0c_BFs0i_BFs0s { unsigned short :0; unsigned char :0; signed int :0; signed short :0; };
struct BFu0s_BFu0c_BFs0i_BFu0c { unsigned short :0; unsigned char :0; signed int :0; unsigned char :0; };
struct BFu0s_BFu0c_BFs0i_BFu0i { unsigned short :0; unsigned char :0; signed int :0; unsigned int :0; };
struct BFu0s_BFu0c_BFs0i_BFu0ll { unsigned short :0; unsigned char :0; signed int :0; unsigned long long :0; };
struct BFu0s_BFu0c_BFs0i_BFu0s { unsigned short :0; unsigned char :0; signed int :0; unsigned short :0; };
struct BFu0s_BFu0c_BFs0ll { unsigned short :0; unsigned char :0; signed long long :0; };
struct BFu0s_BFu0c_BFs0ll_BFs0c { unsigned short :0; unsigned char :0; signed long long :0; signed char :0; };
struct BFu0s_BFu0c_BFs0ll_BFs0i { unsigned short :0; unsigned char :0; signed long long :0; signed int :0; };
struct BFu0s_BFu0c_BFs0ll_BFs0ll { unsigned short :0; unsigned char :0; signed long long :0; signed long long :0; };
struct BFu0s_BFu0c_BFs0ll_BFs0s { unsigned short :0; unsigned char :0; signed long long :0; signed short :0; };
struct BFu0s_BFu0c_BFs0ll_BFu0c { unsigned short :0; unsigned char :0; signed long long :0; unsigned char :0; };
struct BFu0s_BFu0c_BFs0ll_BFu0i { unsigned short :0; unsigned char :0; signed long long :0; unsigned int :0; };
struct BFu0s_BFu0c_BFs0ll_BFu0ll { unsigned short :0; unsigned char :0; signed long long :0; unsigned long long :0; };
struct BFu0s_BFu0c_BFs0ll_BFu0s { unsigned short :0; unsigned char :0; signed long long :0; unsigned short :0; };
struct BFu0s_BFu0c_BFs0s { unsigned short :0; unsigned char :0; signed short :0; };
struct BFu0s_BFu0c_BFs0s_BFs0c { unsigned short :0; unsigned char :0; signed short :0; signed char :0; };
struct BFu0s_BFu0c_BFs0s_BFs0i { unsigned short :0; unsigned char :0; signed short :0; signed int :0; };
struct BFu0s_BFu0c_BFs0s_BFs0ll { unsigned short :0; unsigned char :0; signed short :0; signed long long :0; };
struct BFu0s_BFu0c_BFs0s_BFs0s { unsigned short :0; unsigned char :0; signed short :0; signed short :0; };
struct BFu0s_BFu0c_BFs0s_BFu0c { unsigned short :0; unsigned char :0; signed short :0; unsigned char :0; };
struct BFu0s_BFu0c_BFs0s_BFu0i { unsigned short :0; unsigned char :0; signed short :0; unsigned int :0; };
struct BFu0s_BFu0c_BFs0s_BFu0ll { unsigned short :0; unsigned char :0; signed short :0; unsigned long long :0; };
struct BFu0s_BFu0c_BFs0s_BFu0s { unsigned short :0; unsigned char :0; signed short :0; unsigned short :0; };
struct BFu0s_BFu0c_BFu0c { unsigned short :0; unsigned char :0; unsigned char :0; };
struct BFu0s_BFu0c_BFu0c_BFs0c { unsigned short :0; unsigned char :0; unsigned char :0; signed char :0; };
struct BFu0s_BFu0c_BFu0c_BFs0i { unsigned short :0; unsigned char :0; unsigned char :0; signed int :0; };
struct BFu0s_BFu0c_BFu0c_BFs0ll { unsigned short :0; unsigned char :0; unsigned char :0; signed long long :0; };
struct BFu0s_BFu0c_BFu0c_BFs0s { unsigned short :0; unsigned char :0; unsigned char :0; signed short :0; };
struct BFu0s_BFu0c_BFu0c_BFu0c { unsigned short :0; unsigned char :0; unsigned char :0; unsigned char :0; };
struct BFu0s_BFu0c_BFu0c_BFu0i { unsigned short :0; unsigned char :0; unsigned char :0; unsigned int :0; };
struct BFu0s_BFu0c_BFu0c_BFu0ll { unsigned short :0; unsigned char :0; unsigned char :0; unsigned long long :0; };
struct BFu0s_BFu0c_BFu0c_BFu0s { unsigned short :0; unsigned char :0; unsigned char :0; unsigned short :0; };
struct BFu0s_BFu0c_BFu0i { unsigned short :0; unsigned char :0; unsigned int :0; };
struct BFu0s_BFu0c_BFu0i_BFs0c { unsigned short :0; unsigned char :0; unsigned int :0; signed char :0; };
struct BFu0s_BFu0c_BFu0i_BFs0i { unsigned short :0; unsigned char :0; unsigned int :0; signed int :0; };
struct BFu0s_BFu0c_BFu0i_BFs0ll { unsigned short :0; unsigned char :0; unsigned int :0; signed long long :0; };
struct BFu0s_BFu0c_BFu0i_BFs0s { unsigned short :0; unsigned char :0; unsigned int :0; signed short :0; };
struct BFu0s_BFu0c_BFu0i_BFu0c { unsigned short :0; unsigned char :0; unsigned int :0; unsigned char :0; };
struct BFu0s_BFu0c_BFu0i_BFu0i { unsigned short :0; unsigned char :0; unsigned int :0; unsigned int :0; };
struct BFu0s_BFu0c_BFu0i_BFu0ll { unsigned short :0; unsigned char :0; unsigned int :0; unsigned long long :0; };
struct BFu0s_BFu0c_BFu0i_BFu0s { unsigned short :0; unsigned char :0; unsigned int :0; unsigned short :0; };
struct BFu0s_BFu0c_BFu0ll { unsigned short :0; unsigned char :0; unsigned long long :0; };
struct BFu0s_BFu0c_BFu0ll_BFs0c { unsigned short :0; unsigned char :0; unsigned long long :0; signed char :0; };
struct BFu0s_BFu0c_BFu0ll_BFs0i { unsigned short :0; unsigned char :0; unsigned long long :0; signed int :0; };
struct BFu0s_BFu0c_BFu0ll_BFs0ll { unsigned short :0; unsigned char :0; unsigned long long :0; signed long long :0; };
struct BFu0s_BFu0c_BFu0ll_BFs0s { unsigned short :0; unsigned char :0; unsigned long long :0; signed short :0; };
struct BFu0s_BFu0c_BFu0ll_BFu0c { unsigned short :0; unsigned char :0; unsigned long long :0; unsigned char :0; };
struct BFu0s_BFu0c_BFu0ll_BFu0i { unsigned short :0; unsigned char :0; unsigned long long :0; unsigned int :0; };
struct BFu0s_BFu0c_BFu0ll_BFu0ll { unsigned short :0; unsigned char :0; unsigned long long :0; unsigned long long :0; };
struct BFu0s_BFu0c_BFu0ll_BFu0s { unsigned short :0; unsigned char :0; unsigned long long :0; unsigned short :0; };
struct BFu0s_BFu0c_BFu0s { unsigned short :0; unsigned char :0; unsigned short :0; };
struct BFu0s_BFu0c_BFu0s_BFs0c { unsigned short :0; unsigned char :0; unsigned short :0; signed char :0; };
struct BFu0s_BFu0c_BFu0s_BFs0i { unsigned short :0; unsigned char :0; unsigned short :0; signed int :0; };
struct BFu0s_BFu0c_BFu0s_BFs0ll { unsigned short :0; unsigned char :0; unsigned short :0; signed long long :0; };
struct BFu0s_BFu0c_BFu0s_BFs0s { unsigned short :0; unsigned char :0; unsigned short :0; signed short :0; };
struct BFu0s_BFu0c_BFu0s_BFu0c { unsigned short :0; unsigned char :0; unsigned short :0; unsigned char :0; };
struct BFu0s_BFu0c_BFu0s_BFu0i { unsigned short :0; unsigned char :0; unsigned short :0; unsigned int :0; };
struct BFu0s_BFu0c_BFu0s_BFu0ll { unsigned short :0; unsigned char :0; unsigned short :0; unsigned long long :0; };
struct BFu0s_BFu0c_BFu0s_BFu0s { unsigned short :0; unsigned char :0; unsigned short :0; unsigned short :0; };
struct BFu0s_BFu0c_BFu15i { unsigned short :0; unsigned char :0; unsigned int v1:15; };
struct BFu0s_BFu0c_BFu15ll { unsigned short :0; unsigned char :0; unsigned long long v1:15; };
struct BFu0s_BFu0c_BFu15s { unsigned short :0; unsigned char :0; unsigned short v1:15; };
struct BFu0s_BFu0c_BFu16i { unsigned short :0; unsigned char :0; unsigned int v1:16; };
struct BFu0s_BFu0c_BFu16ll { unsigned short :0; unsigned char :0; unsigned long long v1:16; };
struct BFu0s_BFu0c_BFu16s { unsigned short :0; unsigned char :0; unsigned short v1:16; };
struct BFu0s_BFu0c_BFu17i { unsigned short :0; unsigned char :0; unsigned int v1:17; };
struct BFu0s_BFu0c_BFu17ll { unsigned short :0; unsigned char :0; unsigned long long v1:17; };
struct BFu0s_BFu0c_BFu1c { unsigned short :0; unsigned char :0; unsigned char v1:1; };
struct BFu0s_BFu0c_BFu1i { unsigned short :0; unsigned char :0; unsigned int v1:1; };
struct BFu0s_BFu0c_BFu1ll { unsigned short :0; unsigned char :0; unsigned long long v1:1; };
struct BFu0s_BFu0c_BFu1s { unsigned short :0; unsigned char :0; unsigned short v1:1; };
struct BFu0s_BFu0c_BFu31i { unsigned short :0; unsigned char :0; unsigned int v1:31; };
struct BFu0s_BFu0c_BFu31ll { unsigned short :0; unsigned char :0; unsigned long long v1:31; };
struct BFu0s_BFu0c_BFu32i { unsigned short :0; unsigned char :0; unsigned int v1:32; };
struct BFu0s_BFu0c_BFu32ll { unsigned short :0; unsigned char :0; unsigned long long v1:32; };
struct BFu0s_BFu0c_BFu33 { unsigned short :0; unsigned char :0; unsigned long long v1:33; };
struct BFu0s_BFu0c_BFu7c { unsigned short :0; unsigned char :0; unsigned char v1:7; };
struct BFu0s_BFu0c_BFu7i { unsigned short :0; unsigned char :0; unsigned int v1:7; };
struct BFu0s_BFu0c_BFu7ll { unsigned short :0; unsigned char :0; unsigned long long v1:7; };
struct BFu0s_BFu0c_BFu7s { unsigned short :0; unsigned char :0; unsigned short v1:7; };
struct BFu0s_BFu0c_BFu8c { unsigned short :0; unsigned char :0; unsigned char v1:8; };
struct BFu0s_BFu0c_BFu8i { unsigned short :0; unsigned char :0; unsigned int v1:8; };
struct BFu0s_BFu0c_BFu8ll { unsigned short :0; unsigned char :0; unsigned long long v1:8; };
struct BFu0s_BFu0c_BFu8s { unsigned short :0; unsigned char :0; unsigned short v1:8; };
struct BFu0s_BFu0c_BFu9i { unsigned short :0; unsigned char :0; unsigned int v1:9; };
struct BFu0s_BFu0c_BFu9ll { unsigned short :0; unsigned char :0; unsigned long long v1:9; };
struct BFu0s_BFu0c_BFu9s { unsigned short :0; unsigned char :0; unsigned short v1:9; };
struct BFu0s_BFu0c_C { unsigned short :0; unsigned char :0; char v1; };
struct BFu0s_BFu0c_D { unsigned short :0; unsigned char :0; double v1; };
struct BFu0s_BFu0c_F { unsigned short :0; unsigned char :0; float v1; };
struct BFu0s_BFu0c_I { unsigned short :0; unsigned char :0; int v1; };
struct BFu0s_BFu0c_Ip { unsigned short :0; unsigned char :0; int * v1; };
struct BFu0s_BFu0c_L { unsigned short :0; unsigned char :0; long long v1; };
struct BFu0s_BFu0c_S { unsigned short :0; unsigned char :0; short v1; };
struct BFu0s_BFu0c_Uc { unsigned short :0; unsigned char :0; unsigned char v1; };
struct BFu0s_BFu0c_Ui { unsigned short :0; unsigned char :0; unsigned int v1; };
struct BFu0s_BFu0c_Ul { unsigned short :0; unsigned char :0; unsigned long long v1; };
struct BFu0s_BFu0c_Us { unsigned short :0; unsigned char :0; unsigned short v1; };
struct BFu0s_BFu0c_Vp { unsigned short :0; unsigned char :0; void * v1; };
struct BFu0s_BFu0i { unsigned short :0; unsigned int :0; };
struct BFu0s_BFu0i_BFs0c { unsigned short :0; unsigned int :0; signed char :0; };
struct BFu0s_BFu0i_BFs0c_BFs0c { unsigned short :0; unsigned int :0; signed char :0; signed char :0; };
struct BFu0s_BFu0i_BFs0c_BFs0i { unsigned short :0; unsigned int :0; signed char :0; signed int :0; };
struct BFu0s_BFu0i_BFs0c_BFs0ll { unsigned short :0; unsigned int :0; signed char :0; signed long long :0; };
struct BFu0s_BFu0i_BFs0c_BFs0s { unsigned short :0; unsigned int :0; signed char :0; signed short :0; };
struct BFu0s_BFu0i_BFs0c_BFu0c { unsigned short :0; unsigned int :0; signed char :0; unsigned char :0; };
struct BFu0s_BFu0i_BFs0c_BFu0i { unsigned short :0; unsigned int :0; signed char :0; unsigned int :0; };
struct BFu0s_BFu0i_BFs0c_BFu0ll { unsigned short :0; unsigned int :0; signed char :0; unsigned long long :0; };
struct BFu0s_BFu0i_BFs0c_BFu0s { unsigned short :0; unsigned int :0; signed char :0; unsigned short :0; };
struct BFu0s_BFu0i_BFs0i { unsigned short :0; unsigned int :0; signed int :0; };
struct BFu0s_BFu0i_BFs0i_BFs0c { unsigned short :0; unsigned int :0; signed int :0; signed char :0; };
struct BFu0s_BFu0i_BFs0i_BFs0i { unsigned short :0; unsigned int :0; signed int :0; signed int :0; };
struct BFu0s_BFu0i_BFs0i_BFs0ll { unsigned short :0; unsigned int :0; signed int :0; signed long long :0; };
struct BFu0s_BFu0i_BFs0i_BFs0s { unsigned short :0; unsigned int :0; signed int :0; signed short :0; };
struct BFu0s_BFu0i_BFs0i_BFu0c { unsigned short :0; unsigned int :0; signed int :0; unsigned char :0; };
struct BFu0s_BFu0i_BFs0i_BFu0i { unsigned short :0; unsigned int :0; signed int :0; unsigned int :0; };
struct BFu0s_BFu0i_BFs0i_BFu0ll { unsigned short :0; unsigned int :0; signed int :0; unsigned long long :0; };
struct BFu0s_BFu0i_BFs0i_BFu0s { unsigned short :0; unsigned int :0; signed int :0; unsigned short :0; };
struct BFu0s_BFu0i_BFs0ll { unsigned short :0; unsigned int :0; signed long long :0; };
struct BFu0s_BFu0i_BFs0ll_BFs0c { unsigned short :0; unsigned int :0; signed long long :0; signed char :0; };
struct BFu0s_BFu0i_BFs0ll_BFs0i { unsigned short :0; unsigned int :0; signed long long :0; signed int :0; };
struct BFu0s_BFu0i_BFs0ll_BFs0ll { unsigned short :0; unsigned int :0; signed long long :0; signed long long :0; };
struct BFu0s_BFu0i_BFs0ll_BFs0s { unsigned short :0; unsigned int :0; signed long long :0; signed short :0; };
struct BFu0s_BFu0i_BFs0ll_BFu0c { unsigned short :0; unsigned int :0; signed long long :0; unsigned char :0; };
struct BFu0s_BFu0i_BFs0ll_BFu0i { unsigned short :0; unsigned int :0; signed long long :0; unsigned int :0; };
struct BFu0s_BFu0i_BFs0ll_BFu0ll { unsigned short :0; unsigned int :0; signed long long :0; unsigned long long :0; };
struct BFu0s_BFu0i_BFs0ll_BFu0s { unsigned short :0; unsigned int :0; signed long long :0; unsigned short :0; };
struct BFu0s_BFu0i_BFs0s { unsigned short :0; unsigned int :0; signed short :0; };
struct BFu0s_BFu0i_BFs0s_BFs0c { unsigned short :0; unsigned int :0; signed short :0; signed char :0; };
struct BFu0s_BFu0i_BFs0s_BFs0i { unsigned short :0; unsigned int :0; signed short :0; signed int :0; };
struct BFu0s_BFu0i_BFs0s_BFs0ll { unsigned short :0; unsigned int :0; signed short :0; signed long long :0; };
struct BFu0s_BFu0i_BFs0s_BFs0s { unsigned short :0; unsigned int :0; signed short :0; signed short :0; };
struct BFu0s_BFu0i_BFs0s_BFu0c { unsigned short :0; unsigned int :0; signed short :0; unsigned char :0; };
struct BFu0s_BFu0i_BFs0s_BFu0i { unsigned short :0; unsigned int :0; signed short :0; unsigned int :0; };
struct BFu0s_BFu0i_BFs0s_BFu0ll { unsigned short :0; unsigned int :0; signed short :0; unsigned long long :0; };
struct BFu0s_BFu0i_BFs0s_BFu0s { unsigned short :0; unsigned int :0; signed short :0; unsigned short :0; };
struct BFu0s_BFu0i_BFu0c { unsigned short :0; unsigned int :0; unsigned char :0; };
struct BFu0s_BFu0i_BFu0c_BFs0c { unsigned short :0; unsigned int :0; unsigned char :0; signed char :0; };
struct BFu0s_BFu0i_BFu0c_BFs0i { unsigned short :0; unsigned int :0; unsigned char :0; signed int :0; };
struct BFu0s_BFu0i_BFu0c_BFs0ll { unsigned short :0; unsigned int :0; unsigned char :0; signed long long :0; };
struct BFu0s_BFu0i_BFu0c_BFs0s { unsigned short :0; unsigned int :0; unsigned char :0; signed short :0; };
struct BFu0s_BFu0i_BFu0c_BFu0c { unsigned short :0; unsigned int :0; unsigned char :0; unsigned char :0; };
struct BFu0s_BFu0i_BFu0c_BFu0i { unsigned short :0; unsigned int :0; unsigned char :0; unsigned int :0; };
struct BFu0s_BFu0i_BFu0c_BFu0ll { unsigned short :0; unsigned int :0; unsigned char :0; unsigned long long :0; };
struct BFu0s_BFu0i_BFu0c_BFu0s { unsigned short :0; unsigned int :0; unsigned char :0; unsigned short :0; };
struct BFu0s_BFu0i_BFu0i { unsigned short :0; unsigned int :0; unsigned int :0; };
struct BFu0s_BFu0i_BFu0i_BFs0c { unsigned short :0; unsigned int :0; unsigned int :0; signed char :0; };
struct BFu0s_BFu0i_BFu0i_BFs0i { unsigned short :0; unsigned int :0; unsigned int :0; signed int :0; };
struct BFu0s_BFu0i_BFu0i_BFs0ll { unsigned short :0; unsigned int :0; unsigned int :0; signed long long :0; };
struct BFu0s_BFu0i_BFu0i_BFs0s { unsigned short :0; unsigned int :0; unsigned int :0; signed short :0; };
struct BFu0s_BFu0i_BFu0i_BFu0c { unsigned short :0; unsigned int :0; unsigned int :0; unsigned char :0; };
struct BFu0s_BFu0i_BFu0i_BFu0i { unsigned short :0; unsigned int :0; unsigned int :0; unsigned int :0; };
struct BFu0s_BFu0i_BFu0i_BFu0ll { unsigned short :0; unsigned int :0; unsigned int :0; unsigned long long :0; };
struct BFu0s_BFu0i_BFu0i_BFu0s { unsigned short :0; unsigned int :0; unsigned int :0; unsigned short :0; };
struct BFu0s_BFu0i_BFu0ll { unsigned short :0; unsigned int :0; unsigned long long :0; };
struct BFu0s_BFu0i_BFu0ll_BFs0c { unsigned short :0; unsigned int :0; unsigned long long :0; signed char :0; };
struct BFu0s_BFu0i_BFu0ll_BFs0i { unsigned short :0; unsigned int :0; unsigned long long :0; signed int :0; };
struct BFu0s_BFu0i_BFu0ll_BFs0ll { unsigned short :0; unsigned int :0; unsigned long long :0; signed long long :0; };
struct BFu0s_BFu0i_BFu0ll_BFs0s { unsigned short :0; unsigned int :0; unsigned long long :0; signed short :0; };
struct BFu0s_BFu0i_BFu0ll_BFu0c { unsigned short :0; unsigned int :0; unsigned long long :0; unsigned char :0; };
struct BFu0s_BFu0i_BFu0ll_BFu0i { unsigned short :0; unsigned int :0; unsigned long long :0; unsigned int :0; };
struct BFu0s_BFu0i_BFu0ll_BFu0ll { unsigned short :0; unsigned int :0; unsigned long long :0; unsigned long long :0; };
struct BFu0s_BFu0i_BFu0ll_BFu0s { unsigned short :0; unsigned int :0; unsigned long long :0; unsigned short :0; };
struct BFu0s_BFu0i_BFu0s { unsigned short :0; unsigned int :0; unsigned short :0; };
struct BFu0s_BFu0i_BFu0s_BFs0c { unsigned short :0; unsigned int :0; unsigned short :0; signed char :0; };
struct BFu0s_BFu0i_BFu0s_BFs0i { unsigned short :0; unsigned int :0; unsigned short :0; signed int :0; };
struct BFu0s_BFu0i_BFu0s_BFs0ll { unsigned short :0; unsigned int :0; unsigned short :0; signed long long :0; };
struct BFu0s_BFu0i_BFu0s_BFs0s { unsigned short :0; unsigned int :0; unsigned short :0; signed short :0; };
struct BFu0s_BFu0i_BFu0s_BFu0c { unsigned short :0; unsigned int :0; unsigned short :0; unsigned char :0; };
struct BFu0s_BFu0i_BFu0s_BFu0i { unsigned short :0; unsigned int :0; unsigned short :0; unsigned int :0; };
struct BFu0s_BFu0i_BFu0s_BFu0ll { unsigned short :0; unsigned int :0; unsigned short :0; unsigned long long :0; };
struct BFu0s_BFu0i_BFu0s_BFu0s { unsigned short :0; unsigned int :0; unsigned short :0; unsigned short :0; };
struct BFu0s_BFu0i_BFu15i { unsigned short :0; unsigned int :0; unsigned int v1:15; };
struct BFu0s_BFu0i_BFu15ll { unsigned short :0; unsigned int :0; unsigned long long v1:15; };
struct BFu0s_BFu0i_BFu15s { unsigned short :0; unsigned int :0; unsigned short v1:15; };
struct BFu0s_BFu0i_BFu16i { unsigned short :0; unsigned int :0; unsigned int v1:16; };
struct BFu0s_BFu0i_BFu16ll { unsigned short :0; unsigned int :0; unsigned long long v1:16; };
struct BFu0s_BFu0i_BFu16s { unsigned short :0; unsigned int :0; unsigned short v1:16; };
struct BFu0s_BFu0i_BFu17i { unsigned short :0; unsigned int :0; unsigned int v1:17; };
struct BFu0s_BFu0i_BFu17ll { unsigned short :0; unsigned int :0; unsigned long long v1:17; };
struct BFu0s_BFu0i_BFu1c { unsigned short :0; unsigned int :0; unsigned char v1:1; };
struct BFu0s_BFu0i_BFu1i { unsigned short :0; unsigned int :0; unsigned int v1:1; };
struct BFu0s_BFu0i_BFu1ll { unsigned short :0; unsigned int :0; unsigned long long v1:1; };
struct BFu0s_BFu0i_BFu1s { unsigned short :0; unsigned int :0; unsigned short v1:1; };
struct BFu0s_BFu0i_BFu31i { unsigned short :0; unsigned int :0; unsigned int v1:31; };
struct BFu0s_BFu0i_BFu31ll { unsigned short :0; unsigned int :0; unsigned long long v1:31; };
struct BFu0s_BFu0i_BFu32i { unsigned short :0; unsigned int :0; unsigned int v1:32; };
struct BFu0s_BFu0i_BFu32ll { unsigned short :0; unsigned int :0; unsigned long long v1:32; };
struct BFu0s_BFu0i_BFu33 { unsigned short :0; unsigned int :0; unsigned long long v1:33; };
struct BFu0s_BFu0i_BFu7c { unsigned short :0; unsigned int :0; unsigned char v1:7; };
struct BFu0s_BFu0i_BFu7i { unsigned short :0; unsigned int :0; unsigned int v1:7; };
struct BFu0s_BFu0i_BFu7ll { unsigned short :0; unsigned int :0; unsigned long long v1:7; };
struct BFu0s_BFu0i_BFu7s { unsigned short :0; unsigned int :0; unsigned short v1:7; };
struct BFu0s_BFu0i_BFu8c { unsigned short :0; unsigned int :0; unsigned char v1:8; };
struct BFu0s_BFu0i_BFu8i { unsigned short :0; unsigned int :0; unsigned int v1:8; };
struct BFu0s_BFu0i_BFu8ll { unsigned short :0; unsigned int :0; unsigned long long v1:8; };
struct BFu0s_BFu0i_BFu8s { unsigned short :0; unsigned int :0; unsigned short v1:8; };
struct BFu0s_BFu0i_BFu9i { unsigned short :0; unsigned int :0; unsigned int v1:9; };
struct BFu0s_BFu0i_BFu9ll { unsigned short :0; unsigned int :0; unsigned long long v1:9; };
struct BFu0s_BFu0i_BFu9s { unsigned short :0; unsigned int :0; unsigned short v1:9; };
struct BFu0s_BFu0i_C { unsigned short :0; unsigned int :0; char v1; };
struct BFu0s_BFu0i_D { unsigned short :0; unsigned int :0; double v1; };
struct BFu0s_BFu0i_F { unsigned short :0; unsigned int :0; float v1; };
struct BFu0s_BFu0i_I { unsigned short :0; unsigned int :0; int v1; };
struct BFu0s_BFu0i_Ip { unsigned short :0; unsigned int :0; int * v1; };
struct BFu0s_BFu0i_L { unsigned short :0; unsigned int :0; long long v1; };
struct BFu0s_BFu0i_S { unsigned short :0; unsigned int :0; short v1; };
struct BFu0s_BFu0i_Uc { unsigned short :0; unsigned int :0; unsigned char v1; };
struct BFu0s_BFu0i_Ui { unsigned short :0; unsigned int :0; unsigned int v1; };
struct BFu0s_BFu0i_Ul { unsigned short :0; unsigned int :0; unsigned long long v1; };
struct BFu0s_BFu0i_Us { unsigned short :0; unsigned int :0; unsigned short v1; };
struct BFu0s_BFu0i_Vp { unsigned short :0; unsigned int :0; void * v1; };
struct BFu0s_BFu0ll { unsigned short :0; unsigned long long :0; };
struct BFu0s_BFu0ll_BFs0c { unsigned short :0; unsigned long long :0; signed char :0; };
struct BFu0s_BFu0ll_BFs0c_BFs0c { unsigned short :0; unsigned long long :0; signed char :0; signed char :0; };
struct BFu0s_BFu0ll_BFs0c_BFs0i { unsigned short :0; unsigned long long :0; signed char :0; signed int :0; };
struct BFu0s_BFu0ll_BFs0c_BFs0ll { unsigned short :0; unsigned long long :0; signed char :0; signed long long :0; };
struct BFu0s_BFu0ll_BFs0c_BFs0s { unsigned short :0; unsigned long long :0; signed char :0; signed short :0; };
struct BFu0s_BFu0ll_BFs0c_BFu0c { unsigned short :0; unsigned long long :0; signed char :0; unsigned char :0; };
struct BFu0s_BFu0ll_BFs0c_BFu0i { unsigned short :0; unsigned long long :0; signed char :0; unsigned int :0; };
struct BFu0s_BFu0ll_BFs0c_BFu0ll { unsigned short :0; unsigned long long :0; signed char :0; unsigned long long :0; };
struct BFu0s_BFu0ll_BFs0c_BFu0s { unsigned short :0; unsigned long long :0; signed char :0; unsigned short :0; };
struct BFu0s_BFu0ll_BFs0i { unsigned short :0; unsigned long long :0; signed int :0; };
struct BFu0s_BFu0ll_BFs0i_BFs0c { unsigned short :0; unsigned long long :0; signed int :0; signed char :0; };
struct BFu0s_BFu0ll_BFs0i_BFs0i { unsigned short :0; unsigned long long :0; signed int :0; signed int :0; };
struct BFu0s_BFu0ll_BFs0i_BFs0ll { unsigned short :0; unsigned long long :0; signed int :0; signed long long :0; };
struct BFu0s_BFu0ll_BFs0i_BFs0s { unsigned short :0; unsigned long long :0; signed int :0; signed short :0; };
struct BFu0s_BFu0ll_BFs0i_BFu0c { unsigned short :0; unsigned long long :0; signed int :0; unsigned char :0; };
struct BFu0s_BFu0ll_BFs0i_BFu0i { unsigned short :0; unsigned long long :0; signed int :0; unsigned int :0; };
struct BFu0s_BFu0ll_BFs0i_BFu0ll { unsigned short :0; unsigned long long :0; signed int :0; unsigned long long :0; };
struct BFu0s_BFu0ll_BFs0i_BFu0s { unsigned short :0; unsigned long long :0; signed int :0; unsigned short :0; };
struct BFu0s_BFu0ll_BFs0ll { unsigned short :0; unsigned long long :0; signed long long :0; };
struct BFu0s_BFu0ll_BFs0ll_BFs0c { unsigned short :0; unsigned long long :0; signed long long :0; signed char :0; };
struct BFu0s_BFu0ll_BFs0ll_BFs0i { unsigned short :0; unsigned long long :0; signed long long :0; signed int :0; };
struct BFu0s_BFu0ll_BFs0ll_BFs0ll { unsigned short :0; unsigned long long :0; signed long long :0; signed long long :0; };
struct BFu0s_BFu0ll_BFs0ll_BFs0s { unsigned short :0; unsigned long long :0; signed long long :0; signed short :0; };
struct BFu0s_BFu0ll_BFs0ll_BFu0c { unsigned short :0; unsigned long long :0; signed long long :0; unsigned char :0; };
struct BFu0s_BFu0ll_BFs0ll_BFu0i { unsigned short :0; unsigned long long :0; signed long long :0; unsigned int :0; };
struct BFu0s_BFu0ll_BFs0ll_BFu0ll { unsigned short :0; unsigned long long :0; signed long long :0; unsigned long long :0; };
struct BFu0s_BFu0ll_BFs0ll_BFu0s { unsigned short :0; unsigned long long :0; signed long long :0; unsigned short :0; };
struct BFu0s_BFu0ll_BFs0s { unsigned short :0; unsigned long long :0; signed short :0; };
struct BFu0s_BFu0ll_BFs0s_BFs0c { unsigned short :0; unsigned long long :0; signed short :0; signed char :0; };
struct BFu0s_BFu0ll_BFs0s_BFs0i { unsigned short :0; unsigned long long :0; signed short :0; signed int :0; };
struct BFu0s_BFu0ll_BFs0s_BFs0ll { unsigned short :0; unsigned long long :0; signed short :0; signed long long :0; };
struct BFu0s_BFu0ll_BFs0s_BFs0s { unsigned short :0; unsigned long long :0; signed short :0; signed short :0; };
struct BFu0s_BFu0ll_BFs0s_BFu0c { unsigned short :0; unsigned long long :0; signed short :0; unsigned char :0; };
struct BFu0s_BFu0ll_BFs0s_BFu0i { unsigned short :0; unsigned long long :0; signed short :0; unsigned int :0; };
struct BFu0s_BFu0ll_BFs0s_BFu0ll { unsigned short :0; unsigned long long :0; signed short :0; unsigned long long :0; };
struct BFu0s_BFu0ll_BFs0s_BFu0s { unsigned short :0; unsigned long long :0; signed short :0; unsigned short :0; };
struct BFu0s_BFu0ll_BFu0c { unsigned short :0; unsigned long long :0; unsigned char :0; };
struct BFu0s_BFu0ll_BFu0c_BFs0c { unsigned short :0; unsigned long long :0; unsigned char :0; signed char :0; };
struct BFu0s_BFu0ll_BFu0c_BFs0i { unsigned short :0; unsigned long long :0; unsigned char :0; signed int :0; };
struct BFu0s_BFu0ll_BFu0c_BFs0ll { unsigned short :0; unsigned long long :0; unsigned char :0; signed long long :0; };
struct BFu0s_BFu0ll_BFu0c_BFs0s { unsigned short :0; unsigned long long :0; unsigned char :0; signed short :0; };
struct BFu0s_BFu0ll_BFu0c_BFu0c { unsigned short :0; unsigned long long :0; unsigned char :0; unsigned char :0; };
struct BFu0s_BFu0ll_BFu0c_BFu0i { unsigned short :0; unsigned long long :0; unsigned char :0; unsigned int :0; };
struct BFu0s_BFu0ll_BFu0c_BFu0ll { unsigned short :0; unsigned long long :0; unsigned char :0; unsigned long long :0; };
struct BFu0s_BFu0ll_BFu0c_BFu0s { unsigned short :0; unsigned long long :0; unsigned char :0; unsigned short :0; };
struct BFu0s_BFu0ll_BFu0i { unsigned short :0; unsigned long long :0; unsigned int :0; };
struct BFu0s_BFu0ll_BFu0i_BFs0c { unsigned short :0; unsigned long long :0; unsigned int :0; signed char :0; };
struct BFu0s_BFu0ll_BFu0i_BFs0i { unsigned short :0; unsigned long long :0; unsigned int :0; signed int :0; };
struct BFu0s_BFu0ll_BFu0i_BFs0ll { unsigned short :0; unsigned long long :0; unsigned int :0; signed long long :0; };
struct BFu0s_BFu0ll_BFu0i_BFs0s { unsigned short :0; unsigned long long :0; unsigned int :0; signed short :0; };
struct BFu0s_BFu0ll_BFu0i_BFu0c { unsigned short :0; unsigned long long :0; unsigned int :0; unsigned char :0; };
struct BFu0s_BFu0ll_BFu0i_BFu0i { unsigned short :0; unsigned long long :0; unsigned int :0; unsigned int :0; };
struct BFu0s_BFu0ll_BFu0i_BFu0ll { unsigned short :0; unsigned long long :0; unsigned int :0; unsigned long long :0; };
struct BFu0s_BFu0ll_BFu0i_BFu0s { unsigned short :0; unsigned long long :0; unsigned int :0; unsigned short :0; };
struct BFu0s_BFu0ll_BFu0ll { unsigned short :0; unsigned long long :0; unsigned long long :0; };
struct BFu0s_BFu0ll_BFu0ll_BFs0c { unsigned short :0; unsigned long long :0; unsigned long long :0; signed char :0; };
struct BFu0s_BFu0ll_BFu0ll_BFs0i { unsigned short :0; unsigned long long :0; unsigned long long :0; signed int :0; };
struct BFu0s_BFu0ll_BFu0ll_BFs0ll { unsigned short :0; unsigned long long :0; unsigned long long :0; signed long long :0; };
struct BFu0s_BFu0ll_BFu0ll_BFs0s { unsigned short :0; unsigned long long :0; unsigned long long :0; signed short :0; };
struct BFu0s_BFu0ll_BFu0ll_BFu0c { unsigned short :0; unsigned long long :0; unsigned long long :0; unsigned char :0; };
struct BFu0s_BFu0ll_BFu0ll_BFu0i { unsigned short :0; unsigned long long :0; unsigned long long :0; unsigned int :0; };
struct BFu0s_BFu0ll_BFu0ll_BFu0ll { unsigned short :0; unsigned long long :0; unsigned long long :0; unsigned long long :0; };
struct BFu0s_BFu0ll_BFu0ll_BFu0s { unsigned short :0; unsigned long long :0; unsigned long long :0; unsigned short :0; };
struct BFu0s_BFu0ll_BFu0s { unsigned short :0; unsigned long long :0; unsigned short :0; };
struct BFu0s_BFu0ll_BFu0s_BFs0c { unsigned short :0; unsigned long long :0; unsigned short :0; signed char :0; };
struct BFu0s_BFu0ll_BFu0s_BFs0i { unsigned short :0; unsigned long long :0; unsigned short :0; signed int :0; };
struct BFu0s_BFu0ll_BFu0s_BFs0ll { unsigned short :0; unsigned long long :0; unsigned short :0; signed long long :0; };
struct BFu0s_BFu0ll_BFu0s_BFs0s { unsigned short :0; unsigned long long :0; unsigned short :0; signed short :0; };
struct BFu0s_BFu0ll_BFu0s_BFu0c { unsigned short :0; unsigned long long :0; unsigned short :0; unsigned char :0; };
struct BFu0s_BFu0ll_BFu0s_BFu0i { unsigned short :0; unsigned long long :0; unsigned short :0; unsigned int :0; };
struct BFu0s_BFu0ll_BFu0s_BFu0ll { unsigned short :0; unsigned long long :0; unsigned short :0; unsigned long long :0; };
struct BFu0s_BFu0ll_BFu0s_BFu0s { unsigned short :0; unsigned long long :0; unsigned short :0; unsigned short :0; };
struct BFu0s_BFu0ll_BFu15i { unsigned short :0; unsigned long long :0; unsigned int v1:15; };
struct BFu0s_BFu0ll_BFu15ll { unsigned short :0; unsigned long long :0; unsigned long long v1:15; };
struct BFu0s_BFu0ll_BFu15s { unsigned short :0; unsigned long long :0; unsigned short v1:15; };
struct BFu0s_BFu0ll_BFu16i { unsigned short :0; unsigned long long :0; unsigned int v1:16; };
struct BFu0s_BFu0ll_BFu16ll { unsigned short :0; unsigned long long :0; unsigned long long v1:16; };
struct BFu0s_BFu0ll_BFu16s { unsigned short :0; unsigned long long :0; unsigned short v1:16; };
struct BFu0s_BFu0ll_BFu17i { unsigned short :0; unsigned long long :0; unsigned int v1:17; };
struct BFu0s_BFu0ll_BFu17ll { unsigned short :0; unsigned long long :0; unsigned long long v1:17; };
struct BFu0s_BFu0ll_BFu1c { unsigned short :0; unsigned long long :0; unsigned char v1:1; };
struct BFu0s_BFu0ll_BFu1i { unsigned short :0; unsigned long long :0; unsigned int v1:1; };
struct BFu0s_BFu0ll_BFu1ll { unsigned short :0; unsigned long long :0; unsigned long long v1:1; };
struct BFu0s_BFu0ll_BFu1s { unsigned short :0; unsigned long long :0; unsigned short v1:1; };
struct BFu0s_BFu0ll_BFu31i { unsigned short :0; unsigned long long :0; unsigned int v1:31; };
struct BFu0s_BFu0ll_BFu31ll { unsigned short :0; unsigned long long :0; unsigned long long v1:31; };
struct BFu0s_BFu0ll_BFu32i { unsigned short :0; unsigned long long :0; unsigned int v1:32; };
struct BFu0s_BFu0ll_BFu32ll { unsigned short :0; unsigned long long :0; unsigned long long v1:32; };
struct BFu0s_BFu0ll_BFu33 { unsigned short :0; unsigned long long :0; unsigned long long v1:33; };
struct BFu0s_BFu0ll_BFu7c { unsigned short :0; unsigned long long :0; unsigned char v1:7; };
struct BFu0s_BFu0ll_BFu7i { unsigned short :0; unsigned long long :0; unsigned int v1:7; };
struct BFu0s_BFu0ll_BFu7ll { unsigned short :0; unsigned long long :0; unsigned long long v1:7; };
struct BFu0s_BFu0ll_BFu7s { unsigned short :0; unsigned long long :0; unsigned short v1:7; };
struct BFu0s_BFu0ll_BFu8c { unsigned short :0; unsigned long long :0; unsigned char v1:8; };
struct BFu0s_BFu0ll_BFu8i { unsigned short :0; unsigned long long :0; unsigned int v1:8; };
struct BFu0s_BFu0ll_BFu8ll { unsigned short :0; unsigned long long :0; unsigned long long v1:8; };
struct BFu0s_BFu0ll_BFu8s { unsigned short :0; unsigned long long :0; unsigned short v1:8; };
struct BFu0s_BFu0ll_BFu9i { unsigned short :0; unsigned long long :0; unsigned int v1:9; };
struct BFu0s_BFu0ll_BFu9ll { unsigned short :0; unsigned long long :0; unsigned long long v1:9; };
struct BFu0s_BFu0ll_BFu9s { unsigned short :0; unsigned long long :0; unsigned short v1:9; };
struct BFu0s_BFu0ll_C { unsigned short :0; unsigned long long :0; char v1; };
struct BFu0s_BFu0ll_D { unsigned short :0; unsigned long long :0; double v1; };
struct BFu0s_BFu0ll_F { unsigned short :0; unsigned long long :0; float v1; };
struct BFu0s_BFu0ll_I { unsigned short :0; unsigned long long :0; int v1; };
struct BFu0s_BFu0ll_Ip { unsigned short :0; unsigned long long :0; int * v1; };
struct BFu0s_BFu0ll_L { unsigned short :0; unsigned long long :0; long long v1; };
struct BFu0s_BFu0ll_S { unsigned short :0; unsigned long long :0; short v1; };
struct BFu0s_BFu0ll_Uc { unsigned short :0; unsigned long long :0; unsigned char v1; };
struct BFu0s_BFu0ll_Ui { unsigned short :0; unsigned long long :0; unsigned int v1; };
struct BFu0s_BFu0ll_Ul { unsigned short :0; unsigned long long :0; unsigned long long v1; };
struct BFu0s_BFu0ll_Us { unsigned short :0; unsigned long long :0; unsigned short v1; };
struct BFu0s_BFu0ll_Vp { unsigned short :0; unsigned long long :0; void * v1; };
struct BFu0s_BFu0s { unsigned short :0; unsigned short :0; };
struct BFu0s_BFu0s_BFs0c { unsigned short :0; unsigned short :0; signed char :0; };
struct BFu0s_BFu0s_BFs0c_BFs0c { unsigned short :0; unsigned short :0; signed char :0; signed char :0; };
struct BFu0s_BFu0s_BFs0c_BFs0i { unsigned short :0; unsigned short :0; signed char :0; signed int :0; };
struct BFu0s_BFu0s_BFs0c_BFs0ll { unsigned short :0; unsigned short :0; signed char :0; signed long long :0; };
struct BFu0s_BFu0s_BFs0c_BFs0s { unsigned short :0; unsigned short :0; signed char :0; signed short :0; };
struct BFu0s_BFu0s_BFs0c_BFu0c { unsigned short :0; unsigned short :0; signed char :0; unsigned char :0; };
struct BFu0s_BFu0s_BFs0c_BFu0i { unsigned short :0; unsigned short :0; signed char :0; unsigned int :0; };
struct BFu0s_BFu0s_BFs0c_BFu0ll { unsigned short :0; unsigned short :0; signed char :0; unsigned long long :0; };
struct BFu0s_BFu0s_BFs0c_BFu0s { unsigned short :0; unsigned short :0; signed char :0; unsigned short :0; };
struct BFu0s_BFu0s_BFs0i { unsigned short :0; unsigned short :0; signed int :0; };
struct BFu0s_BFu0s_BFs0i_BFs0c { unsigned short :0; unsigned short :0; signed int :0; signed char :0; };
struct BFu0s_BFu0s_BFs0i_BFs0i { unsigned short :0; unsigned short :0; signed int :0; signed int :0; };
struct BFu0s_BFu0s_BFs0i_BFs0ll { unsigned short :0; unsigned short :0; signed int :0; signed long long :0; };
struct BFu0s_BFu0s_BFs0i_BFs0s { unsigned short :0; unsigned short :0; signed int :0; signed short :0; };
struct BFu0s_BFu0s_BFs0i_BFu0c { unsigned short :0; unsigned short :0; signed int :0; unsigned char :0; };
struct BFu0s_BFu0s_BFs0i_BFu0i { unsigned short :0; unsigned short :0; signed int :0; unsigned int :0; };
struct BFu0s_BFu0s_BFs0i_BFu0ll { unsigned short :0; unsigned short :0; signed int :0; unsigned long long :0; };
struct BFu0s_BFu0s_BFs0i_BFu0s { unsigned short :0; unsigned short :0; signed int :0; unsigned short :0; };
struct BFu0s_BFu0s_BFs0ll { unsigned short :0; unsigned short :0; signed long long :0; };
struct BFu0s_BFu0s_BFs0ll_BFs0c { unsigned short :0; unsigned short :0; signed long long :0; signed char :0; };
struct BFu0s_BFu0s_BFs0ll_BFs0i { unsigned short :0; unsigned short :0; signed long long :0; signed int :0; };
struct BFu0s_BFu0s_BFs0ll_BFs0ll { unsigned short :0; unsigned short :0; signed long long :0; signed long long :0; };
struct BFu0s_BFu0s_BFs0ll_BFs0s { unsigned short :0; unsigned short :0; signed long long :0; signed short :0; };
struct BFu0s_BFu0s_BFs0ll_BFu0c { unsigned short :0; unsigned short :0; signed long long :0; unsigned char :0; };
struct BFu0s_BFu0s_BFs0ll_BFu0i { unsigned short :0; unsigned short :0; signed long long :0; unsigned int :0; };
struct BFu0s_BFu0s_BFs0ll_BFu0ll { unsigned short :0; unsigned short :0; signed long long :0; unsigned long long :0; };
struct BFu0s_BFu0s_BFs0ll_BFu0s { unsigned short :0; unsigned short :0; signed long long :0; unsigned short :0; };
struct BFu0s_BFu0s_BFs0s { unsigned short :0; unsigned short :0; signed short :0; };
struct BFu0s_BFu0s_BFs0s_BFs0c { unsigned short :0; unsigned short :0; signed short :0; signed char :0; };
struct BFu0s_BFu0s_BFs0s_BFs0i { unsigned short :0; unsigned short :0; signed short :0; signed int :0; };
struct BFu0s_BFu0s_BFs0s_BFs0ll { unsigned short :0; unsigned short :0; signed short :0; signed long long :0; };
struct BFu0s_BFu0s_BFs0s_BFs0s { unsigned short :0; unsigned short :0; signed short :0; signed short :0; };
struct BFu0s_BFu0s_BFs0s_BFu0c { unsigned short :0; unsigned short :0; signed short :0; unsigned char :0; };
struct BFu0s_BFu0s_BFs0s_BFu0i { unsigned short :0; unsigned short :0; signed short :0; unsigned int :0; };
struct BFu0s_BFu0s_BFs0s_BFu0ll { unsigned short :0; unsigned short :0; signed short :0; unsigned long long :0; };
struct BFu0s_BFu0s_BFs0s_BFu0s { unsigned short :0; unsigned short :0; signed short :0; unsigned short :0; };
struct BFu0s_BFu0s_BFu0c { unsigned short :0; unsigned short :0; unsigned char :0; };
struct BFu0s_BFu0s_BFu0c_BFs0c { unsigned short :0; unsigned short :0; unsigned char :0; signed char :0; };
struct BFu0s_BFu0s_BFu0c_BFs0i { unsigned short :0; unsigned short :0; unsigned char :0; signed int :0; };
struct BFu0s_BFu0s_BFu0c_BFs0ll { unsigned short :0; unsigned short :0; unsigned char :0; signed long long :0; };
struct BFu0s_BFu0s_BFu0c_BFs0s { unsigned short :0; unsigned short :0; unsigned char :0; signed short :0; };
struct BFu0s_BFu0s_BFu0c_BFu0c { unsigned short :0; unsigned short :0; unsigned char :0; unsigned char :0; };
struct BFu0s_BFu0s_BFu0c_BFu0i { unsigned short :0; unsigned short :0; unsigned char :0; unsigned int :0; };
struct BFu0s_BFu0s_BFu0c_BFu0ll { unsigned short :0; unsigned short :0; unsigned char :0; unsigned long long :0; };
struct BFu0s_BFu0s_BFu0c_BFu0s { unsigned short :0; unsigned short :0; unsigned char :0; unsigned short :0; };
struct BFu0s_BFu0s_BFu0i { unsigned short :0; unsigned short :0; unsigned int :0; };
struct BFu0s_BFu0s_BFu0i_BFs0c { unsigned short :0; unsigned short :0; unsigned int :0; signed char :0; };
struct BFu0s_BFu0s_BFu0i_BFs0i { unsigned short :0; unsigned short :0; unsigned int :0; signed int :0; };
struct BFu0s_BFu0s_BFu0i_BFs0ll { unsigned short :0; unsigned short :0; unsigned int :0; signed long long :0; };
struct BFu0s_BFu0s_BFu0i_BFs0s { unsigned short :0; unsigned short :0; unsigned int :0; signed short :0; };
struct BFu0s_BFu0s_BFu0i_BFu0c { unsigned short :0; unsigned short :0; unsigned int :0; unsigned char :0; };
struct BFu0s_BFu0s_BFu0i_BFu0i { unsigned short :0; unsigned short :0; unsigned int :0; unsigned int :0; };
struct BFu0s_BFu0s_BFu0i_BFu0ll { unsigned short :0; unsigned short :0; unsigned int :0; unsigned long long :0; };
struct BFu0s_BFu0s_BFu0i_BFu0s { unsigned short :0; unsigned short :0; unsigned int :0; unsigned short :0; };
struct BFu0s_BFu0s_BFu0ll { unsigned short :0; unsigned short :0; unsigned long long :0; };
struct BFu0s_BFu0s_BFu0ll_BFs0c { unsigned short :0; unsigned short :0; unsigned long long :0; signed char :0; };
struct BFu0s_BFu0s_BFu0ll_BFs0i { unsigned short :0; unsigned short :0; unsigned long long :0; signed int :0; };
struct BFu0s_BFu0s_BFu0ll_BFs0ll { unsigned short :0; unsigned short :0; unsigned long long :0; signed long long :0; };
struct BFu0s_BFu0s_BFu0ll_BFs0s { unsigned short :0; unsigned short :0; unsigned long long :0; signed short :0; };
struct BFu0s_BFu0s_BFu0ll_BFu0c { unsigned short :0; unsigned short :0; unsigned long long :0; unsigned char :0; };
struct BFu0s_BFu0s_BFu0ll_BFu0i { unsigned short :0; unsigned short :0; unsigned long long :0; unsigned int :0; };
struct BFu0s_BFu0s_BFu0ll_BFu0ll { unsigned short :0; unsigned short :0; unsigned long long :0; unsigned long long :0; };
struct BFu0s_BFu0s_BFu0ll_BFu0s { unsigned short :0; unsigned short :0; unsigned long long :0; unsigned short :0; };
struct BFu0s_BFu0s_BFu0s { unsigned short :0; unsigned short :0; unsigned short :0; };
struct BFu0s_BFu0s_BFu0s_BFs0c { unsigned short :0; unsigned short :0; unsigned short :0; signed char :0; };
struct BFu0s_BFu0s_BFu0s_BFs0i { unsigned short :0; unsigned short :0; unsigned short :0; signed int :0; };
struct BFu0s_BFu0s_BFu0s_BFs0ll { unsigned short :0; unsigned short :0; unsigned short :0; signed long long :0; };
struct BFu0s_BFu0s_BFu0s_BFs0s { unsigned short :0; unsigned short :0; unsigned short :0; signed short :0; };
struct BFu0s_BFu0s_BFu0s_BFu0c { unsigned short :0; unsigned short :0; unsigned short :0; unsigned char :0; };
struct BFu0s_BFu0s_BFu0s_BFu0i { unsigned short :0; unsigned short :0; unsigned short :0; unsigned int :0; };
struct BFu0s_BFu0s_BFu0s_BFu0ll { unsigned short :0; unsigned short :0; unsigned short :0; unsigned long long :0; };
struct BFu0s_BFu0s_BFu0s_BFu0s { unsigned short :0; unsigned short :0; unsigned short :0; unsigned short :0; };
struct BFu0s_BFu0s_BFu15i { unsigned short :0; unsigned short :0; unsigned int v1:15; };
struct BFu0s_BFu0s_BFu15ll { unsigned short :0; unsigned short :0; unsigned long long v1:15; };
struct BFu0s_BFu0s_BFu15s { unsigned short :0; unsigned short :0; unsigned short v1:15; };
struct BFu0s_BFu0s_BFu16i { unsigned short :0; unsigned short :0; unsigned int v1:16; };
struct BFu0s_BFu0s_BFu16ll { unsigned short :0; unsigned short :0; unsigned long long v1:16; };
struct BFu0s_BFu0s_BFu16s { unsigned short :0; unsigned short :0; unsigned short v1:16; };
struct BFu0s_BFu0s_BFu17i { unsigned short :0; unsigned short :0; unsigned int v1:17; };
struct BFu0s_BFu0s_BFu17ll { unsigned short :0; unsigned short :0; unsigned long long v1:17; };
struct BFu0s_BFu0s_BFu1c { unsigned short :0; unsigned short :0; unsigned char v1:1; };
struct BFu0s_BFu0s_BFu1i { unsigned short :0; unsigned short :0; unsigned int v1:1; };
struct BFu0s_BFu0s_BFu1ll { unsigned short :0; unsigned short :0; unsigned long long v1:1; };
struct BFu0s_BFu0s_BFu1s { unsigned short :0; unsigned short :0; unsigned short v1:1; };
struct BFu0s_BFu0s_BFu31i { unsigned short :0; unsigned short :0; unsigned int v1:31; };
struct BFu0s_BFu0s_BFu31ll { unsigned short :0; unsigned short :0; unsigned long long v1:31; };
struct BFu0s_BFu0s_BFu32i { unsigned short :0; unsigned short :0; unsigned int v1:32; };
struct BFu0s_BFu0s_BFu32ll { unsigned short :0; unsigned short :0; unsigned long long v1:32; };
struct BFu0s_BFu0s_BFu33 { unsigned short :0; unsigned short :0; unsigned long long v1:33; };
struct BFu0s_BFu0s_BFu7c { unsigned short :0; unsigned short :0; unsigned char v1:7; };
struct BFu0s_BFu0s_BFu7i { unsigned short :0; unsigned short :0; unsigned int v1:7; };
struct BFu0s_BFu0s_BFu7ll { unsigned short :0; unsigned short :0; unsigned long long v1:7; };
struct BFu0s_BFu0s_BFu7s { unsigned short :0; unsigned short :0; unsigned short v1:7; };
struct BFu0s_BFu0s_BFu8c { unsigned short :0; unsigned short :0; unsigned char v1:8; };
struct BFu0s_BFu0s_BFu8i { unsigned short :0; unsigned short :0; unsigned int v1:8; };
struct BFu0s_BFu0s_BFu8ll { unsigned short :0; unsigned short :0; unsigned long long v1:8; };
struct BFu0s_BFu0s_BFu8s { unsigned short :0; unsigned short :0; unsigned short v1:8; };
struct BFu0s_BFu0s_BFu9i { unsigned short :0; unsigned short :0; unsigned int v1:9; };
struct BFu0s_BFu0s_BFu9ll { unsigned short :0; unsigned short :0; unsigned long long v1:9; };
struct BFu0s_BFu0s_BFu9s { unsigned short :0; unsigned short :0; unsigned short v1:9; };
struct BFu0s_BFu0s_C { unsigned short :0; unsigned short :0; char v1; };
struct BFu0s_BFu0s_D { unsigned short :0; unsigned short :0; double v1; };
struct BFu0s_BFu0s_F { unsigned short :0; unsigned short :0; float v1; };
struct BFu0s_BFu0s_I { unsigned short :0; unsigned short :0; int v1; };
struct BFu0s_BFu0s_Ip { unsigned short :0; unsigned short :0; int * v1; };
struct BFu0s_BFu0s_L { unsigned short :0; unsigned short :0; long long v1; };
struct BFu0s_BFu0s_S { unsigned short :0; unsigned short :0; short v1; };
struct BFu0s_BFu0s_Uc { unsigned short :0; unsigned short :0; unsigned char v1; };
struct BFu0s_BFu0s_Ui { unsigned short :0; unsigned short :0; unsigned int v1; };
struct BFu0s_BFu0s_Ul { unsigned short :0; unsigned short :0; unsigned long long v1; };
struct BFu0s_BFu0s_Us { unsigned short :0; unsigned short :0; unsigned short v1; };
struct BFu0s_BFu0s_Vp { unsigned short :0; unsigned short :0; void * v1; };
struct BFu0s_BFu15i { unsigned short :0; unsigned int v1:15; };
struct BFu0s_BFu15i_BFu0c { unsigned short :0; unsigned int v1:15; unsigned char :0; };
struct BFu0s_BFu15i_BFu0i { unsigned short :0; unsigned int v1:15; unsigned int :0; };
struct BFu0s_BFu15i_BFu0ll { unsigned short :0; unsigned int v1:15; unsigned long long :0; };
struct BFu0s_BFu15i_BFu0s { unsigned short :0; unsigned int v1:15; unsigned short :0; };
struct BFu0s_BFu15i_BFu15i { unsigned short :0; unsigned int v1:15; unsigned int v2:15; };
struct BFu0s_BFu15i_BFu15ll { unsigned short :0; unsigned int v1:15; unsigned long long v2:15; };
struct BFu0s_BFu15i_BFu15s { unsigned short :0; unsigned int v1:15; unsigned short v2:15; };
struct BFu0s_BFu15i_BFu16i { unsigned short :0; unsigned int v1:15; unsigned int v2:16; };
struct BFu0s_BFu15i_BFu16ll { unsigned short :0; unsigned int v1:15; unsigned long long v2:16; };
struct BFu0s_BFu15i_BFu16s { unsigned short :0; unsigned int v1:15; unsigned short v2:16; };
struct BFu0s_BFu15i_BFu17i { unsigned short :0; unsigned int v1:15; unsigned int v2:17; };
struct BFu0s_BFu15i_BFu17ll { unsigned short :0; unsigned int v1:15; unsigned long long v2:17; };
struct BFu0s_BFu15i_BFu1c { unsigned short :0; unsigned int v1:15; unsigned char v2:1; };
struct BFu0s_BFu15i_BFu1i { unsigned short :0; unsigned int v1:15; unsigned int v2:1; };
struct BFu0s_BFu15i_BFu1ll { unsigned short :0; unsigned int v1:15; unsigned long long v2:1; };
struct BFu0s_BFu15i_BFu1s { unsigned short :0; unsigned int v1:15; unsigned short v2:1; };
struct BFu0s_BFu15i_BFu31i { unsigned short :0; unsigned int v1:15; unsigned int v2:31; };
struct BFu0s_BFu15i_BFu31ll { unsigned short :0; unsigned int v1:15; unsigned long long v2:31; };
struct BFu0s_BFu15i_BFu32i { unsigned short :0; unsigned int v1:15; unsigned int v2:32; };
struct BFu0s_BFu15i_BFu32ll { unsigned short :0; unsigned int v1:15; unsigned long long v2:32; };
struct BFu0s_BFu15i_BFu33 { unsigned short :0; unsigned int v1:15; unsigned long long v2:33; };
struct BFu0s_BFu15i_BFu7c { unsigned short :0; unsigned int v1:15; unsigned char v2:7; };
struct BFu0s_BFu15i_BFu7i { unsigned short :0; unsigned int v1:15; unsigned int v2:7; };
struct BFu0s_BFu15i_BFu7ll { unsigned short :0; unsigned int v1:15; unsigned long long v2:7; };
struct BFu0s_BFu15i_BFu7s { unsigned short :0; unsigned int v1:15; unsigned short v2:7; };
struct BFu0s_BFu15i_BFu8c { unsigned short :0; unsigned int v1:15; unsigned char v2:8; };
struct BFu0s_BFu15i_BFu8i { unsigned short :0; unsigned int v1:15; unsigned int v2:8; };
struct BFu0s_BFu15i_BFu8ll { unsigned short :0; unsigned int v1:15; unsigned long long v2:8; };
struct BFu0s_BFu15i_BFu8s { unsigned short :0; unsigned int v1:15; unsigned short v2:8; };
struct BFu0s_BFu15i_BFu9i { unsigned short :0; unsigned int v1:15; unsigned int v2:9; };
struct BFu0s_BFu15i_BFu9ll { unsigned short :0; unsigned int v1:15; unsigned long long v2:9; };
struct BFu0s_BFu15i_BFu9s { unsigned short :0; unsigned int v1:15; unsigned short v2:9; };
struct BFu0s_BFu15i_C { unsigned short :0; unsigned int v1:15; char v2; };
struct BFu0s_BFu15i_D { unsigned short :0; unsigned int v1:15; double v2; };
struct BFu0s_BFu15i_F { unsigned short :0; unsigned int v1:15; float v2; };
struct BFu0s_BFu15i_I { unsigned short :0; unsigned int v1:15; int v2; };
struct BFu0s_BFu15i_Ip { unsigned short :0; unsigned int v1:15; int * v2; };
struct BFu0s_BFu15i_L { unsigned short :0; unsigned int v1:15; long long v2; };
struct BFu0s_BFu15i_S { unsigned short :0; unsigned int v1:15; short v2; };
struct BFu0s_BFu15i_Uc { unsigned short :0; unsigned int v1:15; unsigned char v2; };
struct BFu0s_BFu15i_Ui { unsigned short :0; unsigned int v1:15; unsigned int v2; };
struct BFu0s_BFu15i_Ul { unsigned short :0; unsigned int v1:15; unsigned long long v2; };
struct BFu0s_BFu15i_Us { unsigned short :0; unsigned int v1:15; unsigned short v2; };
struct BFu0s_BFu15i_Vp { unsigned short :0; unsigned int v1:15; void * v2; };
struct BFu0s_BFu15ll { unsigned short :0; unsigned long long v1:15; };
struct BFu0s_BFu15ll_BFu0c { unsigned short :0; unsigned long long v1:15; unsigned char :0; };
struct BFu0s_BFu15ll_BFu0i { unsigned short :0; unsigned long long v1:15; unsigned int :0; };
struct BFu0s_BFu15ll_BFu0ll { unsigned short :0; unsigned long long v1:15; unsigned long long :0; };
struct BFu0s_BFu15ll_BFu0s { unsigned short :0; unsigned long long v1:15; unsigned short :0; };
struct BFu0s_BFu15ll_BFu15i { unsigned short :0; unsigned long long v1:15; unsigned int v2:15; };
struct BFu0s_BFu15ll_BFu15ll { unsigned short :0; unsigned long long v1:15; unsigned long long v2:15; };
struct BFu0s_BFu15ll_BFu15s { unsigned short :0; unsigned long long v1:15; unsigned short v2:15; };
struct BFu0s_BFu15ll_BFu16i { unsigned short :0; unsigned long long v1:15; unsigned int v2:16; };
struct BFu0s_BFu15ll_BFu16ll { unsigned short :0; unsigned long long v1:15; unsigned long long v2:16; };
struct BFu0s_BFu15ll_BFu16s { unsigned short :0; unsigned long long v1:15; unsigned short v2:16; };
struct BFu0s_BFu15ll_BFu17i { unsigned short :0; unsigned long long v1:15; unsigned int v2:17; };
struct BFu0s_BFu15ll_BFu17ll { unsigned short :0; unsigned long long v1:15; unsigned long long v2:17; };
struct BFu0s_BFu15ll_BFu1c { unsigned short :0; unsigned long long v1:15; unsigned char v2:1; };
struct BFu0s_BFu15ll_BFu1i { unsigned short :0; unsigned long long v1:15; unsigned int v2:1; };
struct BFu0s_BFu15ll_BFu1ll { unsigned short :0; unsigned long long v1:15; unsigned long long v2:1; };
struct BFu0s_BFu15ll_BFu1s { unsigned short :0; unsigned long long v1:15; unsigned short v2:1; };
struct BFu0s_BFu15ll_BFu31i { unsigned short :0; unsigned long long v1:15; unsigned int v2:31; };
struct BFu0s_BFu15ll_BFu31ll { unsigned short :0; unsigned long long v1:15; unsigned long long v2:31; };
struct BFu0s_BFu15ll_BFu32i { unsigned short :0; unsigned long long v1:15; unsigned int v2:32; };
struct BFu0s_BFu15ll_BFu32ll { unsigned short :0; unsigned long long v1:15; unsigned long long v2:32; };
struct BFu0s_BFu15ll_BFu33 { unsigned short :0; unsigned long long v1:15; unsigned long long v2:33; };
struct BFu0s_BFu15ll_BFu7c { unsigned short :0; unsigned long long v1:15; unsigned char v2:7; };
struct BFu0s_BFu15ll_BFu7i { unsigned short :0; unsigned long long v1:15; unsigned int v2:7; };
struct BFu0s_BFu15ll_BFu7ll { unsigned short :0; unsigned long long v1:15; unsigned long long v2:7; };
struct BFu0s_BFu15ll_BFu7s { unsigned short :0; unsigned long long v1:15; unsigned short v2:7; };
struct BFu0s_BFu15ll_BFu8c { unsigned short :0; unsigned long long v1:15; unsigned char v2:8; };
struct BFu0s_BFu15ll_BFu8i { unsigned short :0; unsigned long long v1:15; unsigned int v2:8; };
struct BFu0s_BFu15ll_BFu8ll { unsigned short :0; unsigned long long v1:15; unsigned long long v2:8; };
struct BFu0s_BFu15ll_BFu8s { unsigned short :0; unsigned long long v1:15; unsigned short v2:8; };
struct BFu0s_BFu15ll_BFu9i { unsigned short :0; unsigned long long v1:15; unsigned int v2:9; };
struct BFu0s_BFu15ll_BFu9ll { unsigned short :0; unsigned long long v1:15; unsigned long long v2:9; };
struct BFu0s_BFu15ll_BFu9s { unsigned short :0; unsigned long long v1:15; unsigned short v2:9; };
struct BFu0s_BFu15ll_C { unsigned short :0; unsigned long long v1:15; char v2; };
struct BFu0s_BFu15ll_D { unsigned short :0; unsigned long long v1:15; double v2; };
struct BFu0s_BFu15ll_F { unsigned short :0; unsigned long long v1:15; float v2; };
struct BFu0s_BFu15ll_I { unsigned short :0; unsigned long long v1:15; int v2; };
struct BFu0s_BFu15ll_Ip { unsigned short :0; unsigned long long v1:15; int * v2; };
struct BFu0s_BFu15ll_L { unsigned short :0; unsigned long long v1:15; long long v2; };
struct BFu0s_BFu15ll_S { unsigned short :0; unsigned long long v1:15; short v2; };
struct BFu0s_BFu15ll_Uc { unsigned short :0; unsigned long long v1:15; unsigned char v2; };
struct BFu0s_BFu15ll_Ui { unsigned short :0; unsigned long long v1:15; unsigned int v2; };
struct BFu0s_BFu15ll_Ul { unsigned short :0; unsigned long long v1:15; unsigned long long v2; };
struct BFu0s_BFu15ll_Us { unsigned short :0; unsigned long long v1:15; unsigned short v2; };
struct BFu0s_BFu15ll_Vp { unsigned short :0; unsigned long long v1:15; void * v2; };
struct BFu0s_BFu15s { unsigned short :0; unsigned short v1:15; };
struct BFu0s_BFu15s_BFu0c { unsigned short :0; unsigned short v1:15; unsigned char :0; };
struct BFu0s_BFu15s_BFu0i { unsigned short :0; unsigned short v1:15; unsigned int :0; };
struct BFu0s_BFu15s_BFu0ll { unsigned short :0; unsigned short v1:15; unsigned long long :0; };
struct BFu0s_BFu15s_BFu0s { unsigned short :0; unsigned short v1:15; unsigned short :0; };
struct BFu0s_BFu15s_BFu15i { unsigned short :0; unsigned short v1:15; unsigned int v2:15; };
struct BFu0s_BFu15s_BFu15ll { unsigned short :0; unsigned short v1:15; unsigned long long v2:15; };
struct BFu0s_BFu15s_BFu15s { unsigned short :0; unsigned short v1:15; unsigned short v2:15; };
struct BFu0s_BFu15s_BFu16i { unsigned short :0; unsigned short v1:15; unsigned int v2:16; };
struct BFu0s_BFu15s_BFu16ll { unsigned short :0; unsigned short v1:15; unsigned long long v2:16; };
struct BFu0s_BFu15s_BFu16s { unsigned short :0; unsigned short v1:15; unsigned short v2:16; };
struct BFu0s_BFu15s_BFu17i { unsigned short :0; unsigned short v1:15; unsigned int v2:17; };
struct BFu0s_BFu15s_BFu17ll { unsigned short :0; unsigned short v1:15; unsigned long long v2:17; };
struct BFu0s_BFu15s_BFu1c { unsigned short :0; unsigned short v1:15; unsigned char v2:1; };
struct BFu0s_BFu15s_BFu1i { unsigned short :0; unsigned short v1:15; unsigned int v2:1; };
struct BFu0s_BFu15s_BFu1ll { unsigned short :0; unsigned short v1:15; unsigned long long v2:1; };
struct BFu0s_BFu15s_BFu1s { unsigned short :0; unsigned short v1:15; unsigned short v2:1; };
struct BFu0s_BFu15s_BFu31i { unsigned short :0; unsigned short v1:15; unsigned int v2:31; };
struct BFu0s_BFu15s_BFu31ll { unsigned short :0; unsigned short v1:15; unsigned long long v2:31; };
struct BFu0s_BFu15s_BFu32i { unsigned short :0; unsigned short v1:15; unsigned int v2:32; };
struct BFu0s_BFu15s_BFu32ll { unsigned short :0; unsigned short v1:15; unsigned long long v2:32; };
struct BFu0s_BFu15s_BFu33 { unsigned short :0; unsigned short v1:15; unsigned long long v2:33; };
struct BFu0s_BFu15s_BFu7c { unsigned short :0; unsigned short v1:15; unsigned char v2:7; };
struct BFu0s_BFu15s_BFu7i { unsigned short :0; unsigned short v1:15; unsigned int v2:7; };
struct BFu0s_BFu15s_BFu7ll { unsigned short :0; unsigned short v1:15; unsigned long long v2:7; };
struct BFu0s_BFu15s_BFu7s { unsigned short :0; unsigned short v1:15; unsigned short v2:7; };
struct BFu0s_BFu15s_BFu8c { unsigned short :0; unsigned short v1:15; unsigned char v2:8; };
struct BFu0s_BFu15s_BFu8i { unsigned short :0; unsigned short v1:15; unsigned int v2:8; };
struct BFu0s_BFu15s_BFu8ll { unsigned short :0; unsigned short v1:15; unsigned long long v2:8; };
struct BFu0s_BFu15s_BFu8s { unsigned short :0; unsigned short v1:15; unsigned short v2:8; };
struct BFu0s_BFu15s_BFu9i { unsigned short :0; unsigned short v1:15; unsigned int v2:9; };
struct BFu0s_BFu15s_BFu9ll { unsigned short :0; unsigned short v1:15; unsigned long long v2:9; };
struct BFu0s_BFu15s_BFu9s { unsigned short :0; unsigned short v1:15; unsigned short v2:9; };
struct BFu0s_BFu15s_C { unsigned short :0; unsigned short v1:15; char v2; };
struct BFu0s_BFu15s_D { unsigned short :0; unsigned short v1:15; double v2; };
struct BFu0s_BFu15s_F { unsigned short :0; unsigned short v1:15; float v2; };
struct BFu0s_BFu15s_I { unsigned short :0; unsigned short v1:15; int v2; };
struct BFu0s_BFu15s_Ip { unsigned short :0; unsigned short v1:15; int * v2; };
struct BFu0s_BFu15s_L { unsigned short :0; unsigned short v1:15; long long v2; };
struct BFu0s_BFu15s_S { unsigned short :0; unsigned short v1:15; short v2; };
struct BFu0s_BFu15s_Uc { unsigned short :0; unsigned short v1:15; unsigned char v2; };
struct BFu0s_BFu15s_Ui { unsigned short :0; unsigned short v1:15; unsigned int v2; };
struct BFu0s_BFu15s_Ul { unsigned short :0; unsigned short v1:15; unsigned long long v2; };
struct BFu0s_BFu15s_Us { unsigned short :0; unsigned short v1:15; unsigned short v2; };
struct BFu0s_BFu15s_Vp { unsigned short :0; unsigned short v1:15; void * v2; };
struct BFu0s_BFu16i { unsigned short :0; unsigned int v1:16; };
struct BFu0s_BFu16i_BFu0c { unsigned short :0; unsigned int v1:16; unsigned char :0; };
struct BFu0s_BFu16i_BFu0i { unsigned short :0; unsigned int v1:16; unsigned int :0; };
struct BFu0s_BFu16i_BFu0ll { unsigned short :0; unsigned int v1:16; unsigned long long :0; };
struct BFu0s_BFu16i_BFu0s { unsigned short :0; unsigned int v1:16; unsigned short :0; };
struct BFu0s_BFu16i_BFu15i { unsigned short :0; unsigned int v1:16; unsigned int v2:15; };
struct BFu0s_BFu16i_BFu15ll { unsigned short :0; unsigned int v1:16; unsigned long long v2:15; };
struct BFu0s_BFu16i_BFu15s { unsigned short :0; unsigned int v1:16; unsigned short v2:15; };
struct BFu0s_BFu16i_BFu16i { unsigned short :0; unsigned int v1:16; unsigned int v2:16; };
struct BFu0s_BFu16i_BFu16ll { unsigned short :0; unsigned int v1:16; unsigned long long v2:16; };
struct BFu0s_BFu16i_BFu16s { unsigned short :0; unsigned int v1:16; unsigned short v2:16; };
struct BFu0s_BFu16i_BFu17i { unsigned short :0; unsigned int v1:16; unsigned int v2:17; };
struct BFu0s_BFu16i_BFu17ll { unsigned short :0; unsigned int v1:16; unsigned long long v2:17; };
struct BFu0s_BFu16i_BFu1c { unsigned short :0; unsigned int v1:16; unsigned char v2:1; };
struct BFu0s_BFu16i_BFu1i { unsigned short :0; unsigned int v1:16; unsigned int v2:1; };
struct BFu0s_BFu16i_BFu1ll { unsigned short :0; unsigned int v1:16; unsigned long long v2:1; };
struct BFu0s_BFu16i_BFu1s { unsigned short :0; unsigned int v1:16; unsigned short v2:1; };
struct BFu0s_BFu16i_BFu31i { unsigned short :0; unsigned int v1:16; unsigned int v2:31; };
struct BFu0s_BFu16i_BFu31ll { unsigned short :0; unsigned int v1:16; unsigned long long v2:31; };
struct BFu0s_BFu16i_BFu32i { unsigned short :0; unsigned int v1:16; unsigned int v2:32; };
struct BFu0s_BFu16i_BFu32ll { unsigned short :0; unsigned int v1:16; unsigned long long v2:32; };
struct BFu0s_BFu16i_BFu33 { unsigned short :0; unsigned int v1:16; unsigned long long v2:33; };
struct BFu0s_BFu16i_BFu7c { unsigned short :0; unsigned int v1:16; unsigned char v2:7; };
struct BFu0s_BFu16i_BFu7i { unsigned short :0; unsigned int v1:16; unsigned int v2:7; };
struct BFu0s_BFu16i_BFu7ll { unsigned short :0; unsigned int v1:16; unsigned long long v2:7; };
struct BFu0s_BFu16i_BFu7s { unsigned short :0; unsigned int v1:16; unsigned short v2:7; };
struct BFu0s_BFu16i_BFu8c { unsigned short :0; unsigned int v1:16; unsigned char v2:8; };
struct BFu0s_BFu16i_BFu8i { unsigned short :0; unsigned int v1:16; unsigned int v2:8; };
struct BFu0s_BFu16i_BFu8ll { unsigned short :0; unsigned int v1:16; unsigned long long v2:8; };
struct BFu0s_BFu16i_BFu8s { unsigned short :0; unsigned int v1:16; unsigned short v2:8; };
struct BFu0s_BFu16i_BFu9i { unsigned short :0; unsigned int v1:16; unsigned int v2:9; };
struct BFu0s_BFu16i_BFu9ll { unsigned short :0; unsigned int v1:16; unsigned long long v2:9; };
struct BFu0s_BFu16i_BFu9s { unsigned short :0; unsigned int v1:16; unsigned short v2:9; };
struct BFu0s_BFu16i_C { unsigned short :0; unsigned int v1:16; char v2; };
struct BFu0s_BFu16i_D { unsigned short :0; unsigned int v1:16; double v2; };
struct BFu0s_BFu16i_F { unsigned short :0; unsigned int v1:16; float v2; };
struct BFu0s_BFu16i_I { unsigned short :0; unsigned int v1:16; int v2; };
struct BFu0s_BFu16i_Ip { unsigned short :0; unsigned int v1:16; int * v2; };
struct BFu0s_BFu16i_L { unsigned short :0; unsigned int v1:16; long long v2; };
struct BFu0s_BFu16i_S { unsigned short :0; unsigned int v1:16; short v2; };
struct BFu0s_BFu16i_Uc { unsigned short :0; unsigned int v1:16; unsigned char v2; };
struct BFu0s_BFu16i_Ui { unsigned short :0; unsigned int v1:16; unsigned int v2; };
struct BFu0s_BFu16i_Ul { unsigned short :0; unsigned int v1:16; unsigned long long v2; };
struct BFu0s_BFu16i_Us { unsigned short :0; unsigned int v1:16; unsigned short v2; };
struct BFu0s_BFu16i_Vp { unsigned short :0; unsigned int v1:16; void * v2; };
struct BFu0s_BFu16ll { unsigned short :0; unsigned long long v1:16; };
struct BFu0s_BFu16ll_BFu0c { unsigned short :0; unsigned long long v1:16; unsigned char :0; };
struct BFu0s_BFu16ll_BFu0i { unsigned short :0; unsigned long long v1:16; unsigned int :0; };
struct BFu0s_BFu16ll_BFu0ll { unsigned short :0; unsigned long long v1:16; unsigned long long :0; };
struct BFu0s_BFu16ll_BFu0s { unsigned short :0; unsigned long long v1:16; unsigned short :0; };
struct BFu0s_BFu16ll_BFu15i { unsigned short :0; unsigned long long v1:16; unsigned int v2:15; };
struct BFu0s_BFu16ll_BFu15ll { unsigned short :0; unsigned long long v1:16; unsigned long long v2:15; };
struct BFu0s_BFu16ll_BFu15s { unsigned short :0; unsigned long long v1:16; unsigned short v2:15; };
struct BFu0s_BFu16ll_BFu16i { unsigned short :0; unsigned long long v1:16; unsigned int v2:16; };
struct BFu0s_BFu16ll_BFu16ll { unsigned short :0; unsigned long long v1:16; unsigned long long v2:16; };
struct BFu0s_BFu16ll_BFu16s { unsigned short :0; unsigned long long v1:16; unsigned short v2:16; };
struct BFu0s_BFu16ll_BFu17i { unsigned short :0; unsigned long long v1:16; unsigned int v2:17; };
struct BFu0s_BFu16ll_BFu17ll { unsigned short :0; unsigned long long v1:16; unsigned long long v2:17; };
struct BFu0s_BFu16ll_BFu1c { unsigned short :0; unsigned long long v1:16; unsigned char v2:1; };
struct BFu0s_BFu16ll_BFu1i { unsigned short :0; unsigned long long v1:16; unsigned int v2:1; };
struct BFu0s_BFu16ll_BFu1ll { unsigned short :0; unsigned long long v1:16; unsigned long long v2:1; };
struct BFu0s_BFu16ll_BFu1s { unsigned short :0; unsigned long long v1:16; unsigned short v2:1; };
struct BFu0s_BFu16ll_BFu31i { unsigned short :0; unsigned long long v1:16; unsigned int v2:31; };
struct BFu0s_BFu16ll_BFu31ll { unsigned short :0; unsigned long long v1:16; unsigned long long v2:31; };
struct BFu0s_BFu16ll_BFu32i { unsigned short :0; unsigned long long v1:16; unsigned int v2:32; };
struct BFu0s_BFu16ll_BFu32ll { unsigned short :0; unsigned long long v1:16; unsigned long long v2:32; };
struct BFu0s_BFu16ll_BFu33 { unsigned short :0; unsigned long long v1:16; unsigned long long v2:33; };
struct BFu0s_BFu16ll_BFu7c { unsigned short :0; unsigned long long v1:16; unsigned char v2:7; };
struct BFu0s_BFu16ll_BFu7i { unsigned short :0; unsigned long long v1:16; unsigned int v2:7; };
struct BFu0s_BFu16ll_BFu7ll { unsigned short :0; unsigned long long v1:16; unsigned long long v2:7; };
struct BFu0s_BFu16ll_BFu7s { unsigned short :0; unsigned long long v1:16; unsigned short v2:7; };
struct BFu0s_BFu16ll_BFu8c { unsigned short :0; unsigned long long v1:16; unsigned char v2:8; };
struct BFu0s_BFu16ll_BFu8i { unsigned short :0; unsigned long long v1:16; unsigned int v2:8; };
struct BFu0s_BFu16ll_BFu8ll { unsigned short :0; unsigned long long v1:16; unsigned long long v2:8; };
struct BFu0s_BFu16ll_BFu8s { unsigned short :0; unsigned long long v1:16; unsigned short v2:8; };
struct BFu0s_BFu16ll_BFu9i { unsigned short :0; unsigned long long v1:16; unsigned int v2:9; };
struct BFu0s_BFu16ll_BFu9ll { unsigned short :0; unsigned long long v1:16; unsigned long long v2:9; };
struct BFu0s_BFu16ll_BFu9s { unsigned short :0; unsigned long long v1:16; unsigned short v2:9; };
struct BFu0s_BFu16ll_C { unsigned short :0; unsigned long long v1:16; char v2; };
struct BFu0s_BFu16ll_D { unsigned short :0; unsigned long long v1:16; double v2; };
struct BFu0s_BFu16ll_F { unsigned short :0; unsigned long long v1:16; float v2; };
struct BFu0s_BFu16ll_I { unsigned short :0; unsigned long long v1:16; int v2; };
struct BFu0s_BFu16ll_Ip { unsigned short :0; unsigned long long v1:16; int * v2; };
struct BFu0s_BFu16ll_L { unsigned short :0; unsigned long long v1:16; long long v2; };
struct BFu0s_BFu16ll_S { unsigned short :0; unsigned long long v1:16; short v2; };
struct BFu0s_BFu16ll_Uc { unsigned short :0; unsigned long long v1:16; unsigned char v2; };
struct BFu0s_BFu16ll_Ui { unsigned short :0; unsigned long long v1:16; unsigned int v2; };
struct BFu0s_BFu16ll_Ul { unsigned short :0; unsigned long long v1:16; unsigned long long v2; };
struct BFu0s_BFu16ll_Us { unsigned short :0; unsigned long long v1:16; unsigned short v2; };
struct BFu0s_BFu16ll_Vp { unsigned short :0; unsigned long long v1:16; void * v2; };
struct BFu0s_BFu16s { unsigned short :0; unsigned short v1:16; };
struct BFu0s_BFu16s_BFu0c { unsigned short :0; unsigned short v1:16; unsigned char :0; };
struct BFu0s_BFu16s_BFu0i { unsigned short :0; unsigned short v1:16; unsigned int :0; };
struct BFu0s_BFu16s_BFu0ll { unsigned short :0; unsigned short v1:16; unsigned long long :0; };
struct BFu0s_BFu16s_BFu0s { unsigned short :0; unsigned short v1:16; unsigned short :0; };
struct BFu0s_BFu16s_BFu15i { unsigned short :0; unsigned short v1:16; unsigned int v2:15; };
struct BFu0s_BFu16s_BFu15ll { unsigned short :0; unsigned short v1:16; unsigned long long v2:15; };
struct BFu0s_BFu16s_BFu15s { unsigned short :0; unsigned short v1:16; unsigned short v2:15; };
struct BFu0s_BFu16s_BFu16i { unsigned short :0; unsigned short v1:16; unsigned int v2:16; };
struct BFu0s_BFu16s_BFu16ll { unsigned short :0; unsigned short v1:16; unsigned long long v2:16; };
struct BFu0s_BFu16s_BFu16s { unsigned short :0; unsigned short v1:16; unsigned short v2:16; };
struct BFu0s_BFu16s_BFu17i { unsigned short :0; unsigned short v1:16; unsigned int v2:17; };
struct BFu0s_BFu16s_BFu17ll { unsigned short :0; unsigned short v1:16; unsigned long long v2:17; };
struct BFu0s_BFu16s_BFu1c { unsigned short :0; unsigned short v1:16; unsigned char v2:1; };
struct BFu0s_BFu16s_BFu1i { unsigned short :0; unsigned short v1:16; unsigned int v2:1; };
struct BFu0s_BFu16s_BFu1ll { unsigned short :0; unsigned short v1:16; unsigned long long v2:1; };
struct BFu0s_BFu16s_BFu1s { unsigned short :0; unsigned short v1:16; unsigned short v2:1; };
struct BFu0s_BFu16s_BFu31i { unsigned short :0; unsigned short v1:16; unsigned int v2:31; };
struct BFu0s_BFu16s_BFu31ll { unsigned short :0; unsigned short v1:16; unsigned long long v2:31; };
struct BFu0s_BFu16s_BFu32i { unsigned short :0; unsigned short v1:16; unsigned int v2:32; };
struct BFu0s_BFu16s_BFu32ll { unsigned short :0; unsigned short v1:16; unsigned long long v2:32; };
struct BFu0s_BFu16s_BFu33 { unsigned short :0; unsigned short v1:16; unsigned long long v2:33; };
struct BFu0s_BFu16s_BFu7c { unsigned short :0; unsigned short v1:16; unsigned char v2:7; };
struct BFu0s_BFu16s_BFu7i { unsigned short :0; unsigned short v1:16; unsigned int v2:7; };
struct BFu0s_BFu16s_BFu7ll { unsigned short :0; unsigned short v1:16; unsigned long long v2:7; };
struct BFu0s_BFu16s_BFu7s { unsigned short :0; unsigned short v1:16; unsigned short v2:7; };
struct BFu0s_BFu16s_BFu8c { unsigned short :0; unsigned short v1:16; unsigned char v2:8; };
struct BFu0s_BFu16s_BFu8i { unsigned short :0; unsigned short v1:16; unsigned int v2:8; };
struct BFu0s_BFu16s_BFu8ll { unsigned short :0; unsigned short v1:16; unsigned long long v2:8; };
struct BFu0s_BFu16s_BFu8s { unsigned short :0; unsigned short v1:16; unsigned short v2:8; };
struct BFu0s_BFu16s_BFu9i { unsigned short :0; unsigned short v1:16; unsigned int v2:9; };
struct BFu0s_BFu16s_BFu9ll { unsigned short :0; unsigned short v1:16; unsigned long long v2:9; };
struct BFu0s_BFu16s_BFu9s { unsigned short :0; unsigned short v1:16; unsigned short v2:9; };
struct BFu0s_BFu16s_C { unsigned short :0; unsigned short v1:16; char v2; };
struct BFu0s_BFu16s_D { unsigned short :0; unsigned short v1:16; double v2; };
struct BFu0s_BFu16s_F { unsigned short :0; unsigned short v1:16; float v2; };
struct BFu0s_BFu16s_I { unsigned short :0; unsigned short v1:16; int v2; };
struct BFu0s_BFu16s_Ip { unsigned short :0; unsigned short v1:16; int * v2; };
struct BFu0s_BFu16s_L { unsigned short :0; unsigned short v1:16; long long v2; };
struct BFu0s_BFu16s_S { unsigned short :0; unsigned short v1:16; short v2; };
struct BFu0s_BFu16s_Uc { unsigned short :0; unsigned short v1:16; unsigned char v2; };
struct BFu0s_BFu16s_Ui { unsigned short :0; unsigned short v1:16; unsigned int v2; };
struct BFu0s_BFu16s_Ul { unsigned short :0; unsigned short v1:16; unsigned long long v2; };
struct BFu0s_BFu16s_Us { unsigned short :0; unsigned short v1:16; unsigned short v2; };
struct BFu0s_BFu16s_Vp { unsigned short :0; unsigned short v1:16; void * v2; };
struct BFu0s_BFu17i { unsigned short :0; unsigned int v1:17; };
struct BFu0s_BFu17i_BFu0c { unsigned short :0; unsigned int v1:17; unsigned char :0; };
struct BFu0s_BFu17i_BFu0i { unsigned short :0; unsigned int v1:17; unsigned int :0; };
struct BFu0s_BFu17i_BFu0ll { unsigned short :0; unsigned int v1:17; unsigned long long :0; };
struct BFu0s_BFu17i_BFu0s { unsigned short :0; unsigned int v1:17; unsigned short :0; };
struct BFu0s_BFu17i_BFu15i { unsigned short :0; unsigned int v1:17; unsigned int v2:15; };
struct BFu0s_BFu17i_BFu15ll { unsigned short :0; unsigned int v1:17; unsigned long long v2:15; };
struct BFu0s_BFu17i_BFu15s { unsigned short :0; unsigned int v1:17; unsigned short v2:15; };
struct BFu0s_BFu17i_BFu16i { unsigned short :0; unsigned int v1:17; unsigned int v2:16; };
struct BFu0s_BFu17i_BFu16ll { unsigned short :0; unsigned int v1:17; unsigned long long v2:16; };
struct BFu0s_BFu17i_BFu16s { unsigned short :0; unsigned int v1:17; unsigned short v2:16; };
struct BFu0s_BFu17i_BFu17i { unsigned short :0; unsigned int v1:17; unsigned int v2:17; };
struct BFu0s_BFu17i_BFu17ll { unsigned short :0; unsigned int v1:17; unsigned long long v2:17; };
struct BFu0s_BFu17i_BFu1c { unsigned short :0; unsigned int v1:17; unsigned char v2:1; };
struct BFu0s_BFu17i_BFu1i { unsigned short :0; unsigned int v1:17; unsigned int v2:1; };
struct BFu0s_BFu17i_BFu1ll { unsigned short :0; unsigned int v1:17; unsigned long long v2:1; };
struct BFu0s_BFu17i_BFu1s { unsigned short :0; unsigned int v1:17; unsigned short v2:1; };
struct BFu0s_BFu17i_BFu31i { unsigned short :0; unsigned int v1:17; unsigned int v2:31; };
struct BFu0s_BFu17i_BFu31ll { unsigned short :0; unsigned int v1:17; unsigned long long v2:31; };
struct BFu0s_BFu17i_BFu32i { unsigned short :0; unsigned int v1:17; unsigned int v2:32; };
struct BFu0s_BFu17i_BFu32ll { unsigned short :0; unsigned int v1:17; unsigned long long v2:32; };
struct BFu0s_BFu17i_BFu33 { unsigned short :0; unsigned int v1:17; unsigned long long v2:33; };
struct BFu0s_BFu17i_BFu7c { unsigned short :0; unsigned int v1:17; unsigned char v2:7; };
struct BFu0s_BFu17i_BFu7i { unsigned short :0; unsigned int v1:17; unsigned int v2:7; };
struct BFu0s_BFu17i_BFu7ll { unsigned short :0; unsigned int v1:17; unsigned long long v2:7; };
struct BFu0s_BFu17i_BFu7s { unsigned short :0; unsigned int v1:17; unsigned short v2:7; };
struct BFu0s_BFu17i_BFu8c { unsigned short :0; unsigned int v1:17; unsigned char v2:8; };
struct BFu0s_BFu17i_BFu8i { unsigned short :0; unsigned int v1:17; unsigned int v2:8; };
struct BFu0s_BFu17i_BFu8ll { unsigned short :0; unsigned int v1:17; unsigned long long v2:8; };
struct BFu0s_BFu17i_BFu8s { unsigned short :0; unsigned int v1:17; unsigned short v2:8; };
struct BFu0s_BFu17i_BFu9i { unsigned short :0; unsigned int v1:17; unsigned int v2:9; };
struct BFu0s_BFu17i_BFu9ll { unsigned short :0; unsigned int v1:17; unsigned long long v2:9; };
struct BFu0s_BFu17i_BFu9s { unsigned short :0; unsigned int v1:17; unsigned short v2:9; };
struct BFu0s_BFu17i_C { unsigned short :0; unsigned int v1:17; char v2; };
struct BFu0s_BFu17i_D { unsigned short :0; unsigned int v1:17; double v2; };
struct BFu0s_BFu17i_F { unsigned short :0; unsigned int v1:17; float v2; };
struct BFu0s_BFu17i_I { unsigned short :0; unsigned int v1:17; int v2; };
struct BFu0s_BFu17i_Ip { unsigned short :0; unsigned int v1:17; int * v2; };
struct BFu0s_BFu17i_L { unsigned short :0; unsigned int v1:17; long long v2; };
struct BFu0s_BFu17i_S { unsigned short :0; unsigned int v1:17; short v2; };
struct BFu0s_BFu17i_Uc { unsigned short :0; unsigned int v1:17; unsigned char v2; };
struct BFu0s_BFu17i_Ui { unsigned short :0; unsigned int v1:17; unsigned int v2; };
struct BFu0s_BFu17i_Ul { unsigned short :0; unsigned int v1:17; unsigned long long v2; };
struct BFu0s_BFu17i_Us { unsigned short :0; unsigned int v1:17; unsigned short v2; };
struct BFu0s_BFu17i_Vp { unsigned short :0; unsigned int v1:17; void * v2; };
struct BFu0s_BFu17ll { unsigned short :0; unsigned long long v1:17; };
struct BFu0s_BFu17ll_BFu0c { unsigned short :0; unsigned long long v1:17; unsigned char :0; };
struct BFu0s_BFu17ll_BFu0i { unsigned short :0; unsigned long long v1:17; unsigned int :0; };
struct BFu0s_BFu17ll_BFu0ll { unsigned short :0; unsigned long long v1:17; unsigned long long :0; };
struct BFu0s_BFu17ll_BFu0s { unsigned short :0; unsigned long long v1:17; unsigned short :0; };
struct BFu0s_BFu17ll_BFu15i { unsigned short :0; unsigned long long v1:17; unsigned int v2:15; };
struct BFu0s_BFu17ll_BFu15ll { unsigned short :0; unsigned long long v1:17; unsigned long long v2:15; };
struct BFu0s_BFu17ll_BFu15s { unsigned short :0; unsigned long long v1:17; unsigned short v2:15; };
struct BFu0s_BFu17ll_BFu16i { unsigned short :0; unsigned long long v1:17; unsigned int v2:16; };
struct BFu0s_BFu17ll_BFu16ll { unsigned short :0; unsigned long long v1:17; unsigned long long v2:16; };
struct BFu0s_BFu17ll_BFu16s { unsigned short :0; unsigned long long v1:17; unsigned short v2:16; };
struct BFu0s_BFu17ll_BFu17i { unsigned short :0; unsigned long long v1:17; unsigned int v2:17; };
struct BFu0s_BFu17ll_BFu17ll { unsigned short :0; unsigned long long v1:17; unsigned long long v2:17; };
struct BFu0s_BFu17ll_BFu1c { unsigned short :0; unsigned long long v1:17; unsigned char v2:1; };
struct BFu0s_BFu17ll_BFu1i { unsigned short :0; unsigned long long v1:17; unsigned int v2:1; };
struct BFu0s_BFu17ll_BFu1ll { unsigned short :0; unsigned long long v1:17; unsigned long long v2:1; };
struct BFu0s_BFu17ll_BFu1s { unsigned short :0; unsigned long long v1:17; unsigned short v2:1; };
struct BFu0s_BFu17ll_BFu31i { unsigned short :0; unsigned long long v1:17; unsigned int v2:31; };
struct BFu0s_BFu17ll_BFu31ll { unsigned short :0; unsigned long long v1:17; unsigned long long v2:31; };
struct BFu0s_BFu17ll_BFu32i { unsigned short :0; unsigned long long v1:17; unsigned int v2:32; };
struct BFu0s_BFu17ll_BFu32ll { unsigned short :0; unsigned long long v1:17; unsigned long long v2:32; };
struct BFu0s_BFu17ll_BFu33 { unsigned short :0; unsigned long long v1:17; unsigned long long v2:33; };
struct BFu0s_BFu17ll_BFu7c { unsigned short :0; unsigned long long v1:17; unsigned char v2:7; };
struct BFu0s_BFu17ll_BFu7i { unsigned short :0; unsigned long long v1:17; unsigned int v2:7; };
struct BFu0s_BFu17ll_BFu7ll { unsigned short :0; unsigned long long v1:17; unsigned long long v2:7; };
struct BFu0s_BFu17ll_BFu7s { unsigned short :0; unsigned long long v1:17; unsigned short v2:7; };
struct BFu0s_BFu17ll_BFu8c { unsigned short :0; unsigned long long v1:17; unsigned char v2:8; };
struct BFu0s_BFu17ll_BFu8i { unsigned short :0; unsigned long long v1:17; unsigned int v2:8; };
struct BFu0s_BFu17ll_BFu8ll { unsigned short :0; unsigned long long v1:17; unsigned long long v2:8; };
struct BFu0s_BFu17ll_BFu8s { unsigned short :0; unsigned long long v1:17; unsigned short v2:8; };
struct BFu0s_BFu17ll_BFu9i { unsigned short :0; unsigned long long v1:17; unsigned int v2:9; };
struct BFu0s_BFu17ll_BFu9ll { unsigned short :0; unsigned long long v1:17; unsigned long long v2:9; };
struct BFu0s_BFu17ll_BFu9s { unsigned short :0; unsigned long long v1:17; unsigned short v2:9; };
struct BFu0s_BFu17ll_C { unsigned short :0; unsigned long long v1:17; char v2; };
struct BFu0s_BFu17ll_D { unsigned short :0; unsigned long long v1:17; double v2; };
struct BFu0s_BFu17ll_F { unsigned short :0; unsigned long long v1:17; float v2; };
struct BFu0s_BFu17ll_I { unsigned short :0; unsigned long long v1:17; int v2; };
struct BFu0s_BFu17ll_Ip { unsigned short :0; unsigned long long v1:17; int * v2; };
struct BFu0s_BFu17ll_L { unsigned short :0; unsigned long long v1:17; long long v2; };
struct BFu0s_BFu17ll_S { unsigned short :0; unsigned long long v1:17; short v2; };
struct BFu0s_BFu17ll_Uc { unsigned short :0; unsigned long long v1:17; unsigned char v2; };
struct BFu0s_BFu17ll_Ui { unsigned short :0; unsigned long long v1:17; unsigned int v2; };
struct BFu0s_BFu17ll_Ul { unsigned short :0; unsigned long long v1:17; unsigned long long v2; };
struct BFu0s_BFu17ll_Us { unsigned short :0; unsigned long long v1:17; unsigned short v2; };
struct BFu0s_BFu17ll_Vp { unsigned short :0; unsigned long long v1:17; void * v2; };
struct BFu0s_BFu1c { unsigned short :0; unsigned char v1:1; };
struct BFu0s_BFu1c_BFu0c { unsigned short :0; unsigned char v1:1; unsigned char :0; };
struct BFu0s_BFu1c_BFu0i { unsigned short :0; unsigned char v1:1; unsigned int :0; };
struct BFu0s_BFu1c_BFu0ll { unsigned short :0; unsigned char v1:1; unsigned long long :0; };
struct BFu0s_BFu1c_BFu0s { unsigned short :0; unsigned char v1:1; unsigned short :0; };
struct BFu0s_BFu1c_BFu15i { unsigned short :0; unsigned char v1:1; unsigned int v2:15; };
struct BFu0s_BFu1c_BFu15ll { unsigned short :0; unsigned char v1:1; unsigned long long v2:15; };
struct BFu0s_BFu1c_BFu15s { unsigned short :0; unsigned char v1:1; unsigned short v2:15; };
struct BFu0s_BFu1c_BFu16i { unsigned short :0; unsigned char v1:1; unsigned int v2:16; };
struct BFu0s_BFu1c_BFu16ll { unsigned short :0; unsigned char v1:1; unsigned long long v2:16; };
struct BFu0s_BFu1c_BFu16s { unsigned short :0; unsigned char v1:1; unsigned short v2:16; };
struct BFu0s_BFu1c_BFu17i { unsigned short :0; unsigned char v1:1; unsigned int v2:17; };
struct BFu0s_BFu1c_BFu17ll { unsigned short :0; unsigned char v1:1; unsigned long long v2:17; };
struct BFu0s_BFu1c_BFu1c { unsigned short :0; unsigned char v1:1; unsigned char v2:1; };
struct BFu0s_BFu1c_BFu1i { unsigned short :0; unsigned char v1:1; unsigned int v2:1; };
struct BFu0s_BFu1c_BFu1ll { unsigned short :0; unsigned char v1:1; unsigned long long v2:1; };
struct BFu0s_BFu1c_BFu1s { unsigned short :0; unsigned char v1:1; unsigned short v2:1; };
struct BFu0s_BFu1c_BFu31i { unsigned short :0; unsigned char v1:1; unsigned int v2:31; };
struct BFu0s_BFu1c_BFu31ll { unsigned short :0; unsigned char v1:1; unsigned long long v2:31; };
struct BFu0s_BFu1c_BFu32i { unsigned short :0; unsigned char v1:1; unsigned int v2:32; };
struct BFu0s_BFu1c_BFu32ll { unsigned short :0; unsigned char v1:1; unsigned long long v2:32; };
struct BFu0s_BFu1c_BFu33 { unsigned short :0; unsigned char v1:1; unsigned long long v2:33; };
struct BFu0s_BFu1c_BFu7c { unsigned short :0; unsigned char v1:1; unsigned char v2:7; };
struct BFu0s_BFu1c_BFu7i { unsigned short :0; unsigned char v1:1; unsigned int v2:7; };
struct BFu0s_BFu1c_BFu7ll { unsigned short :0; unsigned char v1:1; unsigned long long v2:7; };
struct BFu0s_BFu1c_BFu7s { unsigned short :0; unsigned char v1:1; unsigned short v2:7; };
struct BFu0s_BFu1c_BFu8c { unsigned short :0; unsigned char v1:1; unsigned char v2:8; };
struct BFu0s_BFu1c_BFu8i { unsigned short :0; unsigned char v1:1; unsigned int v2:8; };
struct BFu0s_BFu1c_BFu8ll { unsigned short :0; unsigned char v1:1; unsigned long long v2:8; };
struct BFu0s_BFu1c_BFu8s { unsigned short :0; unsigned char v1:1; unsigned short v2:8; };
struct BFu0s_BFu1c_BFu9i { unsigned short :0; unsigned char v1:1; unsigned int v2:9; };
struct BFu0s_BFu1c_BFu9ll { unsigned short :0; unsigned char v1:1; unsigned long long v2:9; };
struct BFu0s_BFu1c_BFu9s { unsigned short :0; unsigned char v1:1; unsigned short v2:9; };
struct BFu0s_BFu1c_C { unsigned short :0; unsigned char v1:1; char v2; };
struct BFu0s_BFu1c_D { unsigned short :0; unsigned char v1:1; double v2; };
struct BFu0s_BFu1c_F { unsigned short :0; unsigned char v1:1; float v2; };
struct BFu0s_BFu1c_I { unsigned short :0; unsigned char v1:1; int v2; };
struct BFu0s_BFu1c_Ip { unsigned short :0; unsigned char v1:1; int * v2; };
struct BFu0s_BFu1c_L { unsigned short :0; unsigned char v1:1; long long v2; };
struct BFu0s_BFu1c_S { unsigned short :0; unsigned char v1:1; short v2; };
struct BFu0s_BFu1c_Uc { unsigned short :0; unsigned char v1:1; unsigned char v2; };
struct BFu0s_BFu1c_Ui { unsigned short :0; unsigned char v1:1; unsigned int v2; };
struct BFu0s_BFu1c_Ul { unsigned short :0; unsigned char v1:1; unsigned long long v2; };
struct BFu0s_BFu1c_Us { unsigned short :0; unsigned char v1:1; unsigned short v2; };
struct BFu0s_BFu1c_Vp { unsigned short :0; unsigned char v1:1; void * v2; };
struct BFu0s_BFu1i { unsigned short :0; unsigned int v1:1; };
struct BFu0s_BFu1i_BFu0c { unsigned short :0; unsigned int v1:1; unsigned char :0; };
struct BFu0s_BFu1i_BFu0i { unsigned short :0; unsigned int v1:1; unsigned int :0; };
struct BFu0s_BFu1i_BFu0ll { unsigned short :0; unsigned int v1:1; unsigned long long :0; };
struct BFu0s_BFu1i_BFu0s { unsigned short :0; unsigned int v1:1; unsigned short :0; };
struct BFu0s_BFu1i_BFu15i { unsigned short :0; unsigned int v1:1; unsigned int v2:15; };
struct BFu0s_BFu1i_BFu15ll { unsigned short :0; unsigned int v1:1; unsigned long long v2:15; };
struct BFu0s_BFu1i_BFu15s { unsigned short :0; unsigned int v1:1; unsigned short v2:15; };
struct BFu0s_BFu1i_BFu16i { unsigned short :0; unsigned int v1:1; unsigned int v2:16; };
struct BFu0s_BFu1i_BFu16ll { unsigned short :0; unsigned int v1:1; unsigned long long v2:16; };
struct BFu0s_BFu1i_BFu16s { unsigned short :0; unsigned int v1:1; unsigned short v2:16; };
struct BFu0s_BFu1i_BFu17i { unsigned short :0; unsigned int v1:1; unsigned int v2:17; };
struct BFu0s_BFu1i_BFu17ll { unsigned short :0; unsigned int v1:1; unsigned long long v2:17; };
struct BFu0s_BFu1i_BFu1c { unsigned short :0; unsigned int v1:1; unsigned char v2:1; };
struct BFu0s_BFu1i_BFu1i { unsigned short :0; unsigned int v1:1; unsigned int v2:1; };
struct BFu0s_BFu1i_BFu1ll { unsigned short :0; unsigned int v1:1; unsigned long long v2:1; };
struct BFu0s_BFu1i_BFu1s { unsigned short :0; unsigned int v1:1; unsigned short v2:1; };
struct BFu0s_BFu1i_BFu31i { unsigned short :0; unsigned int v1:1; unsigned int v2:31; };
struct BFu0s_BFu1i_BFu31ll { unsigned short :0; unsigned int v1:1; unsigned long long v2:31; };
struct BFu0s_BFu1i_BFu32i { unsigned short :0; unsigned int v1:1; unsigned int v2:32; };
struct BFu0s_BFu1i_BFu32ll { unsigned short :0; unsigned int v1:1; unsigned long long v2:32; };
struct BFu0s_BFu1i_BFu33 { unsigned short :0; unsigned int v1:1; unsigned long long v2:33; };
struct BFu0s_BFu1i_BFu7c { unsigned short :0; unsigned int v1:1; unsigned char v2:7; };
struct BFu0s_BFu1i_BFu7i { unsigned short :0; unsigned int v1:1; unsigned int v2:7; };
struct BFu0s_BFu1i_BFu7ll { unsigned short :0; unsigned int v1:1; unsigned long long v2:7; };
struct BFu0s_BFu1i_BFu7s { unsigned short :0; unsigned int v1:1; unsigned short v2:7; };
struct BFu0s_BFu1i_BFu8c { unsigned short :0; unsigned int v1:1; unsigned char v2:8; };
struct BFu0s_BFu1i_BFu8i { unsigned short :0; unsigned int v1:1; unsigned int v2:8; };
struct BFu0s_BFu1i_BFu8ll { unsigned short :0; unsigned int v1:1; unsigned long long v2:8; };
struct BFu0s_BFu1i_BFu8s { unsigned short :0; unsigned int v1:1; unsigned short v2:8; };
struct BFu0s_BFu1i_BFu9i { unsigned short :0; unsigned int v1:1; unsigned int v2:9; };
struct BFu0s_BFu1i_BFu9ll { unsigned short :0; unsigned int v1:1; unsigned long long v2:9; };
struct BFu0s_BFu1i_BFu9s { unsigned short :0; unsigned int v1:1; unsigned short v2:9; };
struct BFu0s_BFu1i_C { unsigned short :0; unsigned int v1:1; char v2; };
struct BFu0s_BFu1i_D { unsigned short :0; unsigned int v1:1; double v2; };
struct BFu0s_BFu1i_F { unsigned short :0; unsigned int v1:1; float v2; };
struct BFu0s_BFu1i_I { unsigned short :0; unsigned int v1:1; int v2; };
struct BFu0s_BFu1i_Ip { unsigned short :0; unsigned int v1:1; int * v2; };
struct BFu0s_BFu1i_L { unsigned short :0; unsigned int v1:1; long long v2; };
struct BFu0s_BFu1i_S { unsigned short :0; unsigned int v1:1; short v2; };
struct BFu0s_BFu1i_Uc { unsigned short :0; unsigned int v1:1; unsigned char v2; };
struct BFu0s_BFu1i_Ui { unsigned short :0; unsigned int v1:1; unsigned int v2; };
struct BFu0s_BFu1i_Ul { unsigned short :0; unsigned int v1:1; unsigned long long v2; };
struct BFu0s_BFu1i_Us { unsigned short :0; unsigned int v1:1; unsigned short v2; };
struct BFu0s_BFu1i_Vp { unsigned short :0; unsigned int v1:1; void * v2; };
struct BFu0s_BFu1ll { unsigned short :0; unsigned long long v1:1; };
struct BFu0s_BFu1ll_BFu0c { unsigned short :0; unsigned long long v1:1; unsigned char :0; };
struct BFu0s_BFu1ll_BFu0i { unsigned short :0; unsigned long long v1:1; unsigned int :0; };
struct BFu0s_BFu1ll_BFu0ll { unsigned short :0; unsigned long long v1:1; unsigned long long :0; };
struct BFu0s_BFu1ll_BFu0s { unsigned short :0; unsigned long long v1:1; unsigned short :0; };
struct BFu0s_BFu1ll_BFu15i { unsigned short :0; unsigned long long v1:1; unsigned int v2:15; };
struct BFu0s_BFu1ll_BFu15ll { unsigned short :0; unsigned long long v1:1; unsigned long long v2:15; };
struct BFu0s_BFu1ll_BFu15s { unsigned short :0; unsigned long long v1:1; unsigned short v2:15; };
struct BFu0s_BFu1ll_BFu16i { unsigned short :0; unsigned long long v1:1; unsigned int v2:16; };
struct BFu0s_BFu1ll_BFu16ll { unsigned short :0; unsigned long long v1:1; unsigned long long v2:16; };
struct BFu0s_BFu1ll_BFu16s { unsigned short :0; unsigned long long v1:1; unsigned short v2:16; };
struct BFu0s_BFu1ll_BFu17i { unsigned short :0; unsigned long long v1:1; unsigned int v2:17; };
struct BFu0s_BFu1ll_BFu17ll { unsigned short :0; unsigned long long v1:1; unsigned long long v2:17; };
struct BFu0s_BFu1ll_BFu1c { unsigned short :0; unsigned long long v1:1; unsigned char v2:1; };
struct BFu0s_BFu1ll_BFu1i { unsigned short :0; unsigned long long v1:1; unsigned int v2:1; };
struct BFu0s_BFu1ll_BFu1ll { unsigned short :0; unsigned long long v1:1; unsigned long long v2:1; };
struct BFu0s_BFu1ll_BFu1s { unsigned short :0; unsigned long long v1:1; unsigned short v2:1; };
struct BFu0s_BFu1ll_BFu31i { unsigned short :0; unsigned long long v1:1; unsigned int v2:31; };
struct BFu0s_BFu1ll_BFu31ll { unsigned short :0; unsigned long long v1:1; unsigned long long v2:31; };
struct BFu0s_BFu1ll_BFu32i { unsigned short :0; unsigned long long v1:1; unsigned int v2:32; };
struct BFu0s_BFu1ll_BFu32ll { unsigned short :0; unsigned long long v1:1; unsigned long long v2:32; };
struct BFu0s_BFu1ll_BFu33 { unsigned short :0; unsigned long long v1:1; unsigned long long v2:33; };
struct BFu0s_BFu1ll_BFu7c { unsigned short :0; unsigned long long v1:1; unsigned char v2:7; };
struct BFu0s_BFu1ll_BFu7i { unsigned short :0; unsigned long long v1:1; unsigned int v2:7; };
struct BFu0s_BFu1ll_BFu7ll { unsigned short :0; unsigned long long v1:1; unsigned long long v2:7; };
struct BFu0s_BFu1ll_BFu7s { unsigned short :0; unsigned long long v1:1; unsigned short v2:7; };
struct BFu0s_BFu1ll_BFu8c { unsigned short :0; unsigned long long v1:1; unsigned char v2:8; };
struct BFu0s_BFu1ll_BFu8i { unsigned short :0; unsigned long long v1:1; unsigned int v2:8; };
struct BFu0s_BFu1ll_BFu8ll { unsigned short :0; unsigned long long v1:1; unsigned long long v2:8; };
struct BFu0s_BFu1ll_BFu8s { unsigned short :0; unsigned long long v1:1; unsigned short v2:8; };
struct BFu0s_BFu1ll_BFu9i { unsigned short :0; unsigned long long v1:1; unsigned int v2:9; };
struct BFu0s_BFu1ll_BFu9ll { unsigned short :0; unsigned long long v1:1; unsigned long long v2:9; };
struct BFu0s_BFu1ll_BFu9s { unsigned short :0; unsigned long long v1:1; unsigned short v2:9; };
struct BFu0s_BFu1ll_C { unsigned short :0; unsigned long long v1:1; char v2; };
struct BFu0s_BFu1ll_D { unsigned short :0; unsigned long long v1:1; double v2; };
struct BFu0s_BFu1ll_F { unsigned short :0; unsigned long long v1:1; float v2; };
struct BFu0s_BFu1ll_I { unsigned short :0; unsigned long long v1:1; int v2; };
struct BFu0s_BFu1ll_Ip { unsigned short :0; unsigned long long v1:1; int * v2; };
struct BFu0s_BFu1ll_L { unsigned short :0; unsigned long long v1:1; long long v2; };
struct BFu0s_BFu1ll_S { unsigned short :0; unsigned long long v1:1; short v2; };
struct BFu0s_BFu1ll_Uc { unsigned short :0; unsigned long long v1:1; unsigned char v2; };
struct BFu0s_BFu1ll_Ui { unsigned short :0; unsigned long long v1:1; unsigned int v2; };
struct BFu0s_BFu1ll_Ul { unsigned short :0; unsigned long long v1:1; unsigned long long v2; };
struct BFu0s_BFu1ll_Us { unsigned short :0; unsigned long long v1:1; unsigned short v2; };
struct BFu0s_BFu1ll_Vp { unsigned short :0; unsigned long long v1:1; void * v2; };
struct BFu0s_BFu1s { unsigned short :0; unsigned short v1:1; };
struct BFu0s_BFu1s_BFu0c { unsigned short :0; unsigned short v1:1; unsigned char :0; };
struct BFu0s_BFu1s_BFu0i { unsigned short :0; unsigned short v1:1; unsigned int :0; };
struct BFu0s_BFu1s_BFu0ll { unsigned short :0; unsigned short v1:1; unsigned long long :0; };
struct BFu0s_BFu1s_BFu0s { unsigned short :0; unsigned short v1:1; unsigned short :0; };
struct BFu0s_BFu1s_BFu15i { unsigned short :0; unsigned short v1:1; unsigned int v2:15; };
struct BFu0s_BFu1s_BFu15ll { unsigned short :0; unsigned short v1:1; unsigned long long v2:15; };
struct BFu0s_BFu1s_BFu15s { unsigned short :0; unsigned short v1:1; unsigned short v2:15; };
struct BFu0s_BFu1s_BFu16i { unsigned short :0; unsigned short v1:1; unsigned int v2:16; };
struct BFu0s_BFu1s_BFu16ll { unsigned short :0; unsigned short v1:1; unsigned long long v2:16; };
struct BFu0s_BFu1s_BFu16s { unsigned short :0; unsigned short v1:1; unsigned short v2:16; };
struct BFu0s_BFu1s_BFu17i { unsigned short :0; unsigned short v1:1; unsigned int v2:17; };
struct BFu0s_BFu1s_BFu17ll { unsigned short :0; unsigned short v1:1; unsigned long long v2:17; };
struct BFu0s_BFu1s_BFu1c { unsigned short :0; unsigned short v1:1; unsigned char v2:1; };
struct BFu0s_BFu1s_BFu1i { unsigned short :0; unsigned short v1:1; unsigned int v2:1; };
struct BFu0s_BFu1s_BFu1ll { unsigned short :0; unsigned short v1:1; unsigned long long v2:1; };
struct BFu0s_BFu1s_BFu1s { unsigned short :0; unsigned short v1:1; unsigned short v2:1; };
struct BFu0s_BFu1s_BFu31i { unsigned short :0; unsigned short v1:1; unsigned int v2:31; };
struct BFu0s_BFu1s_BFu31ll { unsigned short :0; unsigned short v1:1; unsigned long long v2:31; };
struct BFu0s_BFu1s_BFu32i { unsigned short :0; unsigned short v1:1; unsigned int v2:32; };
struct BFu0s_BFu1s_BFu32ll { unsigned short :0; unsigned short v1:1; unsigned long long v2:32; };
struct BFu0s_BFu1s_BFu33 { unsigned short :0; unsigned short v1:1; unsigned long long v2:33; };
struct BFu0s_BFu1s_BFu7c { unsigned short :0; unsigned short v1:1; unsigned char v2:7; };
struct BFu0s_BFu1s_BFu7i { unsigned short :0; unsigned short v1:1; unsigned int v2:7; };
struct BFu0s_BFu1s_BFu7ll { unsigned short :0; unsigned short v1:1; unsigned long long v2:7; };
struct BFu0s_BFu1s_BFu7s { unsigned short :0; unsigned short v1:1; unsigned short v2:7; };
struct BFu0s_BFu1s_BFu8c { unsigned short :0; unsigned short v1:1; unsigned char v2:8; };
struct BFu0s_BFu1s_BFu8i { unsigned short :0; unsigned short v1:1; unsigned int v2:8; };
struct BFu0s_BFu1s_BFu8ll { unsigned short :0; unsigned short v1:1; unsigned long long v2:8; };
struct BFu0s_BFu1s_BFu8s { unsigned short :0; unsigned short v1:1; unsigned short v2:8; };
struct BFu0s_BFu1s_BFu9i { unsigned short :0; unsigned short v1:1; unsigned int v2:9; };
struct BFu0s_BFu1s_BFu9ll { unsigned short :0; unsigned short v1:1; unsigned long long v2:9; };
struct BFu0s_BFu1s_BFu9s { unsigned short :0; unsigned short v1:1; unsigned short v2:9; };
struct BFu0s_BFu1s_C { unsigned short :0; unsigned short v1:1; char v2; };
struct BFu0s_BFu1s_D { unsigned short :0; unsigned short v1:1; double v2; };
struct BFu0s_BFu1s_F { unsigned short :0; unsigned short v1:1; float v2; };
struct BFu0s_BFu1s_I { unsigned short :0; unsigned short v1:1; int v2; };
struct BFu0s_BFu1s_Ip { unsigned short :0; unsigned short v1:1; int * v2; };
struct BFu0s_BFu1s_L { unsigned short :0; unsigned short v1:1; long long v2; };
struct BFu0s_BFu1s_S { unsigned short :0; unsigned short v1:1; short v2; };
struct BFu0s_BFu1s_Uc { unsigned short :0; unsigned short v1:1; unsigned char v2; };
struct BFu0s_BFu1s_Ui { unsigned short :0; unsigned short v1:1; unsigned int v2; };
struct BFu0s_BFu1s_Ul { unsigned short :0; unsigned short v1:1; unsigned long long v2; };
struct BFu0s_BFu1s_Us { unsigned short :0; unsigned short v1:1; unsigned short v2; };
struct BFu0s_BFu1s_Vp { unsigned short :0; unsigned short v1:1; void * v2; };
struct BFu0s_BFu31i { unsigned short :0; unsigned int v1:31; };
struct BFu0s_BFu31i_BFu0c { unsigned short :0; unsigned int v1:31; unsigned char :0; };
struct BFu0s_BFu31i_BFu0i { unsigned short :0; unsigned int v1:31; unsigned int :0; };
struct BFu0s_BFu31i_BFu0ll { unsigned short :0; unsigned int v1:31; unsigned long long :0; };
struct BFu0s_BFu31i_BFu0s { unsigned short :0; unsigned int v1:31; unsigned short :0; };
struct BFu0s_BFu31i_BFu15i { unsigned short :0; unsigned int v1:31; unsigned int v2:15; };
struct BFu0s_BFu31i_BFu15ll { unsigned short :0; unsigned int v1:31; unsigned long long v2:15; };
struct BFu0s_BFu31i_BFu15s { unsigned short :0; unsigned int v1:31; unsigned short v2:15; };
struct BFu0s_BFu31i_BFu16i { unsigned short :0; unsigned int v1:31; unsigned int v2:16; };
struct BFu0s_BFu31i_BFu16ll { unsigned short :0; unsigned int v1:31; unsigned long long v2:16; };
struct BFu0s_BFu31i_BFu16s { unsigned short :0; unsigned int v1:31; unsigned short v2:16; };
struct BFu0s_BFu31i_BFu17i { unsigned short :0; unsigned int v1:31; unsigned int v2:17; };
struct BFu0s_BFu31i_BFu17ll { unsigned short :0; unsigned int v1:31; unsigned long long v2:17; };
struct BFu0s_BFu31i_BFu1c { unsigned short :0; unsigned int v1:31; unsigned char v2:1; };
struct BFu0s_BFu31i_BFu1i { unsigned short :0; unsigned int v1:31; unsigned int v2:1; };
struct BFu0s_BFu31i_BFu1ll { unsigned short :0; unsigned int v1:31; unsigned long long v2:1; };
struct BFu0s_BFu31i_BFu1s { unsigned short :0; unsigned int v1:31; unsigned short v2:1; };
struct BFu0s_BFu31i_BFu31i { unsigned short :0; unsigned int v1:31; unsigned int v2:31; };
struct BFu0s_BFu31i_BFu31ll { unsigned short :0; unsigned int v1:31; unsigned long long v2:31; };
struct BFu0s_BFu31i_BFu32i { unsigned short :0; unsigned int v1:31; unsigned int v2:32; };
struct BFu0s_BFu31i_BFu32ll { unsigned short :0; unsigned int v1:31; unsigned long long v2:32; };
struct BFu0s_BFu31i_BFu33 { unsigned short :0; unsigned int v1:31; unsigned long long v2:33; };
struct BFu0s_BFu31i_BFu7c { unsigned short :0; unsigned int v1:31; unsigned char v2:7; };
struct BFu0s_BFu31i_BFu7i { unsigned short :0; unsigned int v1:31; unsigned int v2:7; };
struct BFu0s_BFu31i_BFu7ll { unsigned short :0; unsigned int v1:31; unsigned long long v2:7; };
struct BFu0s_BFu31i_BFu7s { unsigned short :0; unsigned int v1:31; unsigned short v2:7; };
struct BFu0s_BFu31i_BFu8c { unsigned short :0; unsigned int v1:31; unsigned char v2:8; };
struct BFu0s_BFu31i_BFu8i { unsigned short :0; unsigned int v1:31; unsigned int v2:8; };
struct BFu0s_BFu31i_BFu8ll { unsigned short :0; unsigned int v1:31; unsigned long long v2:8; };
struct BFu0s_BFu31i_BFu8s { unsigned short :0; unsigned int v1:31; unsigned short v2:8; };
struct BFu0s_BFu31i_BFu9i { unsigned short :0; unsigned int v1:31; unsigned int v2:9; };
struct BFu0s_BFu31i_BFu9ll { unsigned short :0; unsigned int v1:31; unsigned long long v2:9; };
struct BFu0s_BFu31i_BFu9s { unsigned short :0; unsigned int v1:31; unsigned short v2:9; };
struct BFu0s_BFu31i_C { unsigned short :0; unsigned int v1:31; char v2; };
struct BFu0s_BFu31i_D { unsigned short :0; unsigned int v1:31; double v2; };
struct BFu0s_BFu31i_F { unsigned short :0; unsigned int v1:31; float v2; };
struct BFu0s_BFu31i_I { unsigned short :0; unsigned int v1:31; int v2; };
struct BFu0s_BFu31i_Ip { unsigned short :0; unsigned int v1:31; int * v2; };
struct BFu0s_BFu31i_L { unsigned short :0; unsigned int v1:31; long long v2; };
struct BFu0s_BFu31i_S { unsigned short :0; unsigned int v1:31; short v2; };
struct BFu0s_BFu31i_Uc { unsigned short :0; unsigned int v1:31; unsigned char v2; };
struct BFu0s_BFu31i_Ui { unsigned short :0; unsigned int v1:31; unsigned int v2; };
struct BFu0s_BFu31i_Ul { unsigned short :0; unsigned int v1:31; unsigned long long v2; };
struct BFu0s_BFu31i_Us { unsigned short :0; unsigned int v1:31; unsigned short v2; };
struct BFu0s_BFu31i_Vp { unsigned short :0; unsigned int v1:31; void * v2; };
struct BFu0s_BFu31ll { unsigned short :0; unsigned long long v1:31; };
struct BFu0s_BFu31ll_BFu0c { unsigned short :0; unsigned long long v1:31; unsigned char :0; };
struct BFu0s_BFu31ll_BFu0i { unsigned short :0; unsigned long long v1:31; unsigned int :0; };
struct BFu0s_BFu31ll_BFu0ll { unsigned short :0; unsigned long long v1:31; unsigned long long :0; };
struct BFu0s_BFu31ll_BFu0s { unsigned short :0; unsigned long long v1:31; unsigned short :0; };
struct BFu0s_BFu31ll_BFu15i { unsigned short :0; unsigned long long v1:31; unsigned int v2:15; };
struct BFu0s_BFu31ll_BFu15ll { unsigned short :0; unsigned long long v1:31; unsigned long long v2:15; };
struct BFu0s_BFu31ll_BFu15s { unsigned short :0; unsigned long long v1:31; unsigned short v2:15; };
struct BFu0s_BFu31ll_BFu16i { unsigned short :0; unsigned long long v1:31; unsigned int v2:16; };
struct BFu0s_BFu31ll_BFu16ll { unsigned short :0; unsigned long long v1:31; unsigned long long v2:16; };
struct BFu0s_BFu31ll_BFu16s { unsigned short :0; unsigned long long v1:31; unsigned short v2:16; };
struct BFu0s_BFu31ll_BFu17i { unsigned short :0; unsigned long long v1:31; unsigned int v2:17; };
struct BFu0s_BFu31ll_BFu17ll { unsigned short :0; unsigned long long v1:31; unsigned long long v2:17; };
struct BFu0s_BFu31ll_BFu1c { unsigned short :0; unsigned long long v1:31; unsigned char v2:1; };
struct BFu0s_BFu31ll_BFu1i { unsigned short :0; unsigned long long v1:31; unsigned int v2:1; };
struct BFu0s_BFu31ll_BFu1ll { unsigned short :0; unsigned long long v1:31; unsigned long long v2:1; };
struct BFu0s_BFu31ll_BFu1s { unsigned short :0; unsigned long long v1:31; unsigned short v2:1; };
struct BFu0s_BFu31ll_BFu31i { unsigned short :0; unsigned long long v1:31; unsigned int v2:31; };
struct BFu0s_BFu31ll_BFu31ll { unsigned short :0; unsigned long long v1:31; unsigned long long v2:31; };
struct BFu0s_BFu31ll_BFu32i { unsigned short :0; unsigned long long v1:31; unsigned int v2:32; };
struct BFu0s_BFu31ll_BFu32ll { unsigned short :0; unsigned long long v1:31; unsigned long long v2:32; };
struct BFu0s_BFu31ll_BFu33 { unsigned short :0; unsigned long long v1:31; unsigned long long v2:33; };
struct BFu0s_BFu31ll_BFu7c { unsigned short :0; unsigned long long v1:31; unsigned char v2:7; };
struct BFu0s_BFu31ll_BFu7i { unsigned short :0; unsigned long long v1:31; unsigned int v2:7; };
struct BFu0s_BFu31ll_BFu7ll { unsigned short :0; unsigned long long v1:31; unsigned long long v2:7; };
struct BFu0s_BFu31ll_BFu7s { unsigned short :0; unsigned long long v1:31; unsigned short v2:7; };
struct BFu0s_BFu31ll_BFu8c { unsigned short :0; unsigned long long v1:31; unsigned char v2:8; };
struct BFu0s_BFu31ll_BFu8i { unsigned short :0; unsigned long long v1:31; unsigned int v2:8; };
struct BFu0s_BFu31ll_BFu8ll { unsigned short :0; unsigned long long v1:31; unsigned long long v2:8; };
struct BFu0s_BFu31ll_BFu8s { unsigned short :0; unsigned long long v1:31; unsigned short v2:8; };
struct BFu0s_BFu31ll_BFu9i { unsigned short :0; unsigned long long v1:31; unsigned int v2:9; };
struct BFu0s_BFu31ll_BFu9ll { unsigned short :0; unsigned long long v1:31; unsigned long long v2:9; };
struct BFu0s_BFu31ll_BFu9s { unsigned short :0; unsigned long long v1:31; unsigned short v2:9; };
struct BFu0s_BFu31ll_C { unsigned short :0; unsigned long long v1:31; char v2; };
struct BFu0s_BFu31ll_D { unsigned short :0; unsigned long long v1:31; double v2; };
struct BFu0s_BFu31ll_F { unsigned short :0; unsigned long long v1:31; float v2; };
struct BFu0s_BFu31ll_I { unsigned short :0; unsigned long long v1:31; int v2; };
struct BFu0s_BFu31ll_Ip { unsigned short :0; unsigned long long v1:31; int * v2; };
struct BFu0s_BFu31ll_L { unsigned short :0; unsigned long long v1:31; long long v2; };
struct BFu0s_BFu31ll_S { unsigned short :0; unsigned long long v1:31; short v2; };
struct BFu0s_BFu31ll_Uc { unsigned short :0; unsigned long long v1:31; unsigned char v2; };
struct BFu0s_BFu31ll_Ui { unsigned short :0; unsigned long long v1:31; unsigned int v2; };
struct BFu0s_BFu31ll_Ul { unsigned short :0; unsigned long long v1:31; unsigned long long v2; };
struct BFu0s_BFu31ll_Us { unsigned short :0; unsigned long long v1:31; unsigned short v2; };
struct BFu0s_BFu31ll_Vp { unsigned short :0; unsigned long long v1:31; void * v2; };
struct BFu0s_BFu32i { unsigned short :0; unsigned int v1:32; };
struct BFu0s_BFu32i_BFu0c { unsigned short :0; unsigned int v1:32; unsigned char :0; };
struct BFu0s_BFu32i_BFu0i { unsigned short :0; unsigned int v1:32; unsigned int :0; };
struct BFu0s_BFu32i_BFu0ll { unsigned short :0; unsigned int v1:32; unsigned long long :0; };
struct BFu0s_BFu32i_BFu0s { unsigned short :0; unsigned int v1:32; unsigned short :0; };
struct BFu0s_BFu32i_BFu15i { unsigned short :0; unsigned int v1:32; unsigned int v2:15; };
struct BFu0s_BFu32i_BFu15ll { unsigned short :0; unsigned int v1:32; unsigned long long v2:15; };
struct BFu0s_BFu32i_BFu15s { unsigned short :0; unsigned int v1:32; unsigned short v2:15; };
struct BFu0s_BFu32i_BFu16i { unsigned short :0; unsigned int v1:32; unsigned int v2:16; };
struct BFu0s_BFu32i_BFu16ll { unsigned short :0; unsigned int v1:32; unsigned long long v2:16; };
struct BFu0s_BFu32i_BFu16s { unsigned short :0; unsigned int v1:32; unsigned short v2:16; };
struct BFu0s_BFu32i_BFu17i { unsigned short :0; unsigned int v1:32; unsigned int v2:17; };
struct BFu0s_BFu32i_BFu17ll { unsigned short :0; unsigned int v1:32; unsigned long long v2:17; };
struct BFu0s_BFu32i_BFu1c { unsigned short :0; unsigned int v1:32; unsigned char v2:1; };
struct BFu0s_BFu32i_BFu1i { unsigned short :0; unsigned int v1:32; unsigned int v2:1; };
struct BFu0s_BFu32i_BFu1ll { unsigned short :0; unsigned int v1:32; unsigned long long v2:1; };
struct BFu0s_BFu32i_BFu1s { unsigned short :0; unsigned int v1:32; unsigned short v2:1; };
struct BFu0s_BFu32i_BFu31i { unsigned short :0; unsigned int v1:32; unsigned int v2:31; };
struct BFu0s_BFu32i_BFu31ll { unsigned short :0; unsigned int v1:32; unsigned long long v2:31; };
struct BFu0s_BFu32i_BFu32i { unsigned short :0; unsigned int v1:32; unsigned int v2:32; };
struct BFu0s_BFu32i_BFu32ll { unsigned short :0; unsigned int v1:32; unsigned long long v2:32; };
struct BFu0s_BFu32i_BFu33 { unsigned short :0; unsigned int v1:32; unsigned long long v2:33; };
struct BFu0s_BFu32i_BFu7c { unsigned short :0; unsigned int v1:32; unsigned char v2:7; };
struct BFu0s_BFu32i_BFu7i { unsigned short :0; unsigned int v1:32; unsigned int v2:7; };
struct BFu0s_BFu32i_BFu7ll { unsigned short :0; unsigned int v1:32; unsigned long long v2:7; };
struct BFu0s_BFu32i_BFu7s { unsigned short :0; unsigned int v1:32; unsigned short v2:7; };
struct BFu0s_BFu32i_BFu8c { unsigned short :0; unsigned int v1:32; unsigned char v2:8; };
struct BFu0s_BFu32i_BFu8i { unsigned short :0; unsigned int v1:32; unsigned int v2:8; };
struct BFu0s_BFu32i_BFu8ll { unsigned short :0; unsigned int v1:32; unsigned long long v2:8; };
struct BFu0s_BFu32i_BFu8s { unsigned short :0; unsigned int v1:32; unsigned short v2:8; };
struct BFu0s_BFu32i_BFu9i { unsigned short :0; unsigned int v1:32; unsigned int v2:9; };
struct BFu0s_BFu32i_BFu9ll { unsigned short :0; unsigned int v1:32; unsigned long long v2:9; };
struct BFu0s_BFu32i_BFu9s { unsigned short :0; unsigned int v1:32; unsigned short v2:9; };
struct BFu0s_BFu32i_C { unsigned short :0; unsigned int v1:32; char v2; };
struct BFu0s_BFu32i_D { unsigned short :0; unsigned int v1:32; double v2; };
struct BFu0s_BFu32i_F { unsigned short :0; unsigned int v1:32; float v2; };
struct BFu0s_BFu32i_I { unsigned short :0; unsigned int v1:32; int v2; };
struct BFu0s_BFu32i_Ip { unsigned short :0; unsigned int v1:32; int * v2; };
struct BFu0s_BFu32i_L { unsigned short :0; unsigned int v1:32; long long v2; };
struct BFu0s_BFu32i_S { unsigned short :0; unsigned int v1:32; short v2; };
struct BFu0s_BFu32i_Uc { unsigned short :0; unsigned int v1:32; unsigned char v2; };
struct BFu0s_BFu32i_Ui { unsigned short :0; unsigned int v1:32; unsigned int v2; };
struct BFu0s_BFu32i_Ul { unsigned short :0; unsigned int v1:32; unsigned long long v2; };
struct BFu0s_BFu32i_Us { unsigned short :0; unsigned int v1:32; unsigned short v2; };
struct BFu0s_BFu32i_Vp { unsigned short :0; unsigned int v1:32; void * v2; };
struct BFu0s_BFu32ll { unsigned short :0; unsigned long long v1:32; };
struct BFu0s_BFu32ll_BFu0c { unsigned short :0; unsigned long long v1:32; unsigned char :0; };
struct BFu0s_BFu32ll_BFu0i { unsigned short :0; unsigned long long v1:32; unsigned int :0; };
struct BFu0s_BFu32ll_BFu0ll { unsigned short :0; unsigned long long v1:32; unsigned long long :0; };
struct BFu0s_BFu32ll_BFu0s { unsigned short :0; unsigned long long v1:32; unsigned short :0; };
struct BFu0s_BFu32ll_BFu15i { unsigned short :0; unsigned long long v1:32; unsigned int v2:15; };
struct BFu0s_BFu32ll_BFu15ll { unsigned short :0; unsigned long long v1:32; unsigned long long v2:15; };
struct BFu0s_BFu32ll_BFu15s { unsigned short :0; unsigned long long v1:32; unsigned short v2:15; };
struct BFu0s_BFu32ll_BFu16i { unsigned short :0; unsigned long long v1:32; unsigned int v2:16; };
struct BFu0s_BFu32ll_BFu16ll { unsigned short :0; unsigned long long v1:32; unsigned long long v2:16; };
struct BFu0s_BFu32ll_BFu16s { unsigned short :0; unsigned long long v1:32; unsigned short v2:16; };
struct BFu0s_BFu32ll_BFu17i { unsigned short :0; unsigned long long v1:32; unsigned int v2:17; };
struct BFu0s_BFu32ll_BFu17ll { unsigned short :0; unsigned long long v1:32; unsigned long long v2:17; };
struct BFu0s_BFu32ll_BFu1c { unsigned short :0; unsigned long long v1:32; unsigned char v2:1; };
struct BFu0s_BFu32ll_BFu1i { unsigned short :0; unsigned long long v1:32; unsigned int v2:1; };
struct BFu0s_BFu32ll_BFu1ll { unsigned short :0; unsigned long long v1:32; unsigned long long v2:1; };
struct BFu0s_BFu32ll_BFu1s { unsigned short :0; unsigned long long v1:32; unsigned short v2:1; };
struct BFu0s_BFu32ll_BFu31i { unsigned short :0; unsigned long long v1:32; unsigned int v2:31; };
struct BFu0s_BFu32ll_BFu31ll { unsigned short :0; unsigned long long v1:32; unsigned long long v2:31; };
struct BFu0s_BFu32ll_BFu32i { unsigned short :0; unsigned long long v1:32; unsigned int v2:32; };
struct BFu0s_BFu32ll_BFu32ll { unsigned short :0; unsigned long long v1:32; unsigned long long v2:32; };
struct BFu0s_BFu32ll_BFu33 { unsigned short :0; unsigned long long v1:32; unsigned long long v2:33; };
struct BFu0s_BFu32ll_BFu7c { unsigned short :0; unsigned long long v1:32; unsigned char v2:7; };
struct BFu0s_BFu32ll_BFu7i { unsigned short :0; unsigned long long v1:32; unsigned int v2:7; };
struct BFu0s_BFu32ll_BFu7ll { unsigned short :0; unsigned long long v1:32; unsigned long long v2:7; };
struct BFu0s_BFu32ll_BFu7s { unsigned short :0; unsigned long long v1:32; unsigned short v2:7; };
struct BFu0s_BFu32ll_BFu8c { unsigned short :0; unsigned long long v1:32; unsigned char v2:8; };
struct BFu0s_BFu32ll_BFu8i { unsigned short :0; unsigned long long v1:32; unsigned int v2:8; };
struct BFu0s_BFu32ll_BFu8ll { unsigned short :0; unsigned long long v1:32; unsigned long long v2:8; };
struct BFu0s_BFu32ll_BFu8s { unsigned short :0; unsigned long long v1:32; unsigned short v2:8; };
struct BFu0s_BFu32ll_BFu9i { unsigned short :0; unsigned long long v1:32; unsigned int v2:9; };
struct BFu0s_BFu32ll_BFu9ll { unsigned short :0; unsigned long long v1:32; unsigned long long v2:9; };
struct BFu0s_BFu32ll_BFu9s { unsigned short :0; unsigned long long v1:32; unsigned short v2:9; };
struct BFu0s_BFu32ll_C { unsigned short :0; unsigned long long v1:32; char v2; };
struct BFu0s_BFu32ll_D { unsigned short :0; unsigned long long v1:32; double v2; };
struct BFu0s_BFu32ll_F { unsigned short :0; unsigned long long v1:32; float v2; };
struct BFu0s_BFu32ll_I { unsigned short :0; unsigned long long v1:32; int v2; };
struct BFu0s_BFu32ll_Ip { unsigned short :0; unsigned long long v1:32; int * v2; };
struct BFu0s_BFu32ll_L { unsigned short :0; unsigned long long v1:32; long long v2; };
struct BFu0s_BFu32ll_S { unsigned short :0; unsigned long long v1:32; short v2; };
struct BFu0s_BFu32ll_Uc { unsigned short :0; unsigned long long v1:32; unsigned char v2; };
struct BFu0s_BFu32ll_Ui { unsigned short :0; unsigned long long v1:32; unsigned int v2; };
struct BFu0s_BFu32ll_Ul { unsigned short :0; unsigned long long v1:32; unsigned long long v2; };
struct BFu0s_BFu32ll_Us { unsigned short :0; unsigned long long v1:32; unsigned short v2; };
struct BFu0s_BFu32ll_Vp { unsigned short :0; unsigned long long v1:32; void * v2; };
struct BFu0s_BFu33 { unsigned short :0; unsigned long long v1:33; };
struct BFu0s_BFu33_BFu0c { unsigned short :0; unsigned long long v1:33; unsigned char :0; };
struct BFu0s_BFu33_BFu0i { unsigned short :0; unsigned long long v1:33; unsigned int :0; };
struct BFu0s_BFu33_BFu0ll { unsigned short :0; unsigned long long v1:33; unsigned long long :0; };
struct BFu0s_BFu33_BFu0s { unsigned short :0; unsigned long long v1:33; unsigned short :0; };
struct BFu0s_BFu33_BFu15i { unsigned short :0; unsigned long long v1:33; unsigned int v2:15; };
struct BFu0s_BFu33_BFu15ll { unsigned short :0; unsigned long long v1:33; unsigned long long v2:15; };
struct BFu0s_BFu33_BFu15s { unsigned short :0; unsigned long long v1:33; unsigned short v2:15; };
struct BFu0s_BFu33_BFu16i { unsigned short :0; unsigned long long v1:33; unsigned int v2:16; };
struct BFu0s_BFu33_BFu16ll { unsigned short :0; unsigned long long v1:33; unsigned long long v2:16; };
struct BFu0s_BFu33_BFu16s { unsigned short :0; unsigned long long v1:33; unsigned short v2:16; };
struct BFu0s_BFu33_BFu17i { unsigned short :0; unsigned long long v1:33; unsigned int v2:17; };
struct BFu0s_BFu33_BFu17ll { unsigned short :0; unsigned long long v1:33; unsigned long long v2:17; };
struct BFu0s_BFu33_BFu1c { unsigned short :0; unsigned long long v1:33; unsigned char v2:1; };
struct BFu0s_BFu33_BFu1i { unsigned short :0; unsigned long long v1:33; unsigned int v2:1; };
struct BFu0s_BFu33_BFu1ll { unsigned short :0; unsigned long long v1:33; unsigned long long v2:1; };
struct BFu0s_BFu33_BFu1s { unsigned short :0; unsigned long long v1:33; unsigned short v2:1; };
struct BFu0s_BFu33_BFu31i { unsigned short :0; unsigned long long v1:33; unsigned int v2:31; };
struct BFu0s_BFu33_BFu31ll { unsigned short :0; unsigned long long v1:33; unsigned long long v2:31; };
struct BFu0s_BFu33_BFu32i { unsigned short :0; unsigned long long v1:33; unsigned int v2:32; };
struct BFu0s_BFu33_BFu32ll { unsigned short :0; unsigned long long v1:33; unsigned long long v2:32; };
struct BFu0s_BFu33_BFu33 { unsigned short :0; unsigned long long v1:33; unsigned long long v2:33; };
struct BFu0s_BFu33_BFu7c { unsigned short :0; unsigned long long v1:33; unsigned char v2:7; };
struct BFu0s_BFu33_BFu7i { unsigned short :0; unsigned long long v1:33; unsigned int v2:7; };
struct BFu0s_BFu33_BFu7ll { unsigned short :0; unsigned long long v1:33; unsigned long long v2:7; };
struct BFu0s_BFu33_BFu7s { unsigned short :0; unsigned long long v1:33; unsigned short v2:7; };
struct BFu0s_BFu33_BFu8c { unsigned short :0; unsigned long long v1:33; unsigned char v2:8; };
struct BFu0s_BFu33_BFu8i { unsigned short :0; unsigned long long v1:33; unsigned int v2:8; };
struct BFu0s_BFu33_BFu8ll { unsigned short :0; unsigned long long v1:33; unsigned long long v2:8; };
struct BFu0s_BFu33_BFu8s { unsigned short :0; unsigned long long v1:33; unsigned short v2:8; };
struct BFu0s_BFu33_BFu9i { unsigned short :0; unsigned long long v1:33; unsigned int v2:9; };
struct BFu0s_BFu33_BFu9ll { unsigned short :0; unsigned long long v1:33; unsigned long long v2:9; };
struct BFu0s_BFu33_BFu9s { unsigned short :0; unsigned long long v1:33; unsigned short v2:9; };
struct BFu0s_BFu33_C { unsigned short :0; unsigned long long v1:33; char v2; };
struct BFu0s_BFu33_D { unsigned short :0; unsigned long long v1:33; double v2; };
struct BFu0s_BFu33_F { unsigned short :0; unsigned long long v1:33; float v2; };
struct BFu0s_BFu33_I { unsigned short :0; unsigned long long v1:33; int v2; };
struct BFu0s_BFu33_Ip { unsigned short :0; unsigned long long v1:33; int * v2; };
struct BFu0s_BFu33_L { unsigned short :0; unsigned long long v1:33; long long v2; };
struct BFu0s_BFu33_S { unsigned short :0; unsigned long long v1:33; short v2; };
struct BFu0s_BFu33_Uc { unsigned short :0; unsigned long long v1:33; unsigned char v2; };
struct BFu0s_BFu33_Ui { unsigned short :0; unsigned long long v1:33; unsigned int v2; };
struct BFu0s_BFu33_Ul { unsigned short :0; unsigned long long v1:33; unsigned long long v2; };
struct BFu0s_BFu33_Us { unsigned short :0; unsigned long long v1:33; unsigned short v2; };
struct BFu0s_BFu33_Vp { unsigned short :0; unsigned long long v1:33; void * v2; };
struct BFu0s_BFu7c { unsigned short :0; unsigned char v1:7; };
struct BFu0s_BFu7c_BFu0c { unsigned short :0; unsigned char v1:7; unsigned char :0; };
struct BFu0s_BFu7c_BFu0i { unsigned short :0; unsigned char v1:7; unsigned int :0; };
struct BFu0s_BFu7c_BFu0ll { unsigned short :0; unsigned char v1:7; unsigned long long :0; };
struct BFu0s_BFu7c_BFu0s { unsigned short :0; unsigned char v1:7; unsigned short :0; };
struct BFu0s_BFu7c_BFu15i { unsigned short :0; unsigned char v1:7; unsigned int v2:15; };
struct BFu0s_BFu7c_BFu15ll { unsigned short :0; unsigned char v1:7; unsigned long long v2:15; };
struct BFu0s_BFu7c_BFu15s { unsigned short :0; unsigned char v1:7; unsigned short v2:15; };
struct BFu0s_BFu7c_BFu16i { unsigned short :0; unsigned char v1:7; unsigned int v2:16; };
struct BFu0s_BFu7c_BFu16ll { unsigned short :0; unsigned char v1:7; unsigned long long v2:16; };
struct BFu0s_BFu7c_BFu16s { unsigned short :0; unsigned char v1:7; unsigned short v2:16; };
struct BFu0s_BFu7c_BFu17i { unsigned short :0; unsigned char v1:7; unsigned int v2:17; };
struct BFu0s_BFu7c_BFu17ll { unsigned short :0; unsigned char v1:7; unsigned long long v2:17; };
struct BFu0s_BFu7c_BFu1c { unsigned short :0; unsigned char v1:7; unsigned char v2:1; };
struct BFu0s_BFu7c_BFu1i { unsigned short :0; unsigned char v1:7; unsigned int v2:1; };
struct BFu0s_BFu7c_BFu1ll { unsigned short :0; unsigned char v1:7; unsigned long long v2:1; };
struct BFu0s_BFu7c_BFu1s { unsigned short :0; unsigned char v1:7; unsigned short v2:1; };
struct BFu0s_BFu7c_BFu31i { unsigned short :0; unsigned char v1:7; unsigned int v2:31; };
struct BFu0s_BFu7c_BFu31ll { unsigned short :0; unsigned char v1:7; unsigned long long v2:31; };
struct BFu0s_BFu7c_BFu32i { unsigned short :0; unsigned char v1:7; unsigned int v2:32; };
struct BFu0s_BFu7c_BFu32ll { unsigned short :0; unsigned char v1:7; unsigned long long v2:32; };
struct BFu0s_BFu7c_BFu33 { unsigned short :0; unsigned char v1:7; unsigned long long v2:33; };
struct BFu0s_BFu7c_BFu7c { unsigned short :0; unsigned char v1:7; unsigned char v2:7; };
struct BFu0s_BFu7c_BFu7i { unsigned short :0; unsigned char v1:7; unsigned int v2:7; };
struct BFu0s_BFu7c_BFu7ll { unsigned short :0; unsigned char v1:7; unsigned long long v2:7; };
struct BFu0s_BFu7c_BFu7s { unsigned short :0; unsigned char v1:7; unsigned short v2:7; };
struct BFu0s_BFu7c_BFu8c { unsigned short :0; unsigned char v1:7; unsigned char v2:8; };
struct BFu0s_BFu7c_BFu8i { unsigned short :0; unsigned char v1:7; unsigned int v2:8; };
struct BFu0s_BFu7c_BFu8ll { unsigned short :0; unsigned char v1:7; unsigned long long v2:8; };
struct BFu0s_BFu7c_BFu8s { unsigned short :0; unsigned char v1:7; unsigned short v2:8; };
struct BFu0s_BFu7c_BFu9i { unsigned short :0; unsigned char v1:7; unsigned int v2:9; };
struct BFu0s_BFu7c_BFu9ll { unsigned short :0; unsigned char v1:7; unsigned long long v2:9; };
struct BFu0s_BFu7c_BFu9s { unsigned short :0; unsigned char v1:7; unsigned short v2:9; };
struct BFu0s_BFu7c_C { unsigned short :0; unsigned char v1:7; char v2; };
struct BFu0s_BFu7c_D { unsigned short :0; unsigned char v1:7; double v2; };
struct BFu0s_BFu7c_F { unsigned short :0; unsigned char v1:7; float v2; };
struct BFu0s_BFu7c_I { unsigned short :0; unsigned char v1:7; int v2; };
struct BFu0s_BFu7c_Ip { unsigned short :0; unsigned char v1:7; int * v2; };
struct BFu0s_BFu7c_L { unsigned short :0; unsigned char v1:7; long long v2; };
struct BFu0s_BFu7c_S { unsigned short :0; unsigned char v1:7; short v2; };
struct BFu0s_BFu7c_Uc { unsigned short :0; unsigned char v1:7; unsigned char v2; };
struct BFu0s_BFu7c_Ui { unsigned short :0; unsigned char v1:7; unsigned int v2; };
struct BFu0s_BFu7c_Ul { unsigned short :0; unsigned char v1:7; unsigned long long v2; };
struct BFu0s_BFu7c_Us { unsigned short :0; unsigned char v1:7; unsigned short v2; };
struct BFu0s_BFu7c_Vp { unsigned short :0; unsigned char v1:7; void * v2; };
struct BFu0s_BFu7i { unsigned short :0; unsigned int v1:7; };
struct BFu0s_BFu7i_BFu0c { unsigned short :0; unsigned int v1:7; unsigned char :0; };
struct BFu0s_BFu7i_BFu0i { unsigned short :0; unsigned int v1:7; unsigned int :0; };
struct BFu0s_BFu7i_BFu0ll { unsigned short :0; unsigned int v1:7; unsigned long long :0; };
struct BFu0s_BFu7i_BFu0s { unsigned short :0; unsigned int v1:7; unsigned short :0; };
struct BFu0s_BFu7i_BFu15i { unsigned short :0; unsigned int v1:7; unsigned int v2:15; };
struct BFu0s_BFu7i_BFu15ll { unsigned short :0; unsigned int v1:7; unsigned long long v2:15; };
struct BFu0s_BFu7i_BFu15s { unsigned short :0; unsigned int v1:7; unsigned short v2:15; };
struct BFu0s_BFu7i_BFu16i { unsigned short :0; unsigned int v1:7; unsigned int v2:16; };
struct BFu0s_BFu7i_BFu16ll { unsigned short :0; unsigned int v1:7; unsigned long long v2:16; };
struct BFu0s_BFu7i_BFu16s { unsigned short :0; unsigned int v1:7; unsigned short v2:16; };
struct BFu0s_BFu7i_BFu17i { unsigned short :0; unsigned int v1:7; unsigned int v2:17; };
struct BFu0s_BFu7i_BFu17ll { unsigned short :0; unsigned int v1:7; unsigned long long v2:17; };
struct BFu0s_BFu7i_BFu1c { unsigned short :0; unsigned int v1:7; unsigned char v2:1; };
struct BFu0s_BFu7i_BFu1i { unsigned short :0; unsigned int v1:7; unsigned int v2:1; };
struct BFu0s_BFu7i_BFu1ll { unsigned short :0; unsigned int v1:7; unsigned long long v2:1; };
struct BFu0s_BFu7i_BFu1s { unsigned short :0; unsigned int v1:7; unsigned short v2:1; };
struct BFu0s_BFu7i_BFu31i { unsigned short :0; unsigned int v1:7; unsigned int v2:31; };
struct BFu0s_BFu7i_BFu31ll { unsigned short :0; unsigned int v1:7; unsigned long long v2:31; };
struct BFu0s_BFu7i_BFu32i { unsigned short :0; unsigned int v1:7; unsigned int v2:32; };
struct BFu0s_BFu7i_BFu32ll { unsigned short :0; unsigned int v1:7; unsigned long long v2:32; };
struct BFu0s_BFu7i_BFu33 { unsigned short :0; unsigned int v1:7; unsigned long long v2:33; };
struct BFu0s_BFu7i_BFu7c { unsigned short :0; unsigned int v1:7; unsigned char v2:7; };
struct BFu0s_BFu7i_BFu7i { unsigned short :0; unsigned int v1:7; unsigned int v2:7; };
struct BFu0s_BFu7i_BFu7ll { unsigned short :0; unsigned int v1:7; unsigned long long v2:7; };
struct BFu0s_BFu7i_BFu7s { unsigned short :0; unsigned int v1:7; unsigned short v2:7; };
struct BFu0s_BFu7i_BFu8c { unsigned short :0; unsigned int v1:7; unsigned char v2:8; };
struct BFu0s_BFu7i_BFu8i { unsigned short :0; unsigned int v1:7; unsigned int v2:8; };
struct BFu0s_BFu7i_BFu8ll { unsigned short :0; unsigned int v1:7; unsigned long long v2:8; };
struct BFu0s_BFu7i_BFu8s { unsigned short :0; unsigned int v1:7; unsigned short v2:8; };
struct BFu0s_BFu7i_BFu9i { unsigned short :0; unsigned int v1:7; unsigned int v2:9; };
struct BFu0s_BFu7i_BFu9ll { unsigned short :0; unsigned int v1:7; unsigned long long v2:9; };
struct BFu0s_BFu7i_BFu9s { unsigned short :0; unsigned int v1:7; unsigned short v2:9; };
struct BFu0s_BFu7i_C { unsigned short :0; unsigned int v1:7; char v2; };
struct BFu0s_BFu7i_D { unsigned short :0; unsigned int v1:7; double v2; };
struct BFu0s_BFu7i_F { unsigned short :0; unsigned int v1:7; float v2; };
struct BFu0s_BFu7i_I { unsigned short :0; unsigned int v1:7; int v2; };
struct BFu0s_BFu7i_Ip { unsigned short :0; unsigned int v1:7; int * v2; };
struct BFu0s_BFu7i_L { unsigned short :0; unsigned int v1:7; long long v2; };
struct BFu0s_BFu7i_S { unsigned short :0; unsigned int v1:7; short v2; };
struct BFu0s_BFu7i_Uc { unsigned short :0; unsigned int v1:7; unsigned char v2; };
struct BFu0s_BFu7i_Ui { unsigned short :0; unsigned int v1:7; unsigned int v2; };
struct BFu0s_BFu7i_Ul { unsigned short :0; unsigned int v1:7; unsigned long long v2; };
struct BFu0s_BFu7i_Us { unsigned short :0; unsigned int v1:7; unsigned short v2; };
struct BFu0s_BFu7i_Vp { unsigned short :0; unsigned int v1:7; void * v2; };
struct BFu0s_BFu7ll { unsigned short :0; unsigned long long v1:7; };
struct BFu0s_BFu7ll_BFu0c { unsigned short :0; unsigned long long v1:7; unsigned char :0; };
struct BFu0s_BFu7ll_BFu0i { unsigned short :0; unsigned long long v1:7; unsigned int :0; };
struct BFu0s_BFu7ll_BFu0ll { unsigned short :0; unsigned long long v1:7; unsigned long long :0; };
struct BFu0s_BFu7ll_BFu0s { unsigned short :0; unsigned long long v1:7; unsigned short :0; };
struct BFu0s_BFu7ll_BFu15i { unsigned short :0; unsigned long long v1:7; unsigned int v2:15; };
struct BFu0s_BFu7ll_BFu15ll { unsigned short :0; unsigned long long v1:7; unsigned long long v2:15; };
struct BFu0s_BFu7ll_BFu15s { unsigned short :0; unsigned long long v1:7; unsigned short v2:15; };
struct BFu0s_BFu7ll_BFu16i { unsigned short :0; unsigned long long v1:7; unsigned int v2:16; };
struct BFu0s_BFu7ll_BFu16ll { unsigned short :0; unsigned long long v1:7; unsigned long long v2:16; };
struct BFu0s_BFu7ll_BFu16s { unsigned short :0; unsigned long long v1:7; unsigned short v2:16; };
struct BFu0s_BFu7ll_BFu17i { unsigned short :0; unsigned long long v1:7; unsigned int v2:17; };
struct BFu0s_BFu7ll_BFu17ll { unsigned short :0; unsigned long long v1:7; unsigned long long v2:17; };
struct BFu0s_BFu7ll_BFu1c { unsigned short :0; unsigned long long v1:7; unsigned char v2:1; };
struct BFu0s_BFu7ll_BFu1i { unsigned short :0; unsigned long long v1:7; unsigned int v2:1; };
struct BFu0s_BFu7ll_BFu1ll { unsigned short :0; unsigned long long v1:7; unsigned long long v2:1; };
struct BFu0s_BFu7ll_BFu1s { unsigned short :0; unsigned long long v1:7; unsigned short v2:1; };
struct BFu0s_BFu7ll_BFu31i { unsigned short :0; unsigned long long v1:7; unsigned int v2:31; };
struct BFu0s_BFu7ll_BFu31ll { unsigned short :0; unsigned long long v1:7; unsigned long long v2:31; };
struct BFu0s_BFu7ll_BFu32i { unsigned short :0; unsigned long long v1:7; unsigned int v2:32; };
struct BFu0s_BFu7ll_BFu32ll { unsigned short :0; unsigned long long v1:7; unsigned long long v2:32; };
struct BFu0s_BFu7ll_BFu33 { unsigned short :0; unsigned long long v1:7; unsigned long long v2:33; };
struct BFu0s_BFu7ll_BFu7c { unsigned short :0; unsigned long long v1:7; unsigned char v2:7; };
struct BFu0s_BFu7ll_BFu7i { unsigned short :0; unsigned long long v1:7; unsigned int v2:7; };
struct BFu0s_BFu7ll_BFu7ll { unsigned short :0; unsigned long long v1:7; unsigned long long v2:7; };
struct BFu0s_BFu7ll_BFu7s { unsigned short :0; unsigned long long v1:7; unsigned short v2:7; };
struct BFu0s_BFu7ll_BFu8c { unsigned short :0; unsigned long long v1:7; unsigned char v2:8; };
struct BFu0s_BFu7ll_BFu8i { unsigned short :0; unsigned long long v1:7; unsigned int v2:8; };
struct BFu0s_BFu7ll_BFu8ll { unsigned short :0; unsigned long long v1:7; unsigned long long v2:8; };
struct BFu0s_BFu7ll_BFu8s { unsigned short :0; unsigned long long v1:7; unsigned short v2:8; };
struct BFu0s_BFu7ll_BFu9i { unsigned short :0; unsigned long long v1:7; unsigned int v2:9; };
struct BFu0s_BFu7ll_BFu9ll { unsigned short :0; unsigned long long v1:7; unsigned long long v2:9; };
struct BFu0s_BFu7ll_BFu9s { unsigned short :0; unsigned long long v1:7; unsigned short v2:9; };
struct BFu0s_BFu7ll_C { unsigned short :0; unsigned long long v1:7; char v2; };
struct BFu0s_BFu7ll_D { unsigned short :0; unsigned long long v1:7; double v2; };
struct BFu0s_BFu7ll_F { unsigned short :0; unsigned long long v1:7; float v2; };
struct BFu0s_BFu7ll_I { unsigned short :0; unsigned long long v1:7; int v2; };
struct BFu0s_BFu7ll_Ip { unsigned short :0; unsigned long long v1:7; int * v2; };
struct BFu0s_BFu7ll_L { unsigned short :0; unsigned long long v1:7; long long v2; };
struct BFu0s_BFu7ll_S { unsigned short :0; unsigned long long v1:7; short v2; };
struct BFu0s_BFu7ll_Uc { unsigned short :0; unsigned long long v1:7; unsigned char v2; };
struct BFu0s_BFu7ll_Ui { unsigned short :0; unsigned long long v1:7; unsigned int v2; };
struct BFu0s_BFu7ll_Ul { unsigned short :0; unsigned long long v1:7; unsigned long long v2; };
struct BFu0s_BFu7ll_Us { unsigned short :0; unsigned long long v1:7; unsigned short v2; };
struct BFu0s_BFu7ll_Vp { unsigned short :0; unsigned long long v1:7; void * v2; };
struct BFu0s_BFu7s { unsigned short :0; unsigned short v1:7; };
struct BFu0s_BFu7s_BFu0c { unsigned short :0; unsigned short v1:7; unsigned char :0; };
struct BFu0s_BFu7s_BFu0i { unsigned short :0; unsigned short v1:7; unsigned int :0; };
struct BFu0s_BFu7s_BFu0ll { unsigned short :0; unsigned short v1:7; unsigned long long :0; };
struct BFu0s_BFu7s_BFu0s { unsigned short :0; unsigned short v1:7; unsigned short :0; };
struct BFu0s_BFu7s_BFu15i { unsigned short :0; unsigned short v1:7; unsigned int v2:15; };
struct BFu0s_BFu7s_BFu15ll { unsigned short :0; unsigned short v1:7; unsigned long long v2:15; };
struct BFu0s_BFu7s_BFu15s { unsigned short :0; unsigned short v1:7; unsigned short v2:15; };
struct BFu0s_BFu7s_BFu16i { unsigned short :0; unsigned short v1:7; unsigned int v2:16; };
struct BFu0s_BFu7s_BFu16ll { unsigned short :0; unsigned short v1:7; unsigned long long v2:16; };
struct BFu0s_BFu7s_BFu16s { unsigned short :0; unsigned short v1:7; unsigned short v2:16; };
struct BFu0s_BFu7s_BFu17i { unsigned short :0; unsigned short v1:7; unsigned int v2:17; };
struct BFu0s_BFu7s_BFu17ll { unsigned short :0; unsigned short v1:7; unsigned long long v2:17; };
struct BFu0s_BFu7s_BFu1c { unsigned short :0; unsigned short v1:7; unsigned char v2:1; };
struct BFu0s_BFu7s_BFu1i { unsigned short :0; unsigned short v1:7; unsigned int v2:1; };
struct BFu0s_BFu7s_BFu1ll { unsigned short :0; unsigned short v1:7; unsigned long long v2:1; };
struct BFu0s_BFu7s_BFu1s { unsigned short :0; unsigned short v1:7; unsigned short v2:1; };
struct BFu0s_BFu7s_BFu31i { unsigned short :0; unsigned short v1:7; unsigned int v2:31; };
struct BFu0s_BFu7s_BFu31ll { unsigned short :0; unsigned short v1:7; unsigned long long v2:31; };
struct BFu0s_BFu7s_BFu32i { unsigned short :0; unsigned short v1:7; unsigned int v2:32; };
struct BFu0s_BFu7s_BFu32ll { unsigned short :0; unsigned short v1:7; unsigned long long v2:32; };
struct BFu0s_BFu7s_BFu33 { unsigned short :0; unsigned short v1:7; unsigned long long v2:33; };
struct BFu0s_BFu7s_BFu7c { unsigned short :0; unsigned short v1:7; unsigned char v2:7; };
struct BFu0s_BFu7s_BFu7i { unsigned short :0; unsigned short v1:7; unsigned int v2:7; };
struct BFu0s_BFu7s_BFu7ll { unsigned short :0; unsigned short v1:7; unsigned long long v2:7; };
struct BFu0s_BFu7s_BFu7s { unsigned short :0; unsigned short v1:7; unsigned short v2:7; };
struct BFu0s_BFu7s_BFu8c { unsigned short :0; unsigned short v1:7; unsigned char v2:8; };
struct BFu0s_BFu7s_BFu8i { unsigned short :0; unsigned short v1:7; unsigned int v2:8; };
struct BFu0s_BFu7s_BFu8ll { unsigned short :0; unsigned short v1:7; unsigned long long v2:8; };
struct BFu0s_BFu7s_BFu8s { unsigned short :0; unsigned short v1:7; unsigned short v2:8; };
struct BFu0s_BFu7s_BFu9i { unsigned short :0; unsigned short v1:7; unsigned int v2:9; };
struct BFu0s_BFu7s_BFu9ll { unsigned short :0; unsigned short v1:7; unsigned long long v2:9; };
struct BFu0s_BFu7s_BFu9s { unsigned short :0; unsigned short v1:7; unsigned short v2:9; };
struct BFu0s_BFu7s_C { unsigned short :0; unsigned short v1:7; char v2; };
struct BFu0s_BFu7s_D { unsigned short :0; unsigned short v1:7; double v2; };
struct BFu0s_BFu7s_F { unsigned short :0; unsigned short v1:7; float v2; };
struct BFu0s_BFu7s_I { unsigned short :0; unsigned short v1:7; int v2; };
struct BFu0s_BFu7s_Ip { unsigned short :0; unsigned short v1:7; int * v2; };
struct BFu0s_BFu7s_L { unsigned short :0; unsigned short v1:7; long long v2; };
struct BFu0s_BFu7s_S { unsigned short :0; unsigned short v1:7; short v2; };
struct BFu0s_BFu7s_Uc { unsigned short :0; unsigned short v1:7; unsigned char v2; };
struct BFu0s_BFu7s_Ui { unsigned short :0; unsigned short v1:7; unsigned int v2; };
struct BFu0s_BFu7s_Ul { unsigned short :0; unsigned short v1:7; unsigned long long v2; };
struct BFu0s_BFu7s_Us { unsigned short :0; unsigned short v1:7; unsigned short v2; };
struct BFu0s_BFu7s_Vp { unsigned short :0; unsigned short v1:7; void * v2; };
struct BFu0s_BFu8c { unsigned short :0; unsigned char v1:8; };
struct BFu0s_BFu8c_BFu0c { unsigned short :0; unsigned char v1:8; unsigned char :0; };
struct BFu0s_BFu8c_BFu0i { unsigned short :0; unsigned char v1:8; unsigned int :0; };
struct BFu0s_BFu8c_BFu0ll { unsigned short :0; unsigned char v1:8; unsigned long long :0; };
struct BFu0s_BFu8c_BFu0s { unsigned short :0; unsigned char v1:8; unsigned short :0; };
struct BFu0s_BFu8c_BFu15i { unsigned short :0; unsigned char v1:8; unsigned int v2:15; };
struct BFu0s_BFu8c_BFu15ll { unsigned short :0; unsigned char v1:8; unsigned long long v2:15; };
struct BFu0s_BFu8c_BFu15s { unsigned short :0; unsigned char v1:8; unsigned short v2:15; };
struct BFu0s_BFu8c_BFu16i { unsigned short :0; unsigned char v1:8; unsigned int v2:16; };
struct BFu0s_BFu8c_BFu16ll { unsigned short :0; unsigned char v1:8; unsigned long long v2:16; };
struct BFu0s_BFu8c_BFu16s { unsigned short :0; unsigned char v1:8; unsigned short v2:16; };
struct BFu0s_BFu8c_BFu17i { unsigned short :0; unsigned char v1:8; unsigned int v2:17; };
struct BFu0s_BFu8c_BFu17ll { unsigned short :0; unsigned char v1:8; unsigned long long v2:17; };
struct BFu0s_BFu8c_BFu1c { unsigned short :0; unsigned char v1:8; unsigned char v2:1; };
struct BFu0s_BFu8c_BFu1i { unsigned short :0; unsigned char v1:8; unsigned int v2:1; };
struct BFu0s_BFu8c_BFu1ll { unsigned short :0; unsigned char v1:8; unsigned long long v2:1; };
struct BFu0s_BFu8c_BFu1s { unsigned short :0; unsigned char v1:8; unsigned short v2:1; };
struct BFu0s_BFu8c_BFu31i { unsigned short :0; unsigned char v1:8; unsigned int v2:31; };
struct BFu0s_BFu8c_BFu31ll { unsigned short :0; unsigned char v1:8; unsigned long long v2:31; };
struct BFu0s_BFu8c_BFu32i { unsigned short :0; unsigned char v1:8; unsigned int v2:32; };
struct BFu0s_BFu8c_BFu32ll { unsigned short :0; unsigned char v1:8; unsigned long long v2:32; };
struct BFu0s_BFu8c_BFu33 { unsigned short :0; unsigned char v1:8; unsigned long long v2:33; };
struct BFu0s_BFu8c_BFu7c { unsigned short :0; unsigned char v1:8; unsigned char v2:7; };
struct BFu0s_BFu8c_BFu7i { unsigned short :0; unsigned char v1:8; unsigned int v2:7; };
struct BFu0s_BFu8c_BFu7ll { unsigned short :0; unsigned char v1:8; unsigned long long v2:7; };
struct BFu0s_BFu8c_BFu7s { unsigned short :0; unsigned char v1:8; unsigned short v2:7; };
struct BFu0s_BFu8c_BFu8c { unsigned short :0; unsigned char v1:8; unsigned char v2:8; };
struct BFu0s_BFu8c_BFu8i { unsigned short :0; unsigned char v1:8; unsigned int v2:8; };
struct BFu0s_BFu8c_BFu8ll { unsigned short :0; unsigned char v1:8; unsigned long long v2:8; };
struct BFu0s_BFu8c_BFu8s { unsigned short :0; unsigned char v1:8; unsigned short v2:8; };
struct BFu0s_BFu8c_BFu9i { unsigned short :0; unsigned char v1:8; unsigned int v2:9; };
struct BFu0s_BFu8c_BFu9ll { unsigned short :0; unsigned char v1:8; unsigned long long v2:9; };
struct BFu0s_BFu8c_BFu9s { unsigned short :0; unsigned char v1:8; unsigned short v2:9; };
struct BFu0s_BFu8c_C { unsigned short :0; unsigned char v1:8; char v2; };
struct BFu0s_BFu8c_D { unsigned short :0; unsigned char v1:8; double v2; };
struct BFu0s_BFu8c_F { unsigned short :0; unsigned char v1:8; float v2; };
struct BFu0s_BFu8c_I { unsigned short :0; unsigned char v1:8; int v2; };
struct BFu0s_BFu8c_Ip { unsigned short :0; unsigned char v1:8; int * v2; };
struct BFu0s_BFu8c_L { unsigned short :0; unsigned char v1:8; long long v2; };
struct BFu0s_BFu8c_S { unsigned short :0; unsigned char v1:8; short v2; };
struct BFu0s_BFu8c_Uc { unsigned short :0; unsigned char v1:8; unsigned char v2; };
struct BFu0s_BFu8c_Ui { unsigned short :0; unsigned char v1:8; unsigned int v2; };
struct BFu0s_BFu8c_Ul { unsigned short :0; unsigned char v1:8; unsigned long long v2; };
struct BFu0s_BFu8c_Us { unsigned short :0; unsigned char v1:8; unsigned short v2; };
struct BFu0s_BFu8c_Vp { unsigned short :0; unsigned char v1:8; void * v2; };
struct BFu0s_BFu8i { unsigned short :0; unsigned int v1:8; };
struct BFu0s_BFu8i_BFu0c { unsigned short :0; unsigned int v1:8; unsigned char :0; };
struct BFu0s_BFu8i_BFu0i { unsigned short :0; unsigned int v1:8; unsigned int :0; };
struct BFu0s_BFu8i_BFu0ll { unsigned short :0; unsigned int v1:8; unsigned long long :0; };
struct BFu0s_BFu8i_BFu0s { unsigned short :0; unsigned int v1:8; unsigned short :0; };
struct BFu0s_BFu8i_BFu15i { unsigned short :0; unsigned int v1:8; unsigned int v2:15; };
struct BFu0s_BFu8i_BFu15ll { unsigned short :0; unsigned int v1:8; unsigned long long v2:15; };
struct BFu0s_BFu8i_BFu15s { unsigned short :0; unsigned int v1:8; unsigned short v2:15; };
struct BFu0s_BFu8i_BFu16i { unsigned short :0; unsigned int v1:8; unsigned int v2:16; };
struct BFu0s_BFu8i_BFu16ll { unsigned short :0; unsigned int v1:8; unsigned long long v2:16; };
struct BFu0s_BFu8i_BFu16s { unsigned short :0; unsigned int v1:8; unsigned short v2:16; };
struct BFu0s_BFu8i_BFu17i { unsigned short :0; unsigned int v1:8; unsigned int v2:17; };
struct BFu0s_BFu8i_BFu17ll { unsigned short :0; unsigned int v1:8; unsigned long long v2:17; };
struct BFu0s_BFu8i_BFu1c { unsigned short :0; unsigned int v1:8; unsigned char v2:1; };
struct BFu0s_BFu8i_BFu1i { unsigned short :0; unsigned int v1:8; unsigned int v2:1; };
struct BFu0s_BFu8i_BFu1ll { unsigned short :0; unsigned int v1:8; unsigned long long v2:1; };
struct BFu0s_BFu8i_BFu1s { unsigned short :0; unsigned int v1:8; unsigned short v2:1; };
struct BFu0s_BFu8i_BFu31i { unsigned short :0; unsigned int v1:8; unsigned int v2:31; };
struct BFu0s_BFu8i_BFu31ll { unsigned short :0; unsigned int v1:8; unsigned long long v2:31; };
struct BFu0s_BFu8i_BFu32i { unsigned short :0; unsigned int v1:8; unsigned int v2:32; };
struct BFu0s_BFu8i_BFu32ll { unsigned short :0; unsigned int v1:8; unsigned long long v2:32; };
struct BFu0s_BFu8i_BFu33 { unsigned short :0; unsigned int v1:8; unsigned long long v2:33; };
struct BFu0s_BFu8i_BFu7c { unsigned short :0; unsigned int v1:8; unsigned char v2:7; };
struct BFu0s_BFu8i_BFu7i { unsigned short :0; unsigned int v1:8; unsigned int v2:7; };
struct BFu0s_BFu8i_BFu7ll { unsigned short :0; unsigned int v1:8; unsigned long long v2:7; };
struct BFu0s_BFu8i_BFu7s { unsigned short :0; unsigned int v1:8; unsigned short v2:7; };
struct BFu0s_BFu8i_BFu8c { unsigned short :0; unsigned int v1:8; unsigned char v2:8; };
struct BFu0s_BFu8i_BFu8i { unsigned short :0; unsigned int v1:8; unsigned int v2:8; };
struct BFu0s_BFu8i_BFu8ll { unsigned short :0; unsigned int v1:8; unsigned long long v2:8; };
struct BFu0s_BFu8i_BFu8s { unsigned short :0; unsigned int v1:8; unsigned short v2:8; };
struct BFu0s_BFu8i_BFu9i { unsigned short :0; unsigned int v1:8; unsigned int v2:9; };
struct BFu0s_BFu8i_BFu9ll { unsigned short :0; unsigned int v1:8; unsigned long long v2:9; };
struct BFu0s_BFu8i_BFu9s { unsigned short :0; unsigned int v1:8; unsigned short v2:9; };
struct BFu0s_BFu8i_C { unsigned short :0; unsigned int v1:8; char v2; };
struct BFu0s_BFu8i_D { unsigned short :0; unsigned int v1:8; double v2; };
struct BFu0s_BFu8i_F { unsigned short :0; unsigned int v1:8; float v2; };
struct BFu0s_BFu8i_I { unsigned short :0; unsigned int v1:8; int v2; };
struct BFu0s_BFu8i_Ip { unsigned short :0; unsigned int v1:8; int * v2; };
struct BFu0s_BFu8i_L { unsigned short :0; unsigned int v1:8; long long v2; };
struct BFu0s_BFu8i_S { unsigned short :0; unsigned int v1:8; short v2; };
struct BFu0s_BFu8i_Uc { unsigned short :0; unsigned int v1:8; unsigned char v2; };
struct BFu0s_BFu8i_Ui { unsigned short :0; unsigned int v1:8; unsigned int v2; };
struct BFu0s_BFu8i_Ul { unsigned short :0; unsigned int v1:8; unsigned long long v2; };
struct BFu0s_BFu8i_Us { unsigned short :0; unsigned int v1:8; unsigned short v2; };
struct BFu0s_BFu8i_Vp { unsigned short :0; unsigned int v1:8; void * v2; };
struct BFu0s_BFu8ll { unsigned short :0; unsigned long long v1:8; };
struct BFu0s_BFu8ll_BFu0c { unsigned short :0; unsigned long long v1:8; unsigned char :0; };
struct BFu0s_BFu8ll_BFu0i { unsigned short :0; unsigned long long v1:8; unsigned int :0; };
struct BFu0s_BFu8ll_BFu0ll { unsigned short :0; unsigned long long v1:8; unsigned long long :0; };
struct BFu0s_BFu8ll_BFu0s { unsigned short :0; unsigned long long v1:8; unsigned short :0; };
struct BFu0s_BFu8ll_BFu15i { unsigned short :0; unsigned long long v1:8; unsigned int v2:15; };
struct BFu0s_BFu8ll_BFu15ll { unsigned short :0; unsigned long long v1:8; unsigned long long v2:15; };
struct BFu0s_BFu8ll_BFu15s { unsigned short :0; unsigned long long v1:8; unsigned short v2:15; };
struct BFu0s_BFu8ll_BFu16i { unsigned short :0; unsigned long long v1:8; unsigned int v2:16; };
struct BFu0s_BFu8ll_BFu16ll { unsigned short :0; unsigned long long v1:8; unsigned long long v2:16; };
struct BFu0s_BFu8ll_BFu16s { unsigned short :0; unsigned long long v1:8; unsigned short v2:16; };
struct BFu0s_BFu8ll_BFu17i { unsigned short :0; unsigned long long v1:8; unsigned int v2:17; };
struct BFu0s_BFu8ll_BFu17ll { unsigned short :0; unsigned long long v1:8; unsigned long long v2:17; };
struct BFu0s_BFu8ll_BFu1c { unsigned short :0; unsigned long long v1:8; unsigned char v2:1; };
struct BFu0s_BFu8ll_BFu1i { unsigned short :0; unsigned long long v1:8; unsigned int v2:1; };
struct BFu0s_BFu8ll_BFu1ll { unsigned short :0; unsigned long long v1:8; unsigned long long v2:1; };
struct BFu0s_BFu8ll_BFu1s { unsigned short :0; unsigned long long v1:8; unsigned short v2:1; };
struct BFu0s_BFu8ll_BFu31i { unsigned short :0; unsigned long long v1:8; unsigned int v2:31; };
struct BFu0s_BFu8ll_BFu31ll { unsigned short :0; unsigned long long v1:8; unsigned long long v2:31; };
struct BFu0s_BFu8ll_BFu32i { unsigned short :0; unsigned long long v1:8; unsigned int v2:32; };
struct BFu0s_BFu8ll_BFu32ll { unsigned short :0; unsigned long long v1:8; unsigned long long v2:32; };
struct BFu0s_BFu8ll_BFu33 { unsigned short :0; unsigned long long v1:8; unsigned long long v2:33; };
struct BFu0s_BFu8ll_BFu7c { unsigned short :0; unsigned long long v1:8; unsigned char v2:7; };
struct BFu0s_BFu8ll_BFu7i { unsigned short :0; unsigned long long v1:8; unsigned int v2:7; };
struct BFu0s_BFu8ll_BFu7ll { unsigned short :0; unsigned long long v1:8; unsigned long long v2:7; };
struct BFu0s_BFu8ll_BFu7s { unsigned short :0; unsigned long long v1:8; unsigned short v2:7; };
struct BFu0s_BFu8ll_BFu8c { unsigned short :0; unsigned long long v1:8; unsigned char v2:8; };
struct BFu0s_BFu8ll_BFu8i { unsigned short :0; unsigned long long v1:8; unsigned int v2:8; };
struct BFu0s_BFu8ll_BFu8ll { unsigned short :0; unsigned long long v1:8; unsigned long long v2:8; };
struct BFu0s_BFu8ll_BFu8s { unsigned short :0; unsigned long long v1:8; unsigned short v2:8; };
struct BFu0s_BFu8ll_BFu9i { unsigned short :0; unsigned long long v1:8; unsigned int v2:9; };
struct BFu0s_BFu8ll_BFu9ll { unsigned short :0; unsigned long long v1:8; unsigned long long v2:9; };
struct BFu0s_BFu8ll_BFu9s { unsigned short :0; unsigned long long v1:8; unsigned short v2:9; };
struct BFu0s_BFu8ll_C { unsigned short :0; unsigned long long v1:8; char v2; };
struct BFu0s_BFu8ll_D { unsigned short :0; unsigned long long v1:8; double v2; };
struct BFu0s_BFu8ll_F { unsigned short :0; unsigned long long v1:8; float v2; };
struct BFu0s_BFu8ll_I { unsigned short :0; unsigned long long v1:8; int v2; };
struct BFu0s_BFu8ll_Ip { unsigned short :0; unsigned long long v1:8; int * v2; };
struct BFu0s_BFu8ll_L { unsigned short :0; unsigned long long v1:8; long long v2; };
struct BFu0s_BFu8ll_S { unsigned short :0; unsigned long long v1:8; short v2; };
struct BFu0s_BFu8ll_Uc { unsigned short :0; unsigned long long v1:8; unsigned char v2; };
struct BFu0s_BFu8ll_Ui { unsigned short :0; unsigned long long v1:8; unsigned int v2; };
struct BFu0s_BFu8ll_Ul { unsigned short :0; unsigned long long v1:8; unsigned long long v2; };
struct BFu0s_BFu8ll_Us { unsigned short :0; unsigned long long v1:8; unsigned short v2; };
struct BFu0s_BFu8ll_Vp { unsigned short :0; unsigned long long v1:8; void * v2; };
struct BFu0s_BFu8s { unsigned short :0; unsigned short v1:8; };
struct BFu0s_BFu8s_BFu0c { unsigned short :0; unsigned short v1:8; unsigned char :0; };
struct BFu0s_BFu8s_BFu0i { unsigned short :0; unsigned short v1:8; unsigned int :0; };
struct BFu0s_BFu8s_BFu0ll { unsigned short :0; unsigned short v1:8; unsigned long long :0; };
struct BFu0s_BFu8s_BFu0s { unsigned short :0; unsigned short v1:8; unsigned short :0; };
struct BFu0s_BFu8s_BFu15i { unsigned short :0; unsigned short v1:8; unsigned int v2:15; };
struct BFu0s_BFu8s_BFu15ll { unsigned short :0; unsigned short v1:8; unsigned long long v2:15; };
struct BFu0s_BFu8s_BFu15s { unsigned short :0; unsigned short v1:8; unsigned short v2:15; };
struct BFu0s_BFu8s_BFu16i { unsigned short :0; unsigned short v1:8; unsigned int v2:16; };
struct BFu0s_BFu8s_BFu16ll { unsigned short :0; unsigned short v1:8; unsigned long long v2:16; };
struct BFu0s_BFu8s_BFu16s { unsigned short :0; unsigned short v1:8; unsigned short v2:16; };
struct BFu0s_BFu8s_BFu17i { unsigned short :0; unsigned short v1:8; unsigned int v2:17; };
struct BFu0s_BFu8s_BFu17ll { unsigned short :0; unsigned short v1:8; unsigned long long v2:17; };
struct BFu0s_BFu8s_BFu1c { unsigned short :0; unsigned short v1:8; unsigned char v2:1; };
struct BFu0s_BFu8s_BFu1i { unsigned short :0; unsigned short v1:8; unsigned int v2:1; };
struct BFu0s_BFu8s_BFu1ll { unsigned short :0; unsigned short v1:8; unsigned long long v2:1; };
struct BFu0s_BFu8s_BFu1s { unsigned short :0; unsigned short v1:8; unsigned short v2:1; };
struct BFu0s_BFu8s_BFu31i { unsigned short :0; unsigned short v1:8; unsigned int v2:31; };
struct BFu0s_BFu8s_BFu31ll { unsigned short :0; unsigned short v1:8; unsigned long long v2:31; };
struct BFu0s_BFu8s_BFu32i { unsigned short :0; unsigned short v1:8; unsigned int v2:32; };
struct BFu0s_BFu8s_BFu32ll { unsigned short :0; unsigned short v1:8; unsigned long long v2:32; };
struct BFu0s_BFu8s_BFu33 { unsigned short :0; unsigned short v1:8; unsigned long long v2:33; };
struct BFu0s_BFu8s_BFu7c { unsigned short :0; unsigned short v1:8; unsigned char v2:7; };
struct BFu0s_BFu8s_BFu7i { unsigned short :0; unsigned short v1:8; unsigned int v2:7; };
struct BFu0s_BFu8s_BFu7ll { unsigned short :0; unsigned short v1:8; unsigned long long v2:7; };
struct BFu0s_BFu8s_BFu7s { unsigned short :0; unsigned short v1:8; unsigned short v2:7; };
struct BFu0s_BFu8s_BFu8c { unsigned short :0; unsigned short v1:8; unsigned char v2:8; };
struct BFu0s_BFu8s_BFu8i { unsigned short :0; unsigned short v1:8; unsigned int v2:8; };
struct BFu0s_BFu8s_BFu8ll { unsigned short :0; unsigned short v1:8; unsigned long long v2:8; };
struct BFu0s_BFu8s_BFu8s { unsigned short :0; unsigned short v1:8; unsigned short v2:8; };
struct BFu0s_BFu8s_BFu9i { unsigned short :0; unsigned short v1:8; unsigned int v2:9; };
struct BFu0s_BFu8s_BFu9ll { unsigned short :0; unsigned short v1:8; unsigned long long v2:9; };
struct BFu0s_BFu8s_BFu9s { unsigned short :0; unsigned short v1:8; unsigned short v2:9; };
struct BFu0s_BFu8s_C { unsigned short :0; unsigned short v1:8; char v2; };
struct BFu0s_BFu8s_D { unsigned short :0; unsigned short v1:8; double v2; };
struct BFu0s_BFu8s_F { unsigned short :0; unsigned short v1:8; float v2; };
struct BFu0s_BFu8s_I { unsigned short :0; unsigned short v1:8; int v2; };
struct BFu0s_BFu8s_Ip { unsigned short :0; unsigned short v1:8; int * v2; };
struct BFu0s_BFu8s_L { unsigned short :0; unsigned short v1:8; long long v2; };
struct BFu0s_BFu8s_S { unsigned short :0; unsigned short v1:8; short v2; };
struct BFu0s_BFu8s_Uc { unsigned short :0; unsigned short v1:8; unsigned char v2; };
struct BFu0s_BFu8s_Ui { unsigned short :0; unsigned short v1:8; unsigned int v2; };
struct BFu0s_BFu8s_Ul { unsigned short :0; unsigned short v1:8; unsigned long long v2; };
struct BFu0s_BFu8s_Us { unsigned short :0; unsigned short v1:8; unsigned short v2; };
struct BFu0s_BFu8s_Vp { unsigned short :0; unsigned short v1:8; void * v2; };
struct BFu0s_BFu9i { unsigned short :0; unsigned int v1:9; };
struct BFu0s_BFu9i_BFu0c { unsigned short :0; unsigned int v1:9; unsigned char :0; };
struct BFu0s_BFu9i_BFu0i { unsigned short :0; unsigned int v1:9; unsigned int :0; };
struct BFu0s_BFu9i_BFu0ll { unsigned short :0; unsigned int v1:9; unsigned long long :0; };
struct BFu0s_BFu9i_BFu0s { unsigned short :0; unsigned int v1:9; unsigned short :0; };
struct BFu0s_BFu9i_BFu15i { unsigned short :0; unsigned int v1:9; unsigned int v2:15; };
struct BFu0s_BFu9i_BFu15ll { unsigned short :0; unsigned int v1:9; unsigned long long v2:15; };
struct BFu0s_BFu9i_BFu15s { unsigned short :0; unsigned int v1:9; unsigned short v2:15; };
struct BFu0s_BFu9i_BFu16i { unsigned short :0; unsigned int v1:9; unsigned int v2:16; };
struct BFu0s_BFu9i_BFu16ll { unsigned short :0; unsigned int v1:9; unsigned long long v2:16; };
struct BFu0s_BFu9i_BFu16s { unsigned short :0; unsigned int v1:9; unsigned short v2:16; };
struct BFu0s_BFu9i_BFu17i { unsigned short :0; unsigned int v1:9; unsigned int v2:17; };
struct BFu0s_BFu9i_BFu17ll { unsigned short :0; unsigned int v1:9; unsigned long long v2:17; };
struct BFu0s_BFu9i_BFu1c { unsigned short :0; unsigned int v1:9; unsigned char v2:1; };
struct BFu0s_BFu9i_BFu1i { unsigned short :0; unsigned int v1:9; unsigned int v2:1; };
struct BFu0s_BFu9i_BFu1ll { unsigned short :0; unsigned int v1:9; unsigned long long v2:1; };
struct BFu0s_BFu9i_BFu1s { unsigned short :0; unsigned int v1:9; unsigned short v2:1; };
struct BFu0s_BFu9i_BFu31i { unsigned short :0; unsigned int v1:9; unsigned int v2:31; };
struct BFu0s_BFu9i_BFu31ll { unsigned short :0; unsigned int v1:9; unsigned long long v2:31; };
struct BFu0s_BFu9i_BFu32i { unsigned short :0; unsigned int v1:9; unsigned int v2:32; };
struct BFu0s_BFu9i_BFu32ll { unsigned short :0; unsigned int v1:9; unsigned long long v2:32; };
struct BFu0s_BFu9i_BFu33 { unsigned short :0; unsigned int v1:9; unsigned long long v2:33; };
struct BFu0s_BFu9i_BFu7c { unsigned short :0; unsigned int v1:9; unsigned char v2:7; };
struct BFu0s_BFu9i_BFu7i { unsigned short :0; unsigned int v1:9; unsigned int v2:7; };
struct BFu0s_BFu9i_BFu7ll { unsigned short :0; unsigned int v1:9; unsigned long long v2:7; };
struct BFu0s_BFu9i_BFu7s { unsigned short :0; unsigned int v1:9; unsigned short v2:7; };
struct BFu0s_BFu9i_BFu8c { unsigned short :0; unsigned int v1:9; unsigned char v2:8; };
struct BFu0s_BFu9i_BFu8i { unsigned short :0; unsigned int v1:9; unsigned int v2:8; };
struct BFu0s_BFu9i_BFu8ll { unsigned short :0; unsigned int v1:9; unsigned long long v2:8; };
struct BFu0s_BFu9i_BFu8s { unsigned short :0; unsigned int v1:9; unsigned short v2:8; };
struct BFu0s_BFu9i_BFu9i { unsigned short :0; unsigned int v1:9; unsigned int v2:9; };
struct BFu0s_BFu9i_BFu9ll { unsigned short :0; unsigned int v1:9; unsigned long long v2:9; };
struct BFu0s_BFu9i_BFu9s { unsigned short :0; unsigned int v1:9; unsigned short v2:9; };
struct BFu0s_BFu9i_C { unsigned short :0; unsigned int v1:9; char v2; };
struct BFu0s_BFu9i_D { unsigned short :0; unsigned int v1:9; double v2; };
struct BFu0s_BFu9i_F { unsigned short :0; unsigned int v1:9; float v2; };
struct BFu0s_BFu9i_I { unsigned short :0; unsigned int v1:9; int v2; };
struct BFu0s_BFu9i_Ip { unsigned short :0; unsigned int v1:9; int * v2; };
struct BFu0s_BFu9i_L { unsigned short :0; unsigned int v1:9; long long v2; };
struct BFu0s_BFu9i_S { unsigned short :0; unsigned int v1:9; short v2; };
struct BFu0s_BFu9i_Uc { unsigned short :0; unsigned int v1:9; unsigned char v2; };
struct BFu0s_BFu9i_Ui { unsigned short :0; unsigned int v1:9; unsigned int v2; };
struct BFu0s_BFu9i_Ul { unsigned short :0; unsigned int v1:9; unsigned long long v2; };
struct BFu0s_BFu9i_Us { unsigned short :0; unsigned int v1:9; unsigned short v2; };
struct BFu0s_BFu9i_Vp { unsigned short :0; unsigned int v1:9; void * v2; };
struct BFu0s_BFu9ll { unsigned short :0; unsigned long long v1:9; };
struct BFu0s_BFu9ll_BFu0c { unsigned short :0; unsigned long long v1:9; unsigned char :0; };
struct BFu0s_BFu9ll_BFu0i { unsigned short :0; unsigned long long v1:9; unsigned int :0; };
struct BFu0s_BFu9ll_BFu0ll { unsigned short :0; unsigned long long v1:9; unsigned long long :0; };
struct BFu0s_BFu9ll_BFu0s { unsigned short :0; unsigned long long v1:9; unsigned short :0; };
struct BFu0s_BFu9ll_BFu15i { unsigned short :0; unsigned long long v1:9; unsigned int v2:15; };
struct BFu0s_BFu9ll_BFu15ll { unsigned short :0; unsigned long long v1:9; unsigned long long v2:15; };
struct BFu0s_BFu9ll_BFu15s { unsigned short :0; unsigned long long v1:9; unsigned short v2:15; };
struct BFu0s_BFu9ll_BFu16i { unsigned short :0; unsigned long long v1:9; unsigned int v2:16; };
struct BFu0s_BFu9ll_BFu16ll { unsigned short :0; unsigned long long v1:9; unsigned long long v2:16; };
struct BFu0s_BFu9ll_BFu16s { unsigned short :0; unsigned long long v1:9; unsigned short v2:16; };
struct BFu0s_BFu9ll_BFu17i { unsigned short :0; unsigned long long v1:9; unsigned int v2:17; };
struct BFu0s_BFu9ll_BFu17ll { unsigned short :0; unsigned long long v1:9; unsigned long long v2:17; };
struct BFu0s_BFu9ll_BFu1c { unsigned short :0; unsigned long long v1:9; unsigned char v2:1; };
struct BFu0s_BFu9ll_BFu1i { unsigned short :0; unsigned long long v1:9; unsigned int v2:1; };
struct BFu0s_BFu9ll_BFu1ll { unsigned short :0; unsigned long long v1:9; unsigned long long v2:1; };
struct BFu0s_BFu9ll_BFu1s { unsigned short :0; unsigned long long v1:9; unsigned short v2:1; };
struct BFu0s_BFu9ll_BFu31i { unsigned short :0; unsigned long long v1:9; unsigned int v2:31; };
struct BFu0s_BFu9ll_BFu31ll { unsigned short :0; unsigned long long v1:9; unsigned long long v2:31; };
struct BFu0s_BFu9ll_BFu32i { unsigned short :0; unsigned long long v1:9; unsigned int v2:32; };
struct BFu0s_BFu9ll_BFu32ll { unsigned short :0; unsigned long long v1:9; unsigned long long v2:32; };
struct BFu0s_BFu9ll_BFu33 { unsigned short :0; unsigned long long v1:9; unsigned long long v2:33; };
struct BFu0s_BFu9ll_BFu7c { unsigned short :0; unsigned long long v1:9; unsigned char v2:7; };
struct BFu0s_BFu9ll_BFu7i { unsigned short :0; unsigned long long v1:9; unsigned int v2:7; };
struct BFu0s_BFu9ll_BFu7ll { unsigned short :0; unsigned long long v1:9; unsigned long long v2:7; };
struct BFu0s_BFu9ll_BFu7s { unsigned short :0; unsigned long long v1:9; unsigned short v2:7; };
struct BFu0s_BFu9ll_BFu8c { unsigned short :0; unsigned long long v1:9; unsigned char v2:8; };
struct BFu0s_BFu9ll_BFu8i { unsigned short :0; unsigned long long v1:9; unsigned int v2:8; };
struct BFu0s_BFu9ll_BFu8ll { unsigned short :0; unsigned long long v1:9; unsigned long long v2:8; };
struct BFu0s_BFu9ll_BFu8s { unsigned short :0; unsigned long long v1:9; unsigned short v2:8; };
struct BFu0s_BFu9ll_BFu9i { unsigned short :0; unsigned long long v1:9; unsigned int v2:9; };
struct BFu0s_BFu9ll_BFu9ll { unsigned short :0; unsigned long long v1:9; unsigned long long v2:9; };
struct BFu0s_BFu9ll_BFu9s { unsigned short :0; unsigned long long v1:9; unsigned short v2:9; };
struct BFu0s_BFu9ll_C { unsigned short :0; unsigned long long v1:9; char v2; };
struct BFu0s_BFu9ll_D { unsigned short :0; unsigned long long v1:9; double v2; };
struct BFu0s_BFu9ll_F { unsigned short :0; unsigned long long v1:9; float v2; };
struct BFu0s_BFu9ll_I { unsigned short :0; unsigned long long v1:9; int v2; };
struct BFu0s_BFu9ll_Ip { unsigned short :0; unsigned long long v1:9; int * v2; };
struct BFu0s_BFu9ll_L { unsigned short :0; unsigned long long v1:9; long long v2; };
struct BFu0s_BFu9ll_S { unsigned short :0; unsigned long long v1:9; short v2; };
struct BFu0s_BFu9ll_Uc { unsigned short :0; unsigned long long v1:9; unsigned char v2; };
struct BFu0s_BFu9ll_Ui { unsigned short :0; unsigned long long v1:9; unsigned int v2; };
struct BFu0s_BFu9ll_Ul { unsigned short :0; unsigned long long v1:9; unsigned long long v2; };
struct BFu0s_BFu9ll_Us { unsigned short :0; unsigned long long v1:9; unsigned short v2; };
struct BFu0s_BFu9ll_Vp { unsigned short :0; unsigned long long v1:9; void * v2; };
struct BFu0s_BFu9s { unsigned short :0; unsigned short v1:9; };
struct BFu0s_BFu9s_BFu0c { unsigned short :0; unsigned short v1:9; unsigned char :0; };
struct BFu0s_BFu9s_BFu0i { unsigned short :0; unsigned short v1:9; unsigned int :0; };
struct BFu0s_BFu9s_BFu0ll { unsigned short :0; unsigned short v1:9; unsigned long long :0; };
struct BFu0s_BFu9s_BFu0s { unsigned short :0; unsigned short v1:9; unsigned short :0; };
struct BFu0s_BFu9s_BFu15i { unsigned short :0; unsigned short v1:9; unsigned int v2:15; };
struct BFu0s_BFu9s_BFu15ll { unsigned short :0; unsigned short v1:9; unsigned long long v2:15; };
struct BFu0s_BFu9s_BFu15s { unsigned short :0; unsigned short v1:9; unsigned short v2:15; };
struct BFu0s_BFu9s_BFu16i { unsigned short :0; unsigned short v1:9; unsigned int v2:16; };
struct BFu0s_BFu9s_BFu16ll { unsigned short :0; unsigned short v1:9; unsigned long long v2:16; };
struct BFu0s_BFu9s_BFu16s { unsigned short :0; unsigned short v1:9; unsigned short v2:16; };
struct BFu0s_BFu9s_BFu17i { unsigned short :0; unsigned short v1:9; unsigned int v2:17; };
struct BFu0s_BFu9s_BFu17ll { unsigned short :0; unsigned short v1:9; unsigned long long v2:17; };
struct BFu0s_BFu9s_BFu1c { unsigned short :0; unsigned short v1:9; unsigned char v2:1; };
struct BFu0s_BFu9s_BFu1i { unsigned short :0; unsigned short v1:9; unsigned int v2:1; };
struct BFu0s_BFu9s_BFu1ll { unsigned short :0; unsigned short v1:9; unsigned long long v2:1; };
struct BFu0s_BFu9s_BFu1s { unsigned short :0; unsigned short v1:9; unsigned short v2:1; };
struct BFu0s_BFu9s_BFu31i { unsigned short :0; unsigned short v1:9; unsigned int v2:31; };
struct BFu0s_BFu9s_BFu31ll { unsigned short :0; unsigned short v1:9; unsigned long long v2:31; };
struct BFu0s_BFu9s_BFu32i { unsigned short :0; unsigned short v1:9; unsigned int v2:32; };
struct BFu0s_BFu9s_BFu32ll { unsigned short :0; unsigned short v1:9; unsigned long long v2:32; };
struct BFu0s_BFu9s_BFu33 { unsigned short :0; unsigned short v1:9; unsigned long long v2:33; };
struct BFu0s_BFu9s_BFu7c { unsigned short :0; unsigned short v1:9; unsigned char v2:7; };
struct BFu0s_BFu9s_BFu7i { unsigned short :0; unsigned short v1:9; unsigned int v2:7; };
struct BFu0s_BFu9s_BFu7ll { unsigned short :0; unsigned short v1:9; unsigned long long v2:7; };
struct BFu0s_BFu9s_BFu7s { unsigned short :0; unsigned short v1:9; unsigned short v2:7; };
struct BFu0s_BFu9s_BFu8c { unsigned short :0; unsigned short v1:9; unsigned char v2:8; };
struct BFu0s_BFu9s_BFu8i { unsigned short :0; unsigned short v1:9; unsigned int v2:8; };
struct BFu0s_BFu9s_BFu8ll { unsigned short :0; unsigned short v1:9; unsigned long long v2:8; };
struct BFu0s_BFu9s_BFu8s { unsigned short :0; unsigned short v1:9; unsigned short v2:8; };
struct BFu0s_BFu9s_BFu9i { unsigned short :0; unsigned short v1:9; unsigned int v2:9; };
struct BFu0s_BFu9s_BFu9ll { unsigned short :0; unsigned short v1:9; unsigned long long v2:9; };
struct BFu0s_BFu9s_BFu9s { unsigned short :0; unsigned short v1:9; unsigned short v2:9; };
struct BFu0s_BFu9s_C { unsigned short :0; unsigned short v1:9; char v2; };
struct BFu0s_BFu9s_D { unsigned short :0; unsigned short v1:9; double v2; };
struct BFu0s_BFu9s_F { unsigned short :0; unsigned short v1:9; float v2; };
struct BFu0s_BFu9s_I { unsigned short :0; unsigned short v1:9; int v2; };
struct BFu0s_BFu9s_Ip { unsigned short :0; unsigned short v1:9; int * v2; };
struct BFu0s_BFu9s_L { unsigned short :0; unsigned short v1:9; long long v2; };
struct BFu0s_BFu9s_S { unsigned short :0; unsigned short v1:9; short v2; };
struct BFu0s_BFu9s_Uc { unsigned short :0; unsigned short v1:9; unsigned char v2; };
struct BFu0s_BFu9s_Ui { unsigned short :0; unsigned short v1:9; unsigned int v2; };
struct BFu0s_BFu9s_Ul { unsigned short :0; unsigned short v1:9; unsigned long long v2; };
struct BFu0s_BFu9s_Us { unsigned short :0; unsigned short v1:9; unsigned short v2; };
struct BFu0s_BFu9s_Vp { unsigned short :0; unsigned short v1:9; void * v2; };
struct BFu0s_C { unsigned short :0; char v1; };
struct BFu0s_C_BFu0c { unsigned short :0; char v1; unsigned char :0; };
struct BFu0s_C_BFu0i { unsigned short :0; char v1; unsigned int :0; };
struct BFu0s_C_BFu0ll { unsigned short :0; char v1; unsigned long long :0; };
struct BFu0s_C_BFu0s { unsigned short :0; char v1; unsigned short :0; };
struct BFu0s_C_BFu15i { unsigned short :0; char v1; unsigned int v2:15; };
struct BFu0s_C_BFu15ll { unsigned short :0; char v1; unsigned long long v2:15; };
struct BFu0s_C_BFu15s { unsigned short :0; char v1; unsigned short v2:15; };
struct BFu0s_C_BFu16i { unsigned short :0; char v1; unsigned int v2:16; };
struct BFu0s_C_BFu16ll { unsigned short :0; char v1; unsigned long long v2:16; };
struct BFu0s_C_BFu16s { unsigned short :0; char v1; unsigned short v2:16; };
struct BFu0s_C_BFu17i { unsigned short :0; char v1; unsigned int v2:17; };
struct BFu0s_C_BFu17ll { unsigned short :0; char v1; unsigned long long v2:17; };
struct BFu0s_C_BFu1c { unsigned short :0; char v1; unsigned char v2:1; };
struct BFu0s_C_BFu1i { unsigned short :0; char v1; unsigned int v2:1; };
struct BFu0s_C_BFu1ll { unsigned short :0; char v1; unsigned long long v2:1; };
struct BFu0s_C_BFu1s { unsigned short :0; char v1; unsigned short v2:1; };
struct BFu0s_C_BFu31i { unsigned short :0; char v1; unsigned int v2:31; };
struct BFu0s_C_BFu31ll { unsigned short :0; char v1; unsigned long long v2:31; };
struct BFu0s_C_BFu32i { unsigned short :0; char v1; unsigned int v2:32; };
struct BFu0s_C_BFu32ll { unsigned short :0; char v1; unsigned long long v2:32; };
struct BFu0s_C_BFu33 { unsigned short :0; char v1; unsigned long long v2:33; };
struct BFu0s_C_BFu7c { unsigned short :0; char v1; unsigned char v2:7; };
struct BFu0s_C_BFu7i { unsigned short :0; char v1; unsigned int v2:7; };
struct BFu0s_C_BFu7ll { unsigned short :0; char v1; unsigned long long v2:7; };
struct BFu0s_C_BFu7s { unsigned short :0; char v1; unsigned short v2:7; };
struct BFu0s_C_BFu8c { unsigned short :0; char v1; unsigned char v2:8; };
struct BFu0s_C_BFu8i { unsigned short :0; char v1; unsigned int v2:8; };
struct BFu0s_C_BFu8ll { unsigned short :0; char v1; unsigned long long v2:8; };
struct BFu0s_C_BFu8s { unsigned short :0; char v1; unsigned short v2:8; };
struct BFu0s_C_BFu9i { unsigned short :0; char v1; unsigned int v2:9; };
struct BFu0s_C_BFu9ll { unsigned short :0; char v1; unsigned long long v2:9; };
struct BFu0s_C_BFu9s { unsigned short :0; char v1; unsigned short v2:9; };
struct BFu0s_C_C { unsigned short :0; char v1; char v2; };
struct BFu0s_C_D { unsigned short :0; char v1; double v2; };
struct BFu0s_C_F { unsigned short :0; char v1; float v2; };
struct BFu0s_C_I { unsigned short :0; char v1; int v2; };
struct BFu0s_C_Ip { unsigned short :0; char v1; int * v2; };
struct BFu0s_C_L { unsigned short :0; char v1; long long v2; };
struct BFu0s_C_S { unsigned short :0; char v1; short v2; };
struct BFu0s_C_Uc { unsigned short :0; char v1; unsigned char v2; };
struct BFu0s_C_Ui { unsigned short :0; char v1; unsigned int v2; };
struct BFu0s_C_Ul { unsigned short :0; char v1; unsigned long long v2; };
struct BFu0s_C_Us { unsigned short :0; char v1; unsigned short v2; };
struct BFu0s_C_Vp { unsigned short :0; char v1; void * v2; };
struct BFu0s_D { unsigned short :0; double v1; };
struct BFu0s_D_BFu0c { unsigned short :0; double v1; unsigned char :0; };
struct BFu0s_D_BFu0i { unsigned short :0; double v1; unsigned int :0; };
struct BFu0s_D_BFu0ll { unsigned short :0; double v1; unsigned long long :0; };
struct BFu0s_D_BFu0s { unsigned short :0; double v1; unsigned short :0; };
struct BFu0s_D_BFu15i { unsigned short :0; double v1; unsigned int v2:15; };
struct BFu0s_D_BFu15ll { unsigned short :0; double v1; unsigned long long v2:15; };
struct BFu0s_D_BFu15s { unsigned short :0; double v1; unsigned short v2:15; };
struct BFu0s_D_BFu16i { unsigned short :0; double v1; unsigned int v2:16; };
struct BFu0s_D_BFu16ll { unsigned short :0; double v1; unsigned long long v2:16; };
struct BFu0s_D_BFu16s { unsigned short :0; double v1; unsigned short v2:16; };
struct BFu0s_D_BFu17i { unsigned short :0; double v1; unsigned int v2:17; };
struct BFu0s_D_BFu17ll { unsigned short :0; double v1; unsigned long long v2:17; };
struct BFu0s_D_BFu1c { unsigned short :0; double v1; unsigned char v2:1; };
struct BFu0s_D_BFu1i { unsigned short :0; double v1; unsigned int v2:1; };
struct BFu0s_D_BFu1ll { unsigned short :0; double v1; unsigned long long v2:1; };
struct BFu0s_D_BFu1s { unsigned short :0; double v1; unsigned short v2:1; };
struct BFu0s_D_BFu31i { unsigned short :0; double v1; unsigned int v2:31; };
struct BFu0s_D_BFu31ll { unsigned short :0; double v1; unsigned long long v2:31; };
struct BFu0s_D_BFu32i { unsigned short :0; double v1; unsigned int v2:32; };
struct BFu0s_D_BFu32ll { unsigned short :0; double v1; unsigned long long v2:32; };
struct BFu0s_D_BFu33 { unsigned short :0; double v1; unsigned long long v2:33; };
struct BFu0s_D_BFu7c { unsigned short :0; double v1; unsigned char v2:7; };
struct BFu0s_D_BFu7i { unsigned short :0; double v1; unsigned int v2:7; };
struct BFu0s_D_BFu7ll { unsigned short :0; double v1; unsigned long long v2:7; };
struct BFu0s_D_BFu7s { unsigned short :0; double v1; unsigned short v2:7; };
struct BFu0s_D_BFu8c { unsigned short :0; double v1; unsigned char v2:8; };
struct BFu0s_D_BFu8i { unsigned short :0; double v1; unsigned int v2:8; };
struct BFu0s_D_BFu8ll { unsigned short :0; double v1; unsigned long long v2:8; };
struct BFu0s_D_BFu8s { unsigned short :0; double v1; unsigned short v2:8; };
struct BFu0s_D_BFu9i { unsigned short :0; double v1; unsigned int v2:9; };
struct BFu0s_D_BFu9ll { unsigned short :0; double v1; unsigned long long v2:9; };
struct BFu0s_D_BFu9s { unsigned short :0; double v1; unsigned short v2:9; };
struct BFu0s_D_C { unsigned short :0; double v1; char v2; };
struct BFu0s_D_D { unsigned short :0; double v1; double v2; };
struct BFu0s_D_F { unsigned short :0; double v1; float v2; };
struct BFu0s_D_I { unsigned short :0; double v1; int v2; };
struct BFu0s_D_Ip { unsigned short :0; double v1; int * v2; };
struct BFu0s_D_L { unsigned short :0; double v1; long long v2; };
struct BFu0s_D_S { unsigned short :0; double v1; short v2; };
struct BFu0s_D_Uc { unsigned short :0; double v1; unsigned char v2; };
struct BFu0s_D_Ui { unsigned short :0; double v1; unsigned int v2; };
struct BFu0s_D_Ul { unsigned short :0; double v1; unsigned long long v2; };
struct BFu0s_D_Us { unsigned short :0; double v1; unsigned short v2; };
struct BFu0s_D_Vp { unsigned short :0; double v1; void * v2; };
struct BFu0s_F { unsigned short :0; float v1; };
struct BFu0s_F_BFu0c { unsigned short :0; float v1; unsigned char :0; };
struct BFu0s_F_BFu0i { unsigned short :0; float v1; unsigned int :0; };
struct BFu0s_F_BFu0ll { unsigned short :0; float v1; unsigned long long :0; };
struct BFu0s_F_BFu0s { unsigned short :0; float v1; unsigned short :0; };
struct BFu0s_F_BFu15i { unsigned short :0; float v1; unsigned int v2:15; };
struct BFu0s_F_BFu15ll { unsigned short :0; float v1; unsigned long long v2:15; };
struct BFu0s_F_BFu15s { unsigned short :0; float v1; unsigned short v2:15; };
struct BFu0s_F_BFu16i { unsigned short :0; float v1; unsigned int v2:16; };
struct BFu0s_F_BFu16ll { unsigned short :0; float v1; unsigned long long v2:16; };
struct BFu0s_F_BFu16s { unsigned short :0; float v1; unsigned short v2:16; };
struct BFu0s_F_BFu17i { unsigned short :0; float v1; unsigned int v2:17; };
struct BFu0s_F_BFu17ll { unsigned short :0; float v1; unsigned long long v2:17; };
struct BFu0s_F_BFu1c { unsigned short :0; float v1; unsigned char v2:1; };
struct BFu0s_F_BFu1i { unsigned short :0; float v1; unsigned int v2:1; };
struct BFu0s_F_BFu1ll { unsigned short :0; float v1; unsigned long long v2:1; };
struct BFu0s_F_BFu1s { unsigned short :0; float v1; unsigned short v2:1; };
struct BFu0s_F_BFu31i { unsigned short :0; float v1; unsigned int v2:31; };
struct BFu0s_F_BFu31ll { unsigned short :0; float v1; unsigned long long v2:31; };
struct BFu0s_F_BFu32i { unsigned short :0; float v1; unsigned int v2:32; };
struct BFu0s_F_BFu32ll { unsigned short :0; float v1; unsigned long long v2:32; };
struct BFu0s_F_BFu33 { unsigned short :0; float v1; unsigned long long v2:33; };
struct BFu0s_F_BFu7c { unsigned short :0; float v1; unsigned char v2:7; };
struct BFu0s_F_BFu7i { unsigned short :0; float v1; unsigned int v2:7; };
struct BFu0s_F_BFu7ll { unsigned short :0; float v1; unsigned long long v2:7; };
struct BFu0s_F_BFu7s { unsigned short :0; float v1; unsigned short v2:7; };
struct BFu0s_F_BFu8c { unsigned short :0; float v1; unsigned char v2:8; };
struct BFu0s_F_BFu8i { unsigned short :0; float v1; unsigned int v2:8; };
struct BFu0s_F_BFu8ll { unsigned short :0; float v1; unsigned long long v2:8; };
struct BFu0s_F_BFu8s { unsigned short :0; float v1; unsigned short v2:8; };
struct BFu0s_F_BFu9i { unsigned short :0; float v1; unsigned int v2:9; };
struct BFu0s_F_BFu9ll { unsigned short :0; float v1; unsigned long long v2:9; };
struct BFu0s_F_BFu9s { unsigned short :0; float v1; unsigned short v2:9; };
struct BFu0s_F_C { unsigned short :0; float v1; char v2; };
struct BFu0s_F_D { unsigned short :0; float v1; double v2; };
struct BFu0s_F_F { unsigned short :0; float v1; float v2; };
struct BFu0s_F_I { unsigned short :0; float v1; int v2; };
struct BFu0s_F_Ip { unsigned short :0; float v1; int * v2; };
struct BFu0s_F_L { unsigned short :0; float v1; long long v2; };
struct BFu0s_F_S { unsigned short :0; float v1; short v2; };
struct BFu0s_F_Uc { unsigned short :0; float v1; unsigned char v2; };
struct BFu0s_F_Ui { unsigned short :0; float v1; unsigned int v2; };
struct BFu0s_F_Ul { unsigned short :0; float v1; unsigned long long v2; };
struct BFu0s_F_Us { unsigned short :0; float v1; unsigned short v2; };
struct BFu0s_F_Vp { unsigned short :0; float v1; void * v2; };
struct BFu0s_I { unsigned short :0; int v1; };
struct BFu0s_I_BFu0c { unsigned short :0; int v1; unsigned char :0; };
struct BFu0s_I_BFu0i { unsigned short :0; int v1; unsigned int :0; };
struct BFu0s_I_BFu0ll { unsigned short :0; int v1; unsigned long long :0; };
struct BFu0s_I_BFu0s { unsigned short :0; int v1; unsigned short :0; };
struct BFu0s_I_BFu15i { unsigned short :0; int v1; unsigned int v2:15; };
struct BFu0s_I_BFu15ll { unsigned short :0; int v1; unsigned long long v2:15; };
struct BFu0s_I_BFu15s { unsigned short :0; int v1; unsigned short v2:15; };
struct BFu0s_I_BFu16i { unsigned short :0; int v1; unsigned int v2:16; };
struct BFu0s_I_BFu16ll { unsigned short :0; int v1; unsigned long long v2:16; };
struct BFu0s_I_BFu16s { unsigned short :0; int v1; unsigned short v2:16; };
struct BFu0s_I_BFu17i { unsigned short :0; int v1; unsigned int v2:17; };
struct BFu0s_I_BFu17ll { unsigned short :0; int v1; unsigned long long v2:17; };
struct BFu0s_I_BFu1c { unsigned short :0; int v1; unsigned char v2:1; };
struct BFu0s_I_BFu1i { unsigned short :0; int v1; unsigned int v2:1; };
struct BFu0s_I_BFu1ll { unsigned short :0; int v1; unsigned long long v2:1; };
struct BFu0s_I_BFu1s { unsigned short :0; int v1; unsigned short v2:1; };
struct BFu0s_I_BFu31i { unsigned short :0; int v1; unsigned int v2:31; };
struct BFu0s_I_BFu31ll { unsigned short :0; int v1; unsigned long long v2:31; };
struct BFu0s_I_BFu32i { unsigned short :0; int v1; unsigned int v2:32; };
struct BFu0s_I_BFu32ll { unsigned short :0; int v1; unsigned long long v2:32; };
struct BFu0s_I_BFu33 { unsigned short :0; int v1; unsigned long long v2:33; };
struct BFu0s_I_BFu7c { unsigned short :0; int v1; unsigned char v2:7; };
struct BFu0s_I_BFu7i { unsigned short :0; int v1; unsigned int v2:7; };
struct BFu0s_I_BFu7ll { unsigned short :0; int v1; unsigned long long v2:7; };
struct BFu0s_I_BFu7s { unsigned short :0; int v1; unsigned short v2:7; };
struct BFu0s_I_BFu8c { unsigned short :0; int v1; unsigned char v2:8; };
struct BFu0s_I_BFu8i { unsigned short :0; int v1; unsigned int v2:8; };
struct BFu0s_I_BFu8ll { unsigned short :0; int v1; unsigned long long v2:8; };
struct BFu0s_I_BFu8s { unsigned short :0; int v1; unsigned short v2:8; };
struct BFu0s_I_BFu9i { unsigned short :0; int v1; unsigned int v2:9; };
struct BFu0s_I_BFu9ll { unsigned short :0; int v1; unsigned long long v2:9; };
struct BFu0s_I_BFu9s { unsigned short :0; int v1; unsigned short v2:9; };
struct BFu0s_I_C { unsigned short :0; int v1; char v2; };
struct BFu0s_I_D { unsigned short :0; int v1; double v2; };
struct BFu0s_I_F { unsigned short :0; int v1; float v2; };
struct BFu0s_I_I { unsigned short :0; int v1; int v2; };
struct BFu0s_I_Ip { unsigned short :0; int v1; int * v2; };
struct BFu0s_I_L { unsigned short :0; int v1; long long v2; };
struct BFu0s_I_S { unsigned short :0; int v1; short v2; };
struct BFu0s_I_Uc { unsigned short :0; int v1; unsigned char v2; };
struct BFu0s_I_Ui { unsigned short :0; int v1; unsigned int v2; };
struct BFu0s_I_Ul { unsigned short :0; int v1; unsigned long long v2; };
struct BFu0s_I_Us { unsigned short :0; int v1; unsigned short v2; };
struct BFu0s_I_Vp { unsigned short :0; int v1; void * v2; };
struct BFu0s_Ip { unsigned short :0; int * v1; };
struct BFu0s_Ip_BFu0c { unsigned short :0; int * v1; unsigned char :0; };
struct BFu0s_Ip_BFu0i { unsigned short :0; int * v1; unsigned int :0; };
struct BFu0s_Ip_BFu0ll { unsigned short :0; int * v1; unsigned long long :0; };
struct BFu0s_Ip_BFu0s { unsigned short :0; int * v1; unsigned short :0; };
struct BFu0s_Ip_BFu15i { unsigned short :0; int * v1; unsigned int v2:15; };
struct BFu0s_Ip_BFu15ll { unsigned short :0; int * v1; unsigned long long v2:15; };
struct BFu0s_Ip_BFu15s { unsigned short :0; int * v1; unsigned short v2:15; };
struct BFu0s_Ip_BFu16i { unsigned short :0; int * v1; unsigned int v2:16; };
struct BFu0s_Ip_BFu16ll { unsigned short :0; int * v1; unsigned long long v2:16; };
struct BFu0s_Ip_BFu16s { unsigned short :0; int * v1; unsigned short v2:16; };
struct BFu0s_Ip_BFu17i { unsigned short :0; int * v1; unsigned int v2:17; };
struct BFu0s_Ip_BFu17ll { unsigned short :0; int * v1; unsigned long long v2:17; };
struct BFu0s_Ip_BFu1c { unsigned short :0; int * v1; unsigned char v2:1; };
struct BFu0s_Ip_BFu1i { unsigned short :0; int * v1; unsigned int v2:1; };
struct BFu0s_Ip_BFu1ll { unsigned short :0; int * v1; unsigned long long v2:1; };
struct BFu0s_Ip_BFu1s { unsigned short :0; int * v1; unsigned short v2:1; };
struct BFu0s_Ip_BFu31i { unsigned short :0; int * v1; unsigned int v2:31; };
struct BFu0s_Ip_BFu31ll { unsigned short :0; int * v1; unsigned long long v2:31; };
struct BFu0s_Ip_BFu32i { unsigned short :0; int * v1; unsigned int v2:32; };
struct BFu0s_Ip_BFu32ll { unsigned short :0; int * v1; unsigned long long v2:32; };
struct BFu0s_Ip_BFu33 { unsigned short :0; int * v1; unsigned long long v2:33; };
struct BFu0s_Ip_BFu7c { unsigned short :0; int * v1; unsigned char v2:7; };
struct BFu0s_Ip_BFu7i { unsigned short :0; int * v1; unsigned int v2:7; };
struct BFu0s_Ip_BFu7ll { unsigned short :0; int * v1; unsigned long long v2:7; };
struct BFu0s_Ip_BFu7s { unsigned short :0; int * v1; unsigned short v2:7; };
struct BFu0s_Ip_BFu8c { unsigned short :0; int * v1; unsigned char v2:8; };
struct BFu0s_Ip_BFu8i { unsigned short :0; int * v1; unsigned int v2:8; };
struct BFu0s_Ip_BFu8ll { unsigned short :0; int * v1; unsigned long long v2:8; };
struct BFu0s_Ip_BFu8s { unsigned short :0; int * v1; unsigned short v2:8; };
struct BFu0s_Ip_BFu9i { unsigned short :0; int * v1; unsigned int v2:9; };
struct BFu0s_Ip_BFu9ll { unsigned short :0; int * v1; unsigned long long v2:9; };
struct BFu0s_Ip_BFu9s { unsigned short :0; int * v1; unsigned short v2:9; };
struct BFu0s_Ip_C { unsigned short :0; int * v1; char v2; };
struct BFu0s_Ip_D { unsigned short :0; int * v1; double v2; };
struct BFu0s_Ip_F { unsigned short :0; int * v1; float v2; };
struct BFu0s_Ip_I { unsigned short :0; int * v1; int v2; };
struct BFu0s_Ip_Ip { unsigned short :0; int * v1; int * v2; };
struct BFu0s_Ip_L { unsigned short :0; int * v1; long long v2; };
struct BFu0s_Ip_S { unsigned short :0; int * v1; short v2; };
struct BFu0s_Ip_Uc { unsigned short :0; int * v1; unsigned char v2; };
struct BFu0s_Ip_Ui { unsigned short :0; int * v1; unsigned int v2; };
struct BFu0s_Ip_Ul { unsigned short :0; int * v1; unsigned long long v2; };
struct BFu0s_Ip_Us { unsigned short :0; int * v1; unsigned short v2; };
struct BFu0s_Ip_Vp { unsigned short :0; int * v1; void * v2; };
struct BFu0s_L { unsigned short :0; long long v1; };
struct BFu0s_L_BFu0c { unsigned short :0; long long v1; unsigned char :0; };
struct BFu0s_L_BFu0i { unsigned short :0; long long v1; unsigned int :0; };
struct BFu0s_L_BFu0ll { unsigned short :0; long long v1; unsigned long long :0; };
struct BFu0s_L_BFu0s { unsigned short :0; long long v1; unsigned short :0; };
struct BFu0s_L_BFu15i { unsigned short :0; long long v1; unsigned int v2:15; };
struct BFu0s_L_BFu15ll { unsigned short :0; long long v1; unsigned long long v2:15; };
struct BFu0s_L_BFu15s { unsigned short :0; long long v1; unsigned short v2:15; };
struct BFu0s_L_BFu16i { unsigned short :0; long long v1; unsigned int v2:16; };
struct BFu0s_L_BFu16ll { unsigned short :0; long long v1; unsigned long long v2:16; };
struct BFu0s_L_BFu16s { unsigned short :0; long long v1; unsigned short v2:16; };
struct BFu0s_L_BFu17i { unsigned short :0; long long v1; unsigned int v2:17; };
struct BFu0s_L_BFu17ll { unsigned short :0; long long v1; unsigned long long v2:17; };
struct BFu0s_L_BFu1c { unsigned short :0; long long v1; unsigned char v2:1; };
struct BFu0s_L_BFu1i { unsigned short :0; long long v1; unsigned int v2:1; };
struct BFu0s_L_BFu1ll { unsigned short :0; long long v1; unsigned long long v2:1; };
struct BFu0s_L_BFu1s { unsigned short :0; long long v1; unsigned short v2:1; };
struct BFu0s_L_BFu31i { unsigned short :0; long long v1; unsigned int v2:31; };
struct BFu0s_L_BFu31ll { unsigned short :0; long long v1; unsigned long long v2:31; };
struct BFu0s_L_BFu32i { unsigned short :0; long long v1; unsigned int v2:32; };
struct BFu0s_L_BFu32ll { unsigned short :0; long long v1; unsigned long long v2:32; };
struct BFu0s_L_BFu33 { unsigned short :0; long long v1; unsigned long long v2:33; };
struct BFu0s_L_BFu7c { unsigned short :0; long long v1; unsigned char v2:7; };
struct BFu0s_L_BFu7i { unsigned short :0; long long v1; unsigned int v2:7; };
struct BFu0s_L_BFu7ll { unsigned short :0; long long v1; unsigned long long v2:7; };
struct BFu0s_L_BFu7s { unsigned short :0; long long v1; unsigned short v2:7; };
struct BFu0s_L_BFu8c { unsigned short :0; long long v1; unsigned char v2:8; };
struct BFu0s_L_BFu8i { unsigned short :0; long long v1; unsigned int v2:8; };
struct BFu0s_L_BFu8ll { unsigned short :0; long long v1; unsigned long long v2:8; };
struct BFu0s_L_BFu8s { unsigned short :0; long long v1; unsigned short v2:8; };
struct BFu0s_L_BFu9i { unsigned short :0; long long v1; unsigned int v2:9; };
struct BFu0s_L_BFu9ll { unsigned short :0; long long v1; unsigned long long v2:9; };
struct BFu0s_L_BFu9s { unsigned short :0; long long v1; unsigned short v2:9; };
struct BFu0s_L_C { unsigned short :0; long long v1; char v2; };
struct BFu0s_L_D { unsigned short :0; long long v1; double v2; };
struct BFu0s_L_F { unsigned short :0; long long v1; float v2; };
struct BFu0s_L_I { unsigned short :0; long long v1; int v2; };
struct BFu0s_L_Ip { unsigned short :0; long long v1; int * v2; };
struct BFu0s_L_L { unsigned short :0; long long v1; long long v2; };
struct BFu0s_L_S { unsigned short :0; long long v1; short v2; };
struct BFu0s_L_Uc { unsigned short :0; long long v1; unsigned char v2; };
struct BFu0s_L_Ui { unsigned short :0; long long v1; unsigned int v2; };
struct BFu0s_L_Ul { unsigned short :0; long long v1; unsigned long long v2; };
struct BFu0s_L_Us { unsigned short :0; long long v1; unsigned short v2; };
struct BFu0s_L_Vp { unsigned short :0; long long v1; void * v2; };
struct BFu0s_S { unsigned short :0; short v1; };
struct BFu0s_S_BFu0c { unsigned short :0; short v1; unsigned char :0; };
struct BFu0s_S_BFu0i { unsigned short :0; short v1; unsigned int :0; };
struct BFu0s_S_BFu0ll { unsigned short :0; short v1; unsigned long long :0; };
struct BFu0s_S_BFu0s { unsigned short :0; short v1; unsigned short :0; };
struct BFu0s_S_BFu15i { unsigned short :0; short v1; unsigned int v2:15; };
struct BFu0s_S_BFu15ll { unsigned short :0; short v1; unsigned long long v2:15; };
struct BFu0s_S_BFu15s { unsigned short :0; short v1; unsigned short v2:15; };
struct BFu0s_S_BFu16i { unsigned short :0; short v1; unsigned int v2:16; };
struct BFu0s_S_BFu16ll { unsigned short :0; short v1; unsigned long long v2:16; };
struct BFu0s_S_BFu16s { unsigned short :0; short v1; unsigned short v2:16; };
struct BFu0s_S_BFu17i { unsigned short :0; short v1; unsigned int v2:17; };
struct BFu0s_S_BFu17ll { unsigned short :0; short v1; unsigned long long v2:17; };
struct BFu0s_S_BFu1c { unsigned short :0; short v1; unsigned char v2:1; };
struct BFu0s_S_BFu1i { unsigned short :0; short v1; unsigned int v2:1; };
struct BFu0s_S_BFu1ll { unsigned short :0; short v1; unsigned long long v2:1; };
struct BFu0s_S_BFu1s { unsigned short :0; short v1; unsigned short v2:1; };
struct BFu0s_S_BFu31i { unsigned short :0; short v1; unsigned int v2:31; };
struct BFu0s_S_BFu31ll { unsigned short :0; short v1; unsigned long long v2:31; };
struct BFu0s_S_BFu32i { unsigned short :0; short v1; unsigned int v2:32; };
struct BFu0s_S_BFu32ll { unsigned short :0; short v1; unsigned long long v2:32; };
struct BFu0s_S_BFu33 { unsigned short :0; short v1; unsigned long long v2:33; };
struct BFu0s_S_BFu7c { unsigned short :0; short v1; unsigned char v2:7; };
struct BFu0s_S_BFu7i { unsigned short :0; short v1; unsigned int v2:7; };
struct BFu0s_S_BFu7ll { unsigned short :0; short v1; unsigned long long v2:7; };
struct BFu0s_S_BFu7s { unsigned short :0; short v1; unsigned short v2:7; };
struct BFu0s_S_BFu8c { unsigned short :0; short v1; unsigned char v2:8; };
struct BFu0s_S_BFu8i { unsigned short :0; short v1; unsigned int v2:8; };
struct BFu0s_S_BFu8ll { unsigned short :0; short v1; unsigned long long v2:8; };
struct BFu0s_S_BFu8s { unsigned short :0; short v1; unsigned short v2:8; };
struct BFu0s_S_BFu9i { unsigned short :0; short v1; unsigned int v2:9; };
struct BFu0s_S_BFu9ll { unsigned short :0; short v1; unsigned long long v2:9; };
struct BFu0s_S_BFu9s { unsigned short :0; short v1; unsigned short v2:9; };
struct BFu0s_S_C { unsigned short :0; short v1; char v2; };
struct BFu0s_S_D { unsigned short :0; short v1; double v2; };
struct BFu0s_S_F { unsigned short :0; short v1; float v2; };
struct BFu0s_S_I { unsigned short :0; short v1; int v2; };
struct BFu0s_S_Ip { unsigned short :0; short v1; int * v2; };
struct BFu0s_S_L { unsigned short :0; short v1; long long v2; };
struct BFu0s_S_S { unsigned short :0; short v1; short v2; };
struct BFu0s_S_Uc { unsigned short :0; short v1; unsigned char v2; };
struct BFu0s_S_Ui { unsigned short :0; short v1; unsigned int v2; };
struct BFu0s_S_Ul { unsigned short :0; short v1; unsigned long long v2; };
struct BFu0s_S_Us { unsigned short :0; short v1; unsigned short v2; };
struct BFu0s_S_Vp { unsigned short :0; short v1; void * v2; };
struct BFu0s_Uc { unsigned short :0; unsigned char v1; };
struct BFu0s_Uc_BFu0c { unsigned short :0; unsigned char v1; unsigned char :0; };
struct BFu0s_Uc_BFu0i { unsigned short :0; unsigned char v1; unsigned int :0; };
struct BFu0s_Uc_BFu0ll { unsigned short :0; unsigned char v1; unsigned long long :0; };
struct BFu0s_Uc_BFu0s { unsigned short :0; unsigned char v1; unsigned short :0; };
struct BFu0s_Uc_BFu15i { unsigned short :0; unsigned char v1; unsigned int v2:15; };
struct BFu0s_Uc_BFu15ll { unsigned short :0; unsigned char v1; unsigned long long v2:15; };
struct BFu0s_Uc_BFu15s { unsigned short :0; unsigned char v1; unsigned short v2:15; };
struct BFu0s_Uc_BFu16i { unsigned short :0; unsigned char v1; unsigned int v2:16; };
struct BFu0s_Uc_BFu16ll { unsigned short :0; unsigned char v1; unsigned long long v2:16; };
struct BFu0s_Uc_BFu16s { unsigned short :0; unsigned char v1; unsigned short v2:16; };
struct BFu0s_Uc_BFu17i { unsigned short :0; unsigned char v1; unsigned int v2:17; };
struct BFu0s_Uc_BFu17ll { unsigned short :0; unsigned char v1; unsigned long long v2:17; };
struct BFu0s_Uc_BFu1c { unsigned short :0; unsigned char v1; unsigned char v2:1; };
struct BFu0s_Uc_BFu1i { unsigned short :0; unsigned char v1; unsigned int v2:1; };
struct BFu0s_Uc_BFu1ll { unsigned short :0; unsigned char v1; unsigned long long v2:1; };
struct BFu0s_Uc_BFu1s { unsigned short :0; unsigned char v1; unsigned short v2:1; };
struct BFu0s_Uc_BFu31i { unsigned short :0; unsigned char v1; unsigned int v2:31; };
struct BFu0s_Uc_BFu31ll { unsigned short :0; unsigned char v1; unsigned long long v2:31; };
struct BFu0s_Uc_BFu32i { unsigned short :0; unsigned char v1; unsigned int v2:32; };
struct BFu0s_Uc_BFu32ll { unsigned short :0; unsigned char v1; unsigned long long v2:32; };
struct BFu0s_Uc_BFu33 { unsigned short :0; unsigned char v1; unsigned long long v2:33; };
struct BFu0s_Uc_BFu7c { unsigned short :0; unsigned char v1; unsigned char v2:7; };
struct BFu0s_Uc_BFu7i { unsigned short :0; unsigned char v1; unsigned int v2:7; };
struct BFu0s_Uc_BFu7ll { unsigned short :0; unsigned char v1; unsigned long long v2:7; };
struct BFu0s_Uc_BFu7s { unsigned short :0; unsigned char v1; unsigned short v2:7; };
struct BFu0s_Uc_BFu8c { unsigned short :0; unsigned char v1; unsigned char v2:8; };
struct BFu0s_Uc_BFu8i { unsigned short :0; unsigned char v1; unsigned int v2:8; };
struct BFu0s_Uc_BFu8ll { unsigned short :0; unsigned char v1; unsigned long long v2:8; };
struct BFu0s_Uc_BFu8s { unsigned short :0; unsigned char v1; unsigned short v2:8; };
struct BFu0s_Uc_BFu9i { unsigned short :0; unsigned char v1; unsigned int v2:9; };
struct BFu0s_Uc_BFu9ll { unsigned short :0; unsigned char v1; unsigned long long v2:9; };
struct BFu0s_Uc_BFu9s { unsigned short :0; unsigned char v1; unsigned short v2:9; };
struct BFu0s_Uc_C { unsigned short :0; unsigned char v1; char v2; };
struct BFu0s_Uc_D { unsigned short :0; unsigned char v1; double v2; };
struct BFu0s_Uc_F { unsigned short :0; unsigned char v1; float v2; };
struct BFu0s_Uc_I { unsigned short :0; unsigned char v1; int v2; };
struct BFu0s_Uc_Ip { unsigned short :0; unsigned char v1; int * v2; };
struct BFu0s_Uc_L { unsigned short :0; unsigned char v1; long long v2; };
struct BFu0s_Uc_S { unsigned short :0; unsigned char v1; short v2; };
struct BFu0s_Uc_Uc { unsigned short :0; unsigned char v1; unsigned char v2; };
struct BFu0s_Uc_Ui { unsigned short :0; unsigned char v1; unsigned int v2; };
struct BFu0s_Uc_Ul { unsigned short :0; unsigned char v1; unsigned long long v2; };
struct BFu0s_Uc_Us { unsigned short :0; unsigned char v1; unsigned short v2; };
struct BFu0s_Uc_Vp { unsigned short :0; unsigned char v1; void * v2; };
struct BFu0s_Ui { unsigned short :0; unsigned int v1; };
struct BFu0s_Ui_BFu0c { unsigned short :0; unsigned int v1; unsigned char :0; };
struct BFu0s_Ui_BFu0i { unsigned short :0; unsigned int v1; unsigned int :0; };
struct BFu0s_Ui_BFu0ll { unsigned short :0; unsigned int v1; unsigned long long :0; };
struct BFu0s_Ui_BFu0s { unsigned short :0; unsigned int v1; unsigned short :0; };
struct BFu0s_Ui_BFu15i { unsigned short :0; unsigned int v1; unsigned int v2:15; };
struct BFu0s_Ui_BFu15ll { unsigned short :0; unsigned int v1; unsigned long long v2:15; };
struct BFu0s_Ui_BFu15s { unsigned short :0; unsigned int v1; unsigned short v2:15; };
struct BFu0s_Ui_BFu16i { unsigned short :0; unsigned int v1; unsigned int v2:16; };
struct BFu0s_Ui_BFu16ll { unsigned short :0; unsigned int v1; unsigned long long v2:16; };
struct BFu0s_Ui_BFu16s { unsigned short :0; unsigned int v1; unsigned short v2:16; };
struct BFu0s_Ui_BFu17i { unsigned short :0; unsigned int v1; unsigned int v2:17; };
struct BFu0s_Ui_BFu17ll { unsigned short :0; unsigned int v1; unsigned long long v2:17; };
struct BFu0s_Ui_BFu1c { unsigned short :0; unsigned int v1; unsigned char v2:1; };
struct BFu0s_Ui_BFu1i { unsigned short :0; unsigned int v1; unsigned int v2:1; };
struct BFu0s_Ui_BFu1ll { unsigned short :0; unsigned int v1; unsigned long long v2:1; };
struct BFu0s_Ui_BFu1s { unsigned short :0; unsigned int v1; unsigned short v2:1; };
struct BFu0s_Ui_BFu31i { unsigned short :0; unsigned int v1; unsigned int v2:31; };
struct BFu0s_Ui_BFu31ll { unsigned short :0; unsigned int v1; unsigned long long v2:31; };
struct BFu0s_Ui_BFu32i { unsigned short :0; unsigned int v1; unsigned int v2:32; };
struct BFu0s_Ui_BFu32ll { unsigned short :0; unsigned int v1; unsigned long long v2:32; };
struct BFu0s_Ui_BFu33 { unsigned short :0; unsigned int v1; unsigned long long v2:33; };
struct BFu0s_Ui_BFu7c { unsigned short :0; unsigned int v1; unsigned char v2:7; };
struct BFu0s_Ui_BFu7i { unsigned short :0; unsigned int v1; unsigned int v2:7; };
struct BFu0s_Ui_BFu7ll { unsigned short :0; unsigned int v1; unsigned long long v2:7; };
struct BFu0s_Ui_BFu7s { unsigned short :0; unsigned int v1; unsigned short v2:7; };
struct BFu0s_Ui_BFu8c { unsigned short :0; unsigned int v1; unsigned char v2:8; };
struct BFu0s_Ui_BFu8i { unsigned short :0; unsigned int v1; unsigned int v2:8; };
struct BFu0s_Ui_BFu8ll { unsigned short :0; unsigned int v1; unsigned long long v2:8; };
struct BFu0s_Ui_BFu8s { unsigned short :0; unsigned int v1; unsigned short v2:8; };
struct BFu0s_Ui_BFu9i { unsigned short :0; unsigned int v1; unsigned int v2:9; };
struct BFu0s_Ui_BFu9ll { unsigned short :0; unsigned int v1; unsigned long long v2:9; };
struct BFu0s_Ui_BFu9s { unsigned short :0; unsigned int v1; unsigned short v2:9; };
struct BFu0s_Ui_C { unsigned short :0; unsigned int v1; char v2; };
struct BFu0s_Ui_D { unsigned short :0; unsigned int v1; double v2; };
struct BFu0s_Ui_F { unsigned short :0; unsigned int v1; float v2; };
struct BFu0s_Ui_I { unsigned short :0; unsigned int v1; int v2; };
struct BFu0s_Ui_Ip { unsigned short :0; unsigned int v1; int * v2; };
struct BFu0s_Ui_L { unsigned short :0; unsigned int v1; long long v2; };
struct BFu0s_Ui_S { unsigned short :0; unsigned int v1; short v2; };
struct BFu0s_Ui_Uc { unsigned short :0; unsigned int v1; unsigned char v2; };
struct BFu0s_Ui_Ui { unsigned short :0; unsigned int v1; unsigned int v2; };
struct BFu0s_Ui_Ul { unsigned short :0; unsigned int v1; unsigned long long v2; };
struct BFu0s_Ui_Us { unsigned short :0; unsigned int v1; unsigned short v2; };
struct BFu0s_Ui_Vp { unsigned short :0; unsigned int v1; void * v2; };
struct BFu0s_Ul { unsigned short :0; unsigned long long v1; };
struct BFu0s_Ul_BFu0c { unsigned short :0; unsigned long long v1; unsigned char :0; };
struct BFu0s_Ul_BFu0i { unsigned short :0; unsigned long long v1; unsigned int :0; };
struct BFu0s_Ul_BFu0ll { unsigned short :0; unsigned long long v1; unsigned long long :0; };
struct BFu0s_Ul_BFu0s { unsigned short :0; unsigned long long v1; unsigned short :0; };
struct BFu0s_Ul_BFu15i { unsigned short :0; unsigned long long v1; unsigned int v2:15; };
struct BFu0s_Ul_BFu15ll { unsigned short :0; unsigned long long v1; unsigned long long v2:15; };
struct BFu0s_Ul_BFu15s { unsigned short :0; unsigned long long v1; unsigned short v2:15; };
struct BFu0s_Ul_BFu16i { unsigned short :0; unsigned long long v1; unsigned int v2:16; };
struct BFu0s_Ul_BFu16ll { unsigned short :0; unsigned long long v1; unsigned long long v2:16; };
struct BFu0s_Ul_BFu16s { unsigned short :0; unsigned long long v1; unsigned short v2:16; };
struct BFu0s_Ul_BFu17i { unsigned short :0; unsigned long long v1; unsigned int v2:17; };
struct BFu0s_Ul_BFu17ll { unsigned short :0; unsigned long long v1; unsigned long long v2:17; };
struct BFu0s_Ul_BFu1c { unsigned short :0; unsigned long long v1; unsigned char v2:1; };
struct BFu0s_Ul_BFu1i { unsigned short :0; unsigned long long v1; unsigned int v2:1; };
struct BFu0s_Ul_BFu1ll { unsigned short :0; unsigned long long v1; unsigned long long v2:1; };
struct BFu0s_Ul_BFu1s { unsigned short :0; unsigned long long v1; unsigned short v2:1; };
struct BFu0s_Ul_BFu31i { unsigned short :0; unsigned long long v1; unsigned int v2:31; };
struct BFu0s_Ul_BFu31ll { unsigned short :0; unsigned long long v1; unsigned long long v2:31; };
struct BFu0s_Ul_BFu32i { unsigned short :0; unsigned long long v1; unsigned int v2:32; };
struct BFu0s_Ul_BFu32ll { unsigned short :0; unsigned long long v1; unsigned long long v2:32; };
struct BFu0s_Ul_BFu33 { unsigned short :0; unsigned long long v1; unsigned long long v2:33; };
struct BFu0s_Ul_BFu7c { unsigned short :0; unsigned long long v1; unsigned char v2:7; };
struct BFu0s_Ul_BFu7i { unsigned short :0; unsigned long long v1; unsigned int v2:7; };
struct BFu0s_Ul_BFu7ll { unsigned short :0; unsigned long long v1; unsigned long long v2:7; };
struct BFu0s_Ul_BFu7s { unsigned short :0; unsigned long long v1; unsigned short v2:7; };
struct BFu0s_Ul_BFu8c { unsigned short :0; unsigned long long v1; unsigned char v2:8; };
struct BFu0s_Ul_BFu8i { unsigned short :0; unsigned long long v1; unsigned int v2:8; };
struct BFu0s_Ul_BFu8ll { unsigned short :0; unsigned long long v1; unsigned long long v2:8; };
struct BFu0s_Ul_BFu8s { unsigned short :0; unsigned long long v1; unsigned short v2:8; };
struct BFu0s_Ul_BFu9i { unsigned short :0; unsigned long long v1; unsigned int v2:9; };
struct BFu0s_Ul_BFu9ll { unsigned short :0; unsigned long long v1; unsigned long long v2:9; };
struct BFu0s_Ul_BFu9s { unsigned short :0; unsigned long long v1; unsigned short v2:9; };
struct BFu0s_Ul_C { unsigned short :0; unsigned long long v1; char v2; };
struct BFu0s_Ul_D { unsigned short :0; unsigned long long v1; double v2; };
struct BFu0s_Ul_F { unsigned short :0; unsigned long long v1; float v2; };
struct BFu0s_Ul_I { unsigned short :0; unsigned long long v1; int v2; };
struct BFu0s_Ul_Ip { unsigned short :0; unsigned long long v1; int * v2; };
struct BFu0s_Ul_L { unsigned short :0; unsigned long long v1; long long v2; };
struct BFu0s_Ul_S { unsigned short :0; unsigned long long v1; short v2; };
struct BFu0s_Ul_Uc { unsigned short :0; unsigned long long v1; unsigned char v2; };
struct BFu0s_Ul_Ui { unsigned short :0; unsigned long long v1; unsigned int v2; };
struct BFu0s_Ul_Ul { unsigned short :0; unsigned long long v1; unsigned long long v2; };
struct BFu0s_Ul_Us { unsigned short :0; unsigned long long v1; unsigned short v2; };
struct BFu0s_Ul_Vp { unsigned short :0; unsigned long long v1; void * v2; };
struct BFu0s_Us { unsigned short :0; unsigned short v1; };
struct BFu0s_Us_BFu0c { unsigned short :0; unsigned short v1; unsigned char :0; };
struct BFu0s_Us_BFu0i { unsigned short :0; unsigned short v1; unsigned int :0; };
struct BFu0s_Us_BFu0ll { unsigned short :0; unsigned short v1; unsigned long long :0; };
struct BFu0s_Us_BFu0s { unsigned short :0; unsigned short v1; unsigned short :0; };
struct BFu0s_Us_BFu15i { unsigned short :0; unsigned short v1; unsigned int v2:15; };
struct BFu0s_Us_BFu15ll { unsigned short :0; unsigned short v1; unsigned long long v2:15; };
struct BFu0s_Us_BFu15s { unsigned short :0; unsigned short v1; unsigned short v2:15; };
struct BFu0s_Us_BFu16i { unsigned short :0; unsigned short v1; unsigned int v2:16; };
struct BFu0s_Us_BFu16ll { unsigned short :0; unsigned short v1; unsigned long long v2:16; };
struct BFu0s_Us_BFu16s { unsigned short :0; unsigned short v1; unsigned short v2:16; };
struct BFu0s_Us_BFu17i { unsigned short :0; unsigned short v1; unsigned int v2:17; };
struct BFu0s_Us_BFu17ll { unsigned short :0; unsigned short v1; unsigned long long v2:17; };
struct BFu0s_Us_BFu1c { unsigned short :0; unsigned short v1; unsigned char v2:1; };
struct BFu0s_Us_BFu1i { unsigned short :0; unsigned short v1; unsigned int v2:1; };
struct BFu0s_Us_BFu1ll { unsigned short :0; unsigned short v1; unsigned long long v2:1; };
struct BFu0s_Us_BFu1s { unsigned short :0; unsigned short v1; unsigned short v2:1; };
struct BFu0s_Us_BFu31i { unsigned short :0; unsigned short v1; unsigned int v2:31; };
struct BFu0s_Us_BFu31ll { unsigned short :0; unsigned short v1; unsigned long long v2:31; };
struct BFu0s_Us_BFu32i { unsigned short :0; unsigned short v1; unsigned int v2:32; };
struct BFu0s_Us_BFu32ll { unsigned short :0; unsigned short v1; unsigned long long v2:32; };
struct BFu0s_Us_BFu33 { unsigned short :0; unsigned short v1; unsigned long long v2:33; };
struct BFu0s_Us_BFu7c { unsigned short :0; unsigned short v1; unsigned char v2:7; };
struct BFu0s_Us_BFu7i { unsigned short :0; unsigned short v1; unsigned int v2:7; };
struct BFu0s_Us_BFu7ll { unsigned short :0; unsigned short v1; unsigned long long v2:7; };
struct BFu0s_Us_BFu7s { unsigned short :0; unsigned short v1; unsigned short v2:7; };
struct BFu0s_Us_BFu8c { unsigned short :0; unsigned short v1; unsigned char v2:8; };
struct BFu0s_Us_BFu8i { unsigned short :0; unsigned short v1; unsigned int v2:8; };
struct BFu0s_Us_BFu8ll { unsigned short :0; unsigned short v1; unsigned long long v2:8; };
struct BFu0s_Us_BFu8s { unsigned short :0; unsigned short v1; unsigned short v2:8; };
struct BFu0s_Us_BFu9i { unsigned short :0; unsigned short v1; unsigned int v2:9; };
struct BFu0s_Us_BFu9ll { unsigned short :0; unsigned short v1; unsigned long long v2:9; };
struct BFu0s_Us_BFu9s { unsigned short :0; unsigned short v1; unsigned short v2:9; };
struct BFu0s_Us_C { unsigned short :0; unsigned short v1; char v2; };
struct BFu0s_Us_D { unsigned short :0; unsigned short v1; double v2; };
struct BFu0s_Us_F { unsigned short :0; unsigned short v1; float v2; };
struct BFu0s_Us_I { unsigned short :0; unsigned short v1; int v2; };
struct BFu0s_Us_Ip { unsigned short :0; unsigned short v1; int * v2; };
struct BFu0s_Us_L { unsigned short :0; unsigned short v1; long long v2; };
struct BFu0s_Us_S { unsigned short :0; unsigned short v1; short v2; };
struct BFu0s_Us_Uc { unsigned short :0; unsigned short v1; unsigned char v2; };
struct BFu0s_Us_Ui { unsigned short :0; unsigned short v1; unsigned int v2; };
struct BFu0s_Us_Ul { unsigned short :0; unsigned short v1; unsigned long long v2; };
struct BFu0s_Us_Us { unsigned short :0; unsigned short v1; unsigned short v2; };
struct BFu0s_Us_Vp { unsigned short :0; unsigned short v1; void * v2; };
struct BFu0s_Vp { unsigned short :0; void * v1; };
struct BFu0s_Vp_BFu0c { unsigned short :0; void * v1; unsigned char :0; };
struct BFu0s_Vp_BFu0i { unsigned short :0; void * v1; unsigned int :0; };
struct BFu0s_Vp_BFu0ll { unsigned short :0; void * v1; unsigned long long :0; };
struct BFu0s_Vp_BFu0s { unsigned short :0; void * v1; unsigned short :0; };
struct BFu0s_Vp_BFu15i { unsigned short :0; void * v1; unsigned int v2:15; };
struct BFu0s_Vp_BFu15ll { unsigned short :0; void * v1; unsigned long long v2:15; };
struct BFu0s_Vp_BFu15s { unsigned short :0; void * v1; unsigned short v2:15; };
struct BFu0s_Vp_BFu16i { unsigned short :0; void * v1; unsigned int v2:16; };
struct BFu0s_Vp_BFu16ll { unsigned short :0; void * v1; unsigned long long v2:16; };
struct BFu0s_Vp_BFu16s { unsigned short :0; void * v1; unsigned short v2:16; };
struct BFu0s_Vp_BFu17i { unsigned short :0; void * v1; unsigned int v2:17; };
struct BFu0s_Vp_BFu17ll { unsigned short :0; void * v1; unsigned long long v2:17; };
struct BFu0s_Vp_BFu1c { unsigned short :0; void * v1; unsigned char v2:1; };
struct BFu0s_Vp_BFu1i { unsigned short :0; void * v1; unsigned int v2:1; };
struct BFu0s_Vp_BFu1ll { unsigned short :0; void * v1; unsigned long long v2:1; };
struct BFu0s_Vp_BFu1s { unsigned short :0; void * v1; unsigned short v2:1; };
struct BFu0s_Vp_BFu31i { unsigned short :0; void * v1; unsigned int v2:31; };
struct BFu0s_Vp_BFu31ll { unsigned short :0; void * v1; unsigned long long v2:31; };
struct BFu0s_Vp_BFu32i { unsigned short :0; void * v1; unsigned int v2:32; };
struct BFu0s_Vp_BFu32ll { unsigned short :0; void * v1; unsigned long long v2:32; };
struct BFu0s_Vp_BFu33 { unsigned short :0; void * v1; unsigned long long v2:33; };
struct BFu0s_Vp_BFu7c { unsigned short :0; void * v1; unsigned char v2:7; };
struct BFu0s_Vp_BFu7i { unsigned short :0; void * v1; unsigned int v2:7; };
struct BFu0s_Vp_BFu7ll { unsigned short :0; void * v1; unsigned long long v2:7; };
struct BFu0s_Vp_BFu7s { unsigned short :0; void * v1; unsigned short v2:7; };
struct BFu0s_Vp_BFu8c { unsigned short :0; void * v1; unsigned char v2:8; };
struct BFu0s_Vp_BFu8i { unsigned short :0; void * v1; unsigned int v2:8; };
struct BFu0s_Vp_BFu8ll { unsigned short :0; void * v1; unsigned long long v2:8; };
struct BFu0s_Vp_BFu8s { unsigned short :0; void * v1; unsigned short v2:8; };
struct BFu0s_Vp_BFu9i { unsigned short :0; void * v1; unsigned int v2:9; };
struct BFu0s_Vp_BFu9ll { unsigned short :0; void * v1; unsigned long long v2:9; };
struct BFu0s_Vp_BFu9s { unsigned short :0; void * v1; unsigned short v2:9; };
struct BFu0s_Vp_C { unsigned short :0; void * v1; char v2; };
struct BFu0s_Vp_D { unsigned short :0; void * v1; double v2; };
struct BFu0s_Vp_F { unsigned short :0; void * v1; float v2; };
struct BFu0s_Vp_I { unsigned short :0; void * v1; int v2; };
struct BFu0s_Vp_Ip { unsigned short :0; void * v1; int * v2; };
struct BFu0s_Vp_L { unsigned short :0; void * v1; long long v2; };
struct BFu0s_Vp_S { unsigned short :0; void * v1; short v2; };
struct BFu0s_Vp_Uc { unsigned short :0; void * v1; unsigned char v2; };
struct BFu0s_Vp_Ui { unsigned short :0; void * v1; unsigned int v2; };
struct BFu0s_Vp_Ul { unsigned short :0; void * v1; unsigned long long v2; };
struct BFu0s_Vp_Us { unsigned short :0; void * v1; unsigned short v2; };
struct BFu0s_Vp_Vp { unsigned short :0; void * v1; void * v2; };
struct BFu15i_BFu0c { unsigned int v1:15; unsigned char :0; };
struct BFu15i_BFu0c_BFu0c { unsigned int v1:15; unsigned char :0; unsigned char :0; };
struct BFu15i_BFu0c_BFu0i { unsigned int v1:15; unsigned char :0; unsigned int :0; };
struct BFu15i_BFu0c_BFu0ll { unsigned int v1:15; unsigned char :0; unsigned long long :0; };
struct BFu15i_BFu0c_BFu0s { unsigned int v1:15; unsigned char :0; unsigned short :0; };
struct BFu15i_BFu0c_BFu15i { unsigned int v1:15; unsigned char :0; unsigned int v2:15; };
struct BFu15i_BFu0c_BFu15ll { unsigned int v1:15; unsigned char :0; unsigned long long v2:15; };
struct BFu15i_BFu0c_BFu15s { unsigned int v1:15; unsigned char :0; unsigned short v2:15; };
struct BFu15i_BFu0c_BFu16i { unsigned int v1:15; unsigned char :0; unsigned int v2:16; };
struct BFu15i_BFu0c_BFu16ll { unsigned int v1:15; unsigned char :0; unsigned long long v2:16; };
struct BFu15i_BFu0c_BFu16s { unsigned int v1:15; unsigned char :0; unsigned short v2:16; };
struct BFu15i_BFu0c_BFu17i { unsigned int v1:15; unsigned char :0; unsigned int v2:17; };
struct BFu15i_BFu0c_BFu17ll { unsigned int v1:15; unsigned char :0; unsigned long long v2:17; };
struct BFu15i_BFu0c_BFu1c { unsigned int v1:15; unsigned char :0; unsigned char v2:1; };
struct BFu15i_BFu0c_BFu1i { unsigned int v1:15; unsigned char :0; unsigned int v2:1; };
struct BFu15i_BFu0c_BFu1ll { unsigned int v1:15; unsigned char :0; unsigned long long v2:1; };
struct BFu15i_BFu0c_BFu1s { unsigned int v1:15; unsigned char :0; unsigned short v2:1; };
struct BFu15i_BFu0c_BFu31i { unsigned int v1:15; unsigned char :0; unsigned int v2:31; };
struct BFu15i_BFu0c_BFu31ll { unsigned int v1:15; unsigned char :0; unsigned long long v2:31; };
struct BFu15i_BFu0c_BFu32i { unsigned int v1:15; unsigned char :0; unsigned int v2:32; };
struct BFu15i_BFu0c_BFu32ll { unsigned int v1:15; unsigned char :0; unsigned long long v2:32; };
struct BFu15i_BFu0c_BFu33 { unsigned int v1:15; unsigned char :0; unsigned long long v2:33; };
struct BFu15i_BFu0c_BFu7c { unsigned int v1:15; unsigned char :0; unsigned char v2:7; };
struct BFu15i_BFu0c_BFu7i { unsigned int v1:15; unsigned char :0; unsigned int v2:7; };
struct BFu15i_BFu0c_BFu7ll { unsigned int v1:15; unsigned char :0; unsigned long long v2:7; };
struct BFu15i_BFu0c_BFu7s { unsigned int v1:15; unsigned char :0; unsigned short v2:7; };
struct BFu15i_BFu0c_BFu8c { unsigned int v1:15; unsigned char :0; unsigned char v2:8; };
struct BFu15i_BFu0c_BFu8i { unsigned int v1:15; unsigned char :0; unsigned int v2:8; };
struct BFu15i_BFu0c_BFu8ll { unsigned int v1:15; unsigned char :0; unsigned long long v2:8; };
struct BFu15i_BFu0c_BFu8s { unsigned int v1:15; unsigned char :0; unsigned short v2:8; };
struct BFu15i_BFu0c_BFu9i { unsigned int v1:15; unsigned char :0; unsigned int v2:9; };
struct BFu15i_BFu0c_BFu9ll { unsigned int v1:15; unsigned char :0; unsigned long long v2:9; };
struct BFu15i_BFu0c_BFu9s { unsigned int v1:15; unsigned char :0; unsigned short v2:9; };
struct BFu15i_BFu0c_C { unsigned int v1:15; unsigned char :0; char v2; };
struct BFu15i_BFu0c_D { unsigned int v1:15; unsigned char :0; double v2; };
struct BFu15i_BFu0c_F { unsigned int v1:15; unsigned char :0; float v2; };
struct BFu15i_BFu0c_I { unsigned int v1:15; unsigned char :0; int v2; };
struct BFu15i_BFu0c_Ip { unsigned int v1:15; unsigned char :0; int * v2; };
struct BFu15i_BFu0c_L { unsigned int v1:15; unsigned char :0; long long v2; };
struct BFu15i_BFu0c_S { unsigned int v1:15; unsigned char :0; short v2; };
struct BFu15i_BFu0c_Uc { unsigned int v1:15; unsigned char :0; unsigned char v2; };
struct BFu15i_BFu0c_Ui { unsigned int v1:15; unsigned char :0; unsigned int v2; };
struct BFu15i_BFu0c_Ul { unsigned int v1:15; unsigned char :0; unsigned long long v2; };
struct BFu15i_BFu0c_Us { unsigned int v1:15; unsigned char :0; unsigned short v2; };
struct BFu15i_BFu0c_Vp { unsigned int v1:15; unsigned char :0; void * v2; };
struct BFu15i_BFu0i { unsigned int v1:15; unsigned int :0; };
struct BFu15i_BFu0i_BFu0c { unsigned int v1:15; unsigned int :0; unsigned char :0; };
struct BFu15i_BFu0i_BFu0i { unsigned int v1:15; unsigned int :0; unsigned int :0; };
struct BFu15i_BFu0i_BFu0ll { unsigned int v1:15; unsigned int :0; unsigned long long :0; };
struct BFu15i_BFu0i_BFu0s { unsigned int v1:15; unsigned int :0; unsigned short :0; };
struct BFu15i_BFu0i_BFu15i { unsigned int v1:15; unsigned int :0; unsigned int v2:15; };
struct BFu15i_BFu0i_BFu15ll { unsigned int v1:15; unsigned int :0; unsigned long long v2:15; };
struct BFu15i_BFu0i_BFu15s { unsigned int v1:15; unsigned int :0; unsigned short v2:15; };
struct BFu15i_BFu0i_BFu16i { unsigned int v1:15; unsigned int :0; unsigned int v2:16; };
struct BFu15i_BFu0i_BFu16ll { unsigned int v1:15; unsigned int :0; unsigned long long v2:16; };
struct BFu15i_BFu0i_BFu16s { unsigned int v1:15; unsigned int :0; unsigned short v2:16; };
struct BFu15i_BFu0i_BFu17i { unsigned int v1:15; unsigned int :0; unsigned int v2:17; };
struct BFu15i_BFu0i_BFu17ll { unsigned int v1:15; unsigned int :0; unsigned long long v2:17; };
struct BFu15i_BFu0i_BFu1c { unsigned int v1:15; unsigned int :0; unsigned char v2:1; };
struct BFu15i_BFu0i_BFu1i { unsigned int v1:15; unsigned int :0; unsigned int v2:1; };
struct BFu15i_BFu0i_BFu1ll { unsigned int v1:15; unsigned int :0; unsigned long long v2:1; };
struct BFu15i_BFu0i_BFu1s { unsigned int v1:15; unsigned int :0; unsigned short v2:1; };
struct BFu15i_BFu0i_BFu31i { unsigned int v1:15; unsigned int :0; unsigned int v2:31; };
struct BFu15i_BFu0i_BFu31ll { unsigned int v1:15; unsigned int :0; unsigned long long v2:31; };
struct BFu15i_BFu0i_BFu32i { unsigned int v1:15; unsigned int :0; unsigned int v2:32; };
struct BFu15i_BFu0i_BFu32ll { unsigned int v1:15; unsigned int :0; unsigned long long v2:32; };
struct BFu15i_BFu0i_BFu33 { unsigned int v1:15; unsigned int :0; unsigned long long v2:33; };
struct BFu15i_BFu0i_BFu7c { unsigned int v1:15; unsigned int :0; unsigned char v2:7; };
struct BFu15i_BFu0i_BFu7i { unsigned int v1:15; unsigned int :0; unsigned int v2:7; };
struct BFu15i_BFu0i_BFu7ll { unsigned int v1:15; unsigned int :0; unsigned long long v2:7; };
struct BFu15i_BFu0i_BFu7s { unsigned int v1:15; unsigned int :0; unsigned short v2:7; };
struct BFu15i_BFu0i_BFu8c { unsigned int v1:15; unsigned int :0; unsigned char v2:8; };
struct BFu15i_BFu0i_BFu8i { unsigned int v1:15; unsigned int :0; unsigned int v2:8; };
struct BFu15i_BFu0i_BFu8ll { unsigned int v1:15; unsigned int :0; unsigned long long v2:8; };
struct BFu15i_BFu0i_BFu8s { unsigned int v1:15; unsigned int :0; unsigned short v2:8; };
struct BFu15i_BFu0i_BFu9i { unsigned int v1:15; unsigned int :0; unsigned int v2:9; };
struct BFu15i_BFu0i_BFu9ll { unsigned int v1:15; unsigned int :0; unsigned long long v2:9; };
struct BFu15i_BFu0i_BFu9s { unsigned int v1:15; unsigned int :0; unsigned short v2:9; };
struct BFu15i_BFu0i_C { unsigned int v1:15; unsigned int :0; char v2; };
struct BFu15i_BFu0i_D { unsigned int v1:15; unsigned int :0; double v2; };
struct BFu15i_BFu0i_F { unsigned int v1:15; unsigned int :0; float v2; };
struct BFu15i_BFu0i_I { unsigned int v1:15; unsigned int :0; int v2; };
struct BFu15i_BFu0i_Ip { unsigned int v1:15; unsigned int :0; int * v2; };
struct BFu15i_BFu0i_L { unsigned int v1:15; unsigned int :0; long long v2; };
struct BFu15i_BFu0i_S { unsigned int v1:15; unsigned int :0; short v2; };
struct BFu15i_BFu0i_Uc { unsigned int v1:15; unsigned int :0; unsigned char v2; };
struct BFu15i_BFu0i_Ui { unsigned int v1:15; unsigned int :0; unsigned int v2; };
struct BFu15i_BFu0i_Ul { unsigned int v1:15; unsigned int :0; unsigned long long v2; };
struct BFu15i_BFu0i_Us { unsigned int v1:15; unsigned int :0; unsigned short v2; };
struct BFu15i_BFu0i_Vp { unsigned int v1:15; unsigned int :0; void * v2; };
struct BFu15i_BFu0ll { unsigned int v1:15; unsigned long long :0; };
struct BFu15i_BFu0ll_BFu0c { unsigned int v1:15; unsigned long long :0; unsigned char :0; };
struct BFu15i_BFu0ll_BFu0i { unsigned int v1:15; unsigned long long :0; unsigned int :0; };
struct BFu15i_BFu0ll_BFu0ll { unsigned int v1:15; unsigned long long :0; unsigned long long :0; };
struct BFu15i_BFu0ll_BFu0s { unsigned int v1:15; unsigned long long :0; unsigned short :0; };
struct BFu15i_BFu0ll_BFu15i { unsigned int v1:15; unsigned long long :0; unsigned int v2:15; };
struct BFu15i_BFu0ll_BFu15ll { unsigned int v1:15; unsigned long long :0; unsigned long long v2:15; };
struct BFu15i_BFu0ll_BFu15s { unsigned int v1:15; unsigned long long :0; unsigned short v2:15; };
struct BFu15i_BFu0ll_BFu16i { unsigned int v1:15; unsigned long long :0; unsigned int v2:16; };
struct BFu15i_BFu0ll_BFu16ll { unsigned int v1:15; unsigned long long :0; unsigned long long v2:16; };
struct BFu15i_BFu0ll_BFu16s { unsigned int v1:15; unsigned long long :0; unsigned short v2:16; };
struct BFu15i_BFu0ll_BFu17i { unsigned int v1:15; unsigned long long :0; unsigned int v2:17; };
struct BFu15i_BFu0ll_BFu17ll { unsigned int v1:15; unsigned long long :0; unsigned long long v2:17; };
struct BFu15i_BFu0ll_BFu1c { unsigned int v1:15; unsigned long long :0; unsigned char v2:1; };
struct BFu15i_BFu0ll_BFu1i { unsigned int v1:15; unsigned long long :0; unsigned int v2:1; };
struct BFu15i_BFu0ll_BFu1ll { unsigned int v1:15; unsigned long long :0; unsigned long long v2:1; };
struct BFu15i_BFu0ll_BFu1s { unsigned int v1:15; unsigned long long :0; unsigned short v2:1; };
struct BFu15i_BFu0ll_BFu31i { unsigned int v1:15; unsigned long long :0; unsigned int v2:31; };
struct BFu15i_BFu0ll_BFu31ll { unsigned int v1:15; unsigned long long :0; unsigned long long v2:31; };
struct BFu15i_BFu0ll_BFu32i { unsigned int v1:15; unsigned long long :0; unsigned int v2:32; };
struct BFu15i_BFu0ll_BFu32ll { unsigned int v1:15; unsigned long long :0; unsigned long long v2:32; };
struct BFu15i_BFu0ll_BFu33 { unsigned int v1:15; unsigned long long :0; unsigned long long v2:33; };
struct BFu15i_BFu0ll_BFu7c { unsigned int v1:15; unsigned long long :0; unsigned char v2:7; };
struct BFu15i_BFu0ll_BFu7i { unsigned int v1:15; unsigned long long :0; unsigned int v2:7; };
struct BFu15i_BFu0ll_BFu7ll { unsigned int v1:15; unsigned long long :0; unsigned long long v2:7; };
struct BFu15i_BFu0ll_BFu7s { unsigned int v1:15; unsigned long long :0; unsigned short v2:7; };
struct BFu15i_BFu0ll_BFu8c { unsigned int v1:15; unsigned long long :0; unsigned char v2:8; };
struct BFu15i_BFu0ll_BFu8i { unsigned int v1:15; unsigned long long :0; unsigned int v2:8; };
struct BFu15i_BFu0ll_BFu8ll { unsigned int v1:15; unsigned long long :0; unsigned long long v2:8; };
struct BFu15i_BFu0ll_BFu8s { unsigned int v1:15; unsigned long long :0; unsigned short v2:8; };
struct BFu15i_BFu0ll_BFu9i { unsigned int v1:15; unsigned long long :0; unsigned int v2:9; };
struct BFu15i_BFu0ll_BFu9ll { unsigned int v1:15; unsigned long long :0; unsigned long long v2:9; };
struct BFu15i_BFu0ll_BFu9s { unsigned int v1:15; unsigned long long :0; unsigned short v2:9; };
struct BFu15i_BFu0ll_C { unsigned int v1:15; unsigned long long :0; char v2; };
struct BFu15i_BFu0ll_D { unsigned int v1:15; unsigned long long :0; double v2; };
struct BFu15i_BFu0ll_F { unsigned int v1:15; unsigned long long :0; float v2; };
struct BFu15i_BFu0ll_I { unsigned int v1:15; unsigned long long :0; int v2; };
struct BFu15i_BFu0ll_Ip { unsigned int v1:15; unsigned long long :0; int * v2; };
struct BFu15i_BFu0ll_L { unsigned int v1:15; unsigned long long :0; long long v2; };
struct BFu15i_BFu0ll_S { unsigned int v1:15; unsigned long long :0; short v2; };
struct BFu15i_BFu0ll_Uc { unsigned int v1:15; unsigned long long :0; unsigned char v2; };
struct BFu15i_BFu0ll_Ui { unsigned int v1:15; unsigned long long :0; unsigned int v2; };
struct BFu15i_BFu0ll_Ul { unsigned int v1:15; unsigned long long :0; unsigned long long v2; };
struct BFu15i_BFu0ll_Us { unsigned int v1:15; unsigned long long :0; unsigned short v2; };
struct BFu15i_BFu0ll_Vp { unsigned int v1:15; unsigned long long :0; void * v2; };
struct BFu15i_BFu0s { unsigned int v1:15; unsigned short :0; };
struct BFu15i_BFu0s_BFu0c { unsigned int v1:15; unsigned short :0; unsigned char :0; };
struct BFu15i_BFu0s_BFu0i { unsigned int v1:15; unsigned short :0; unsigned int :0; };
struct BFu15i_BFu0s_BFu0ll { unsigned int v1:15; unsigned short :0; unsigned long long :0; };
struct BFu15i_BFu0s_BFu0s { unsigned int v1:15; unsigned short :0; unsigned short :0; };
struct BFu15i_BFu0s_BFu15i { unsigned int v1:15; unsigned short :0; unsigned int v2:15; };
struct BFu15i_BFu0s_BFu15ll { unsigned int v1:15; unsigned short :0; unsigned long long v2:15; };
struct BFu15i_BFu0s_BFu15s { unsigned int v1:15; unsigned short :0; unsigned short v2:15; };
struct BFu15i_BFu0s_BFu16i { unsigned int v1:15; unsigned short :0; unsigned int v2:16; };
struct BFu15i_BFu0s_BFu16ll { unsigned int v1:15; unsigned short :0; unsigned long long v2:16; };
struct BFu15i_BFu0s_BFu16s { unsigned int v1:15; unsigned short :0; unsigned short v2:16; };
struct BFu15i_BFu0s_BFu17i { unsigned int v1:15; unsigned short :0; unsigned int v2:17; };
struct BFu15i_BFu0s_BFu17ll { unsigned int v1:15; unsigned short :0; unsigned long long v2:17; };
struct BFu15i_BFu0s_BFu1c { unsigned int v1:15; unsigned short :0; unsigned char v2:1; };
struct BFu15i_BFu0s_BFu1i { unsigned int v1:15; unsigned short :0; unsigned int v2:1; };
struct BFu15i_BFu0s_BFu1ll { unsigned int v1:15; unsigned short :0; unsigned long long v2:1; };
struct BFu15i_BFu0s_BFu1s { unsigned int v1:15; unsigned short :0; unsigned short v2:1; };
struct BFu15i_BFu0s_BFu31i { unsigned int v1:15; unsigned short :0; unsigned int v2:31; };
struct BFu15i_BFu0s_BFu31ll { unsigned int v1:15; unsigned short :0; unsigned long long v2:31; };
struct BFu15i_BFu0s_BFu32i { unsigned int v1:15; unsigned short :0; unsigned int v2:32; };
struct BFu15i_BFu0s_BFu32ll { unsigned int v1:15; unsigned short :0; unsigned long long v2:32; };
struct BFu15i_BFu0s_BFu33 { unsigned int v1:15; unsigned short :0; unsigned long long v2:33; };
struct BFu15i_BFu0s_BFu7c { unsigned int v1:15; unsigned short :0; unsigned char v2:7; };
struct BFu15i_BFu0s_BFu7i { unsigned int v1:15; unsigned short :0; unsigned int v2:7; };
struct BFu15i_BFu0s_BFu7ll { unsigned int v1:15; unsigned short :0; unsigned long long v2:7; };
struct BFu15i_BFu0s_BFu7s { unsigned int v1:15; unsigned short :0; unsigned short v2:7; };
struct BFu15i_BFu0s_BFu8c { unsigned int v1:15; unsigned short :0; unsigned char v2:8; };
struct BFu15i_BFu0s_BFu8i { unsigned int v1:15; unsigned short :0; unsigned int v2:8; };
struct BFu15i_BFu0s_BFu8ll { unsigned int v1:15; unsigned short :0; unsigned long long v2:8; };
struct BFu15i_BFu0s_BFu8s { unsigned int v1:15; unsigned short :0; unsigned short v2:8; };
struct BFu15i_BFu0s_BFu9i { unsigned int v1:15; unsigned short :0; unsigned int v2:9; };
struct BFu15i_BFu0s_BFu9ll { unsigned int v1:15; unsigned short :0; unsigned long long v2:9; };
struct BFu15i_BFu0s_BFu9s { unsigned int v1:15; unsigned short :0; unsigned short v2:9; };
struct BFu15i_BFu0s_C { unsigned int v1:15; unsigned short :0; char v2; };
struct BFu15i_BFu0s_D { unsigned int v1:15; unsigned short :0; double v2; };
struct BFu15i_BFu0s_F { unsigned int v1:15; unsigned short :0; float v2; };
struct BFu15i_BFu0s_I { unsigned int v1:15; unsigned short :0; int v2; };
struct BFu15i_BFu0s_Ip { unsigned int v1:15; unsigned short :0; int * v2; };
struct BFu15i_BFu0s_L { unsigned int v1:15; unsigned short :0; long long v2; };
struct BFu15i_BFu0s_S { unsigned int v1:15; unsigned short :0; short v2; };
struct BFu15i_BFu0s_Uc { unsigned int v1:15; unsigned short :0; unsigned char v2; };
struct BFu15i_BFu0s_Ui { unsigned int v1:15; unsigned short :0; unsigned int v2; };
struct BFu15i_BFu0s_Ul { unsigned int v1:15; unsigned short :0; unsigned long long v2; };
struct BFu15i_BFu0s_Us { unsigned int v1:15; unsigned short :0; unsigned short v2; };
struct BFu15i_BFu0s_Vp { unsigned int v1:15; unsigned short :0; void * v2; };
struct BFu15i_BFu15i_BFu0c { unsigned int v1:15; unsigned int v2:15; unsigned char :0; };
struct BFu15i_BFu15i_BFu0i { unsigned int v1:15; unsigned int v2:15; unsigned int :0; };
struct BFu15i_BFu15i_BFu0ll { unsigned int v1:15; unsigned int v2:15; unsigned long long :0; };
struct BFu15i_BFu15i_BFu0s { unsigned int v1:15; unsigned int v2:15; unsigned short :0; };
struct BFu15i_BFu15ll_BFu0c { unsigned int v1:15; unsigned long long v2:15; unsigned char :0; };
struct BFu15i_BFu15ll_BFu0i { unsigned int v1:15; unsigned long long v2:15; unsigned int :0; };
struct BFu15i_BFu15ll_BFu0ll { unsigned int v1:15; unsigned long long v2:15; unsigned long long :0; };
struct BFu15i_BFu15ll_BFu0s { unsigned int v1:15; unsigned long long v2:15; unsigned short :0; };
struct BFu15i_BFu15s_BFu0c { unsigned int v1:15; unsigned short v2:15; unsigned char :0; };
struct BFu15i_BFu15s_BFu0i { unsigned int v1:15; unsigned short v2:15; unsigned int :0; };
struct BFu15i_BFu15s_BFu0ll { unsigned int v1:15; unsigned short v2:15; unsigned long long :0; };
struct BFu15i_BFu15s_BFu0s { unsigned int v1:15; unsigned short v2:15; unsigned short :0; };
struct BFu15i_BFu16i_BFu0c { unsigned int v1:15; unsigned int v2:16; unsigned char :0; };
struct BFu15i_BFu16i_BFu0i { unsigned int v1:15; unsigned int v2:16; unsigned int :0; };
struct BFu15i_BFu16i_BFu0ll { unsigned int v1:15; unsigned int v2:16; unsigned long long :0; };
struct BFu15i_BFu16i_BFu0s { unsigned int v1:15; unsigned int v2:16; unsigned short :0; };
struct BFu15i_BFu16ll_BFu0c { unsigned int v1:15; unsigned long long v2:16; unsigned char :0; };
struct BFu15i_BFu16ll_BFu0i { unsigned int v1:15; unsigned long long v2:16; unsigned int :0; };
struct BFu15i_BFu16ll_BFu0ll { unsigned int v1:15; unsigned long long v2:16; unsigned long long :0; };
struct BFu15i_BFu16ll_BFu0s { unsigned int v1:15; unsigned long long v2:16; unsigned short :0; };
struct BFu15i_BFu16s_BFu0c { unsigned int v1:15; unsigned short v2:16; unsigned char :0; };
struct BFu15i_BFu16s_BFu0i { unsigned int v1:15; unsigned short v2:16; unsigned int :0; };
struct BFu15i_BFu16s_BFu0ll { unsigned int v1:15; unsigned short v2:16; unsigned long long :0; };
struct BFu15i_BFu16s_BFu0s { unsigned int v1:15; unsigned short v2:16; unsigned short :0; };
struct BFu15i_BFu17i_BFu0c { unsigned int v1:15; unsigned int v2:17; unsigned char :0; };
struct BFu15i_BFu17i_BFu0i { unsigned int v1:15; unsigned int v2:17; unsigned int :0; };
struct BFu15i_BFu17i_BFu0ll { unsigned int v1:15; unsigned int v2:17; unsigned long long :0; };
struct BFu15i_BFu17i_BFu0s { unsigned int v1:15; unsigned int v2:17; unsigned short :0; };
struct BFu15i_BFu17ll_BFu0c { unsigned int v1:15; unsigned long long v2:17; unsigned char :0; };
struct BFu15i_BFu17ll_BFu0i { unsigned int v1:15; unsigned long long v2:17; unsigned int :0; };
struct BFu15i_BFu17ll_BFu0ll { unsigned int v1:15; unsigned long long v2:17; unsigned long long :0; };
struct BFu15i_BFu17ll_BFu0s { unsigned int v1:15; unsigned long long v2:17; unsigned short :0; };
struct BFu15i_BFu1c_BFu0c { unsigned int v1:15; unsigned char v2:1; unsigned char :0; };
struct BFu15i_BFu1c_BFu0i { unsigned int v1:15; unsigned char v2:1; unsigned int :0; };
struct BFu15i_BFu1c_BFu0ll { unsigned int v1:15; unsigned char v2:1; unsigned long long :0; };
struct BFu15i_BFu1c_BFu0s { unsigned int v1:15; unsigned char v2:1; unsigned short :0; };
struct BFu15i_BFu1i_BFu0c { unsigned int v1:15; unsigned int v2:1; unsigned char :0; };
struct BFu15i_BFu1i_BFu0i { unsigned int v1:15; unsigned int v2:1; unsigned int :0; };
struct BFu15i_BFu1i_BFu0ll { unsigned int v1:15; unsigned int v2:1; unsigned long long :0; };
struct BFu15i_BFu1i_BFu0s { unsigned int v1:15; unsigned int v2:1; unsigned short :0; };
struct BFu15i_BFu1ll_BFu0c { unsigned int v1:15; unsigned long long v2:1; unsigned char :0; };
struct BFu15i_BFu1ll_BFu0i { unsigned int v1:15; unsigned long long v2:1; unsigned int :0; };
struct BFu15i_BFu1ll_BFu0ll { unsigned int v1:15; unsigned long long v2:1; unsigned long long :0; };
struct BFu15i_BFu1ll_BFu0s { unsigned int v1:15; unsigned long long v2:1; unsigned short :0; };
struct BFu15i_BFu1s_BFu0c { unsigned int v1:15; unsigned short v2:1; unsigned char :0; };
struct BFu15i_BFu1s_BFu0i { unsigned int v1:15; unsigned short v2:1; unsigned int :0; };
struct BFu15i_BFu1s_BFu0ll { unsigned int v1:15; unsigned short v2:1; unsigned long long :0; };
struct BFu15i_BFu1s_BFu0s { unsigned int v1:15; unsigned short v2:1; unsigned short :0; };
struct BFu15i_BFu31i_BFu0c { unsigned int v1:15; unsigned int v2:31; unsigned char :0; };
struct BFu15i_BFu31i_BFu0i { unsigned int v1:15; unsigned int v2:31; unsigned int :0; };
struct BFu15i_BFu31i_BFu0ll { unsigned int v1:15; unsigned int v2:31; unsigned long long :0; };
struct BFu15i_BFu31i_BFu0s { unsigned int v1:15; unsigned int v2:31; unsigned short :0; };
struct BFu15i_BFu31ll_BFu0c { unsigned int v1:15; unsigned long long v2:31; unsigned char :0; };
struct BFu15i_BFu31ll_BFu0i { unsigned int v1:15; unsigned long long v2:31; unsigned int :0; };
struct BFu15i_BFu31ll_BFu0ll { unsigned int v1:15; unsigned long long v2:31; unsigned long long :0; };
struct BFu15i_BFu31ll_BFu0s { unsigned int v1:15; unsigned long long v2:31; unsigned short :0; };
struct BFu15i_BFu32i_BFu0c { unsigned int v1:15; unsigned int v2:32; unsigned char :0; };
struct BFu15i_BFu32i_BFu0i { unsigned int v1:15; unsigned int v2:32; unsigned int :0; };
struct BFu15i_BFu32i_BFu0ll { unsigned int v1:15; unsigned int v2:32; unsigned long long :0; };
struct BFu15i_BFu32i_BFu0s { unsigned int v1:15; unsigned int v2:32; unsigned short :0; };
struct BFu15i_BFu32ll_BFu0c { unsigned int v1:15; unsigned long long v2:32; unsigned char :0; };
struct BFu15i_BFu32ll_BFu0i { unsigned int v1:15; unsigned long long v2:32; unsigned int :0; };
struct BFu15i_BFu32ll_BFu0ll { unsigned int v1:15; unsigned long long v2:32; unsigned long long :0; };
struct BFu15i_BFu32ll_BFu0s { unsigned int v1:15; unsigned long long v2:32; unsigned short :0; };
struct BFu15i_BFu33_BFu0c { unsigned int v1:15; unsigned long long v2:33; unsigned char :0; };
struct BFu15i_BFu33_BFu0i { unsigned int v1:15; unsigned long long v2:33; unsigned int :0; };
struct BFu15i_BFu33_BFu0ll { unsigned int v1:15; unsigned long long v2:33; unsigned long long :0; };
struct BFu15i_BFu33_BFu0s { unsigned int v1:15; unsigned long long v2:33; unsigned short :0; };
struct BFu15i_BFu7c_BFu0c { unsigned int v1:15; unsigned char v2:7; unsigned char :0; };
struct BFu15i_BFu7c_BFu0i { unsigned int v1:15; unsigned char v2:7; unsigned int :0; };
struct BFu15i_BFu7c_BFu0ll { unsigned int v1:15; unsigned char v2:7; unsigned long long :0; };
struct BFu15i_BFu7c_BFu0s { unsigned int v1:15; unsigned char v2:7; unsigned short :0; };
struct BFu15i_BFu7i_BFu0c { unsigned int v1:15; unsigned int v2:7; unsigned char :0; };
struct BFu15i_BFu7i_BFu0i { unsigned int v1:15; unsigned int v2:7; unsigned int :0; };
struct BFu15i_BFu7i_BFu0ll { unsigned int v1:15; unsigned int v2:7; unsigned long long :0; };
struct BFu15i_BFu7i_BFu0s { unsigned int v1:15; unsigned int v2:7; unsigned short :0; };
struct BFu15i_BFu7ll_BFu0c { unsigned int v1:15; unsigned long long v2:7; unsigned char :0; };
struct BFu15i_BFu7ll_BFu0i { unsigned int v1:15; unsigned long long v2:7; unsigned int :0; };
struct BFu15i_BFu7ll_BFu0ll { unsigned int v1:15; unsigned long long v2:7; unsigned long long :0; };
struct BFu15i_BFu7ll_BFu0s { unsigned int v1:15; unsigned long long v2:7; unsigned short :0; };
struct BFu15i_BFu7s_BFu0c { unsigned int v1:15; unsigned short v2:7; unsigned char :0; };
struct BFu15i_BFu7s_BFu0i { unsigned int v1:15; unsigned short v2:7; unsigned int :0; };
struct BFu15i_BFu7s_BFu0ll { unsigned int v1:15; unsigned short v2:7; unsigned long long :0; };
struct BFu15i_BFu7s_BFu0s { unsigned int v1:15; unsigned short v2:7; unsigned short :0; };
struct BFu15i_BFu8c_BFu0c { unsigned int v1:15; unsigned char v2:8; unsigned char :0; };
struct BFu15i_BFu8c_BFu0i { unsigned int v1:15; unsigned char v2:8; unsigned int :0; };
struct BFu15i_BFu8c_BFu0ll { unsigned int v1:15; unsigned char v2:8; unsigned long long :0; };
struct BFu15i_BFu8c_BFu0s { unsigned int v1:15; unsigned char v2:8; unsigned short :0; };
struct BFu15i_BFu8i_BFu0c { unsigned int v1:15; unsigned int v2:8; unsigned char :0; };
struct BFu15i_BFu8i_BFu0i { unsigned int v1:15; unsigned int v2:8; unsigned int :0; };
struct BFu15i_BFu8i_BFu0ll { unsigned int v1:15; unsigned int v2:8; unsigned long long :0; };
struct BFu15i_BFu8i_BFu0s { unsigned int v1:15; unsigned int v2:8; unsigned short :0; };
struct BFu15i_BFu8ll_BFu0c { unsigned int v1:15; unsigned long long v2:8; unsigned char :0; };
struct BFu15i_BFu8ll_BFu0i { unsigned int v1:15; unsigned long long v2:8; unsigned int :0; };
struct BFu15i_BFu8ll_BFu0ll { unsigned int v1:15; unsigned long long v2:8; unsigned long long :0; };
struct BFu15i_BFu8ll_BFu0s { unsigned int v1:15; unsigned long long v2:8; unsigned short :0; };
struct BFu15i_BFu8s_BFu0c { unsigned int v1:15; unsigned short v2:8; unsigned char :0; };
struct BFu15i_BFu8s_BFu0i { unsigned int v1:15; unsigned short v2:8; unsigned int :0; };
struct BFu15i_BFu8s_BFu0ll { unsigned int v1:15; unsigned short v2:8; unsigned long long :0; };
struct BFu15i_BFu8s_BFu0s { unsigned int v1:15; unsigned short v2:8; unsigned short :0; };
struct BFu15i_BFu9i_BFu0c { unsigned int v1:15; unsigned int v2:9; unsigned char :0; };
struct BFu15i_BFu9i_BFu0i { unsigned int v1:15; unsigned int v2:9; unsigned int :0; };
struct BFu15i_BFu9i_BFu0ll { unsigned int v1:15; unsigned int v2:9; unsigned long long :0; };
struct BFu15i_BFu9i_BFu0s { unsigned int v1:15; unsigned int v2:9; unsigned short :0; };
struct BFu15i_BFu9ll_BFu0c { unsigned int v1:15; unsigned long long v2:9; unsigned char :0; };
struct BFu15i_BFu9ll_BFu0i { unsigned int v1:15; unsigned long long v2:9; unsigned int :0; };
struct BFu15i_BFu9ll_BFu0ll { unsigned int v1:15; unsigned long long v2:9; unsigned long long :0; };
struct BFu15i_BFu9ll_BFu0s { unsigned int v1:15; unsigned long long v2:9; unsigned short :0; };
struct BFu15i_BFu9s_BFu0c { unsigned int v1:15; unsigned short v2:9; unsigned char :0; };
struct BFu15i_BFu9s_BFu0i { unsigned int v1:15; unsigned short v2:9; unsigned int :0; };
struct BFu15i_BFu9s_BFu0ll { unsigned int v1:15; unsigned short v2:9; unsigned long long :0; };
struct BFu15i_BFu9s_BFu0s { unsigned int v1:15; unsigned short v2:9; unsigned short :0; };
struct BFu15i_C_BFu0c { unsigned int v1:15; char v2; unsigned char :0; };
struct BFu15i_C_BFu0i { unsigned int v1:15; char v2; unsigned int :0; };
struct BFu15i_C_BFu0ll { unsigned int v1:15; char v2; unsigned long long :0; };
struct BFu15i_C_BFu0s { unsigned int v1:15; char v2; unsigned short :0; };
struct BFu15i_D_BFu0c { unsigned int v1:15; double v2; unsigned char :0; };
struct BFu15i_D_BFu0i { unsigned int v1:15; double v2; unsigned int :0; };
struct BFu15i_D_BFu0ll { unsigned int v1:15; double v2; unsigned long long :0; };
struct BFu15i_D_BFu0s { unsigned int v1:15; double v2; unsigned short :0; };
struct BFu15i_F_BFu0c { unsigned int v1:15; float v2; unsigned char :0; };
struct BFu15i_F_BFu0i { unsigned int v1:15; float v2; unsigned int :0; };
struct BFu15i_F_BFu0ll { unsigned int v1:15; float v2; unsigned long long :0; };
struct BFu15i_F_BFu0s { unsigned int v1:15; float v2; unsigned short :0; };
struct BFu15i_I_BFu0c { unsigned int v1:15; int v2; unsigned char :0; };
struct BFu15i_I_BFu0i { unsigned int v1:15; int v2; unsigned int :0; };
struct BFu15i_I_BFu0ll { unsigned int v1:15; int v2; unsigned long long :0; };
struct BFu15i_I_BFu0s { unsigned int v1:15; int v2; unsigned short :0; };
struct BFu15i_Ip_BFu0c { unsigned int v1:15; int * v2; unsigned char :0; };
struct BFu15i_Ip_BFu0i { unsigned int v1:15; int * v2; unsigned int :0; };
struct BFu15i_Ip_BFu0ll { unsigned int v1:15; int * v2; unsigned long long :0; };
struct BFu15i_Ip_BFu0s { unsigned int v1:15; int * v2; unsigned short :0; };
struct BFu15i_L_BFu0c { unsigned int v1:15; long long v2; unsigned char :0; };
struct BFu15i_L_BFu0i { unsigned int v1:15; long long v2; unsigned int :0; };
struct BFu15i_L_BFu0ll { unsigned int v1:15; long long v2; unsigned long long :0; };
struct BFu15i_L_BFu0s { unsigned int v1:15; long long v2; unsigned short :0; };
struct BFu15i_S_BFu0c { unsigned int v1:15; short v2; unsigned char :0; };
struct BFu15i_S_BFu0i { unsigned int v1:15; short v2; unsigned int :0; };
struct BFu15i_S_BFu0ll { unsigned int v1:15; short v2; unsigned long long :0; };
struct BFu15i_S_BFu0s { unsigned int v1:15; short v2; unsigned short :0; };
struct BFu15i_Uc_BFu0c { unsigned int v1:15; unsigned char v2; unsigned char :0; };
struct BFu15i_Uc_BFu0i { unsigned int v1:15; unsigned char v2; unsigned int :0; };
struct BFu15i_Uc_BFu0ll { unsigned int v1:15; unsigned char v2; unsigned long long :0; };
struct BFu15i_Uc_BFu0s { unsigned int v1:15; unsigned char v2; unsigned short :0; };
struct BFu15i_Ui_BFu0c { unsigned int v1:15; unsigned int v2; unsigned char :0; };
struct BFu15i_Ui_BFu0i { unsigned int v1:15; unsigned int v2; unsigned int :0; };
struct BFu15i_Ui_BFu0ll { unsigned int v1:15; unsigned int v2; unsigned long long :0; };
struct BFu15i_Ui_BFu0s { unsigned int v1:15; unsigned int v2; unsigned short :0; };
struct BFu15i_Ul_BFu0c { unsigned int v1:15; unsigned long long v2; unsigned char :0; };
struct BFu15i_Ul_BFu0i { unsigned int v1:15; unsigned long long v2; unsigned int :0; };
struct BFu15i_Ul_BFu0ll { unsigned int v1:15; unsigned long long v2; unsigned long long :0; };
struct BFu15i_Ul_BFu0s { unsigned int v1:15; unsigned long long v2; unsigned short :0; };
struct BFu15i_Us_BFu0c { unsigned int v1:15; unsigned short v2; unsigned char :0; };
struct BFu15i_Us_BFu0i { unsigned int v1:15; unsigned short v2; unsigned int :0; };
struct BFu15i_Us_BFu0ll { unsigned int v1:15; unsigned short v2; unsigned long long :0; };
struct BFu15i_Us_BFu0s { unsigned int v1:15; unsigned short v2; unsigned short :0; };
struct BFu15i_Vp_BFu0c { unsigned int v1:15; void * v2; unsigned char :0; };
struct BFu15i_Vp_BFu0i { unsigned int v1:15; void * v2; unsigned int :0; };
struct BFu15i_Vp_BFu0ll { unsigned int v1:15; void * v2; unsigned long long :0; };
struct BFu15i_Vp_BFu0s { unsigned int v1:15; void * v2; unsigned short :0; };
struct BFu15ll_BFu0c { unsigned long long v1:15; unsigned char :0; };
struct BFu15ll_BFu0c_BFu0c { unsigned long long v1:15; unsigned char :0; unsigned char :0; };
struct BFu15ll_BFu0c_BFu0i { unsigned long long v1:15; unsigned char :0; unsigned int :0; };
struct BFu15ll_BFu0c_BFu0ll { unsigned long long v1:15; unsigned char :0; unsigned long long :0; };
struct BFu15ll_BFu0c_BFu0s { unsigned long long v1:15; unsigned char :0; unsigned short :0; };
struct BFu15ll_BFu0c_BFu15i { unsigned long long v1:15; unsigned char :0; unsigned int v2:15; };
struct BFu15ll_BFu0c_BFu15ll { unsigned long long v1:15; unsigned char :0; unsigned long long v2:15; };
struct BFu15ll_BFu0c_BFu15s { unsigned long long v1:15; unsigned char :0; unsigned short v2:15; };
struct BFu15ll_BFu0c_BFu16i { unsigned long long v1:15; unsigned char :0; unsigned int v2:16; };
struct BFu15ll_BFu0c_BFu16ll { unsigned long long v1:15; unsigned char :0; unsigned long long v2:16; };
struct BFu15ll_BFu0c_BFu16s { unsigned long long v1:15; unsigned char :0; unsigned short v2:16; };
struct BFu15ll_BFu0c_BFu17i { unsigned long long v1:15; unsigned char :0; unsigned int v2:17; };
struct BFu15ll_BFu0c_BFu17ll { unsigned long long v1:15; unsigned char :0; unsigned long long v2:17; };
struct BFu15ll_BFu0c_BFu1c { unsigned long long v1:15; unsigned char :0; unsigned char v2:1; };
struct BFu15ll_BFu0c_BFu1i { unsigned long long v1:15; unsigned char :0; unsigned int v2:1; };
struct BFu15ll_BFu0c_BFu1ll { unsigned long long v1:15; unsigned char :0; unsigned long long v2:1; };
struct BFu15ll_BFu0c_BFu1s { unsigned long long v1:15; unsigned char :0; unsigned short v2:1; };
struct BFu15ll_BFu0c_BFu31i { unsigned long long v1:15; unsigned char :0; unsigned int v2:31; };
struct BFu15ll_BFu0c_BFu31ll { unsigned long long v1:15; unsigned char :0; unsigned long long v2:31; };
struct BFu15ll_BFu0c_BFu32i { unsigned long long v1:15; unsigned char :0; unsigned int v2:32; };
struct BFu15ll_BFu0c_BFu32ll { unsigned long long v1:15; unsigned char :0; unsigned long long v2:32; };
struct BFu15ll_BFu0c_BFu33 { unsigned long long v1:15; unsigned char :0; unsigned long long v2:33; };
struct BFu15ll_BFu0c_BFu7c { unsigned long long v1:15; unsigned char :0; unsigned char v2:7; };
struct BFu15ll_BFu0c_BFu7i { unsigned long long v1:15; unsigned char :0; unsigned int v2:7; };
struct BFu15ll_BFu0c_BFu7ll { unsigned long long v1:15; unsigned char :0; unsigned long long v2:7; };
struct BFu15ll_BFu0c_BFu7s { unsigned long long v1:15; unsigned char :0; unsigned short v2:7; };
struct BFu15ll_BFu0c_BFu8c { unsigned long long v1:15; unsigned char :0; unsigned char v2:8; };
struct BFu15ll_BFu0c_BFu8i { unsigned long long v1:15; unsigned char :0; unsigned int v2:8; };
#endif // __cplusplus
#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu0ll()
{
  {
    init_simple_test("BFu0ll_Us_BFu0ll");
    static BFu0ll_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0ll_Us_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu0ll(Test_BFu0ll_Us_BFu0ll, "BFu0ll_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu0s()
{
  {
    init_simple_test("BFu0ll_Us_BFu0s");
    static BFu0ll_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0ll_Us_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu0s(Test_BFu0ll_Us_BFu0s, "BFu0ll_Us_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu15i()
{
  {
    init_simple_test("BFu0ll_Us_BFu15i");
    static BFu0ll_Us_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0ll_Us_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu15i.v1");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0ll_Us_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0ll_Us_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu15i(Test_BFu0ll_Us_BFu15i, "BFu0ll_Us_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu15ll()
{
  {
    init_simple_test("BFu0ll_Us_BFu15ll");
    static BFu0ll_Us_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0ll_Us_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu15ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0ll_Us_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0ll_Us_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu15ll(Test_BFu0ll_Us_BFu15ll, "BFu0ll_Us_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu15s()
{
  {
    init_simple_test("BFu0ll_Us_BFu15s");
    static BFu0ll_Us_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0ll_Us_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu15s.v1");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0ll_Us_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0ll_Us_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu15s(Test_BFu0ll_Us_BFu15s, "BFu0ll_Us_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu16i()
{
  {
    init_simple_test("BFu0ll_Us_BFu16i");
    static BFu0ll_Us_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0ll_Us_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu16i.v1");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0ll_Us_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0ll_Us_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu16i(Test_BFu0ll_Us_BFu16i, "BFu0ll_Us_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu16ll()
{
  {
    init_simple_test("BFu0ll_Us_BFu16ll");
    static BFu0ll_Us_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0ll_Us_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu16ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0ll_Us_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0ll_Us_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu16ll(Test_BFu0ll_Us_BFu16ll, "BFu0ll_Us_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu16s()
{
  {
    init_simple_test("BFu0ll_Us_BFu16s");
    static BFu0ll_Us_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0ll_Us_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu16s.v1");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0ll_Us_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0ll_Us_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu16s(Test_BFu0ll_Us_BFu16s, "BFu0ll_Us_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu17i()
{
  {
    init_simple_test("BFu0ll_Us_BFu17i");
    static BFu0ll_Us_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0ll_Us_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu17i.v1");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0ll_Us_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0ll_Us_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu17i(Test_BFu0ll_Us_BFu17i, "BFu0ll_Us_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu17ll()
{
  {
    init_simple_test("BFu0ll_Us_BFu17ll");
    static BFu0ll_Us_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0ll_Us_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu17ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0ll_Us_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0ll_Us_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu17ll(Test_BFu0ll_Us_BFu17ll, "BFu0ll_Us_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu1c()
{
  {
    init_simple_test("BFu0ll_Us_BFu1c");
    static BFu0ll_Us_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu1c.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0ll_Us_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu1c(Test_BFu0ll_Us_BFu1c, "BFu0ll_Us_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu1i()
{
  {
    init_simple_test("BFu0ll_Us_BFu1i");
    static BFu0ll_Us_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu1i.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0ll_Us_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu1i(Test_BFu0ll_Us_BFu1i, "BFu0ll_Us_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu1ll()
{
  {
    init_simple_test("BFu0ll_Us_BFu1ll");
    static BFu0ll_Us_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu1ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0ll_Us_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu1ll(Test_BFu0ll_Us_BFu1ll, "BFu0ll_Us_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu1s()
{
  {
    init_simple_test("BFu0ll_Us_BFu1s");
    static BFu0ll_Us_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu1s.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0ll_Us_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu1s(Test_BFu0ll_Us_BFu1s, "BFu0ll_Us_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu31i()
{
  {
    init_simple_test("BFu0ll_Us_BFu31i");
    static BFu0ll_Us_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu0ll_Us_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu31i.v1");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0ll_Us_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0ll_Us_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu31i(Test_BFu0ll_Us_BFu31i, "BFu0ll_Us_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu31ll()
{
  {
    init_simple_test("BFu0ll_Us_BFu31ll");
    static BFu0ll_Us_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu0ll_Us_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu31ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0ll_Us_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0ll_Us_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu31ll(Test_BFu0ll_Us_BFu31ll, "BFu0ll_Us_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu32i()
{
  {
    init_simple_test("BFu0ll_Us_BFu32i");
    static BFu0ll_Us_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu0ll_Us_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu32i.v1");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0ll_Us_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0ll_Us_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu32i(Test_BFu0ll_Us_BFu32i, "BFu0ll_Us_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu32ll()
{
  {
    init_simple_test("BFu0ll_Us_BFu32ll");
    static BFu0ll_Us_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu0ll_Us_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu32ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0ll_Us_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0ll_Us_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu32ll(Test_BFu0ll_Us_BFu32ll, "BFu0ll_Us_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu33()
{
  {
    init_simple_test("BFu0ll_Us_BFu33");
    static BFu0ll_Us_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0ll_Us_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu33.v1");
    set_bf_and_test(lv, v2, 2, 0, 33, 1, "BFu0ll_Us_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, hide_ull(1LL<<32), "BFu0ll_Us_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu33(Test_BFu0ll_Us_BFu33, "BFu0ll_Us_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu7c()
{
  {
    init_simple_test("BFu0ll_Us_BFu7c");
    static BFu0ll_Us_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu7c.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0ll_Us_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0ll_Us_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu7c(Test_BFu0ll_Us_BFu7c, "BFu0ll_Us_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu7i()
{
  {
    init_simple_test("BFu0ll_Us_BFu7i");
    static BFu0ll_Us_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu7i.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0ll_Us_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0ll_Us_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu7i(Test_BFu0ll_Us_BFu7i, "BFu0ll_Us_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu7ll()
{
  {
    init_simple_test("BFu0ll_Us_BFu7ll");
    static BFu0ll_Us_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu7ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0ll_Us_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0ll_Us_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu7ll(Test_BFu0ll_Us_BFu7ll, "BFu0ll_Us_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu7s()
{
  {
    init_simple_test("BFu0ll_Us_BFu7s");
    static BFu0ll_Us_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu7s.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0ll_Us_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0ll_Us_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu7s(Test_BFu0ll_Us_BFu7s, "BFu0ll_Us_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu8c()
{
  {
    init_simple_test("BFu0ll_Us_BFu8c");
    static BFu0ll_Us_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu8c.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0ll_Us_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0ll_Us_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu8c(Test_BFu0ll_Us_BFu8c, "BFu0ll_Us_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu8i()
{
  {
    init_simple_test("BFu0ll_Us_BFu8i");
    static BFu0ll_Us_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu8i.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0ll_Us_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0ll_Us_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu8i(Test_BFu0ll_Us_BFu8i, "BFu0ll_Us_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu8ll()
{
  {
    init_simple_test("BFu0ll_Us_BFu8ll");
    static BFu0ll_Us_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu8ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0ll_Us_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0ll_Us_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu8ll(Test_BFu0ll_Us_BFu8ll, "BFu0ll_Us_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_BFu8s()
{
  {
    init_simple_test("BFu0ll_Us_BFu8s");
    static BFu0ll_Us_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_BFu8s.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0ll_Us_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0ll_Us_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_BFu8s(Test_BFu0ll_Us_BFu8s, "BFu0ll_Us_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_C()
{
  {
    init_simple_test("BFu0ll_Us_C");
    static BFu0ll_Us_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_C)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_C.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_C(Test_BFu0ll_Us_C, "BFu0ll_Us_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_D()
{
  {
    init_simple_test("BFu0ll_Us_D");
    static BFu0ll_Us_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(BFu0ll_Us_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_D)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_D.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_D(Test_BFu0ll_Us_D, "BFu0ll_Us_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_F()
{
  {
    init_simple_test("BFu0ll_Us_F");
    static BFu0ll_Us_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu0ll_Us_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_F)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_F.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_F(Test_BFu0ll_Us_F, "BFu0ll_Us_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_I()
{
  {
    init_simple_test("BFu0ll_Us_I");
    static BFu0ll_Us_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu0ll_Us_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_I)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_I.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_I(Test_BFu0ll_Us_I, "BFu0ll_Us_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_Ip()
{
  {
    init_simple_test("BFu0ll_Us_Ip");
    static BFu0ll_Us_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0ll_Us_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_Ip)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_Ip.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_Ip(Test_BFu0ll_Us_Ip, "BFu0ll_Us_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_L()
{
  {
    init_simple_test("BFu0ll_Us_L");
    static BFu0ll_Us_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(BFu0ll_Us_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_L)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_L.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_L(Test_BFu0ll_Us_L, "BFu0ll_Us_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_S()
{
  {
    init_simple_test("BFu0ll_Us_S");
    static BFu0ll_Us_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0ll_Us_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_S)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_S.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_S(Test_BFu0ll_Us_S, "BFu0ll_Us_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_Uc()
{
  {
    init_simple_test("BFu0ll_Us_Uc");
    static BFu0ll_Us_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0ll_Us_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_Uc)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_Uc.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_Uc(Test_BFu0ll_Us_Uc, "BFu0ll_Us_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_Ui()
{
  {
    init_simple_test("BFu0ll_Us_Ui");
    static BFu0ll_Us_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu0ll_Us_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_Ui)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_Ui.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_Ui(Test_BFu0ll_Us_Ui, "BFu0ll_Us_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_Ul()
{
  {
    init_simple_test("BFu0ll_Us_Ul");
    static BFu0ll_Us_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(BFu0ll_Us_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_Ul)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_Ul.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_Ul(Test_BFu0ll_Us_Ul, "BFu0ll_Us_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_Us()
{
  {
    init_simple_test("BFu0ll_Us_Us");
    static BFu0ll_Us_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0ll_Us_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_Us)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_Us.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_Us(Test_BFu0ll_Us_Us, "BFu0ll_Us_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Us_Vp()
{
  {
    init_simple_test("BFu0ll_Us_Vp");
    static BFu0ll_Us_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0ll_Us_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Us_Vp)");
    check_field_offset(lv, v1, 0, "BFu0ll_Us_Vp.v1");
    check_field_offset(lv, v2, 2, "BFu0ll_Us_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Us_Vp(Test_BFu0ll_Us_Vp, "BFu0ll_Us_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp()
{
  {
    init_simple_test("BFu0ll_Vp");
    static BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp.v1");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp(Test_BFu0ll_Vp, "BFu0ll_Vp", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu0c()
{
  {
    init_simple_test("BFu0ll_Vp_BFu0c");
    static BFu0ll_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0ll_Vp_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu0c(Test_BFu0ll_Vp_BFu0c, "BFu0ll_Vp_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu0i()
{
  {
    init_simple_test("BFu0ll_Vp_BFu0i");
    static BFu0ll_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0ll_Vp_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu0i(Test_BFu0ll_Vp_BFu0i, "BFu0ll_Vp_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu0ll()
{
  {
    init_simple_test("BFu0ll_Vp_BFu0ll");
    static BFu0ll_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0ll_Vp_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu0ll(Test_BFu0ll_Vp_BFu0ll, "BFu0ll_Vp_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu0s()
{
  {
    init_simple_test("BFu0ll_Vp_BFu0s");
    static BFu0ll_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0ll_Vp_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu0s(Test_BFu0ll_Vp_BFu0s, "BFu0ll_Vp_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu15i()
{
  {
    init_simple_test("BFu0ll_Vp_BFu15i");
    static BFu0ll_Vp_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0ll_Vp_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu0ll_Vp_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu0ll_Vp_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu15i(Test_BFu0ll_Vp_BFu15i, "BFu0ll_Vp_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu15ll()
{
  {
    init_simple_test("BFu0ll_Vp_BFu15ll");
    static BFu0ll_Vp_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0ll_Vp_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu0ll_Vp_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu0ll_Vp_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu15ll(Test_BFu0ll_Vp_BFu15ll, "BFu0ll_Vp_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu15s()
{
  {
    init_simple_test("BFu0ll_Vp_BFu15s");
    static BFu0ll_Vp_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0ll_Vp_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu0ll_Vp_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu0ll_Vp_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu15s(Test_BFu0ll_Vp_BFu15s, "BFu0ll_Vp_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu16i()
{
  {
    init_simple_test("BFu0ll_Vp_BFu16i");
    static BFu0ll_Vp_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0ll_Vp_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu0ll_Vp_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu0ll_Vp_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu16i(Test_BFu0ll_Vp_BFu16i, "BFu0ll_Vp_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu16ll()
{
  {
    init_simple_test("BFu0ll_Vp_BFu16ll");
    static BFu0ll_Vp_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0ll_Vp_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu0ll_Vp_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu0ll_Vp_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu16ll(Test_BFu0ll_Vp_BFu16ll, "BFu0ll_Vp_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu16s()
{
  {
    init_simple_test("BFu0ll_Vp_BFu16s");
    static BFu0ll_Vp_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0ll_Vp_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu0ll_Vp_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu0ll_Vp_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu16s(Test_BFu0ll_Vp_BFu16s, "BFu0ll_Vp_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu17i()
{
  {
    init_simple_test("BFu0ll_Vp_BFu17i");
    static BFu0ll_Vp_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu0ll_Vp_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "BFu0ll_Vp_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "BFu0ll_Vp_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu17i(Test_BFu0ll_Vp_BFu17i, "BFu0ll_Vp_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu17ll()
{
  {
    init_simple_test("BFu0ll_Vp_BFu17ll");
    static BFu0ll_Vp_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu0ll_Vp_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "BFu0ll_Vp_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "BFu0ll_Vp_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu17ll(Test_BFu0ll_Vp_BFu17ll, "BFu0ll_Vp_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu1c()
{
  {
    init_simple_test("BFu0ll_Vp_BFu1c");
    static BFu0ll_Vp_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0ll_Vp_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0ll_Vp_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu1c(Test_BFu0ll_Vp_BFu1c, "BFu0ll_Vp_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu1i()
{
  {
    init_simple_test("BFu0ll_Vp_BFu1i");
    static BFu0ll_Vp_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0ll_Vp_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0ll_Vp_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu1i(Test_BFu0ll_Vp_BFu1i, "BFu0ll_Vp_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu1ll()
{
  {
    init_simple_test("BFu0ll_Vp_BFu1ll");
    static BFu0ll_Vp_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0ll_Vp_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0ll_Vp_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu1ll(Test_BFu0ll_Vp_BFu1ll, "BFu0ll_Vp_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu1s()
{
  {
    init_simple_test("BFu0ll_Vp_BFu1s");
    static BFu0ll_Vp_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0ll_Vp_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0ll_Vp_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu1s(Test_BFu0ll_Vp_BFu1s, "BFu0ll_Vp_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu31i()
{
  {
    init_simple_test("BFu0ll_Vp_BFu31i");
    static BFu0ll_Vp_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0ll_Vp_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "BFu0ll_Vp_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "BFu0ll_Vp_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu31i(Test_BFu0ll_Vp_BFu31i, "BFu0ll_Vp_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu31ll()
{
  {
    init_simple_test("BFu0ll_Vp_BFu31ll");
    static BFu0ll_Vp_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0ll_Vp_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "BFu0ll_Vp_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "BFu0ll_Vp_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu31ll(Test_BFu0ll_Vp_BFu31ll, "BFu0ll_Vp_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu32i()
{
  {
    init_simple_test("BFu0ll_Vp_BFu32i");
    static BFu0ll_Vp_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0ll_Vp_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "BFu0ll_Vp_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "BFu0ll_Vp_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu32i(Test_BFu0ll_Vp_BFu32i, "BFu0ll_Vp_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu32ll()
{
  {
    init_simple_test("BFu0ll_Vp_BFu32ll");
    static BFu0ll_Vp_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0ll_Vp_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "BFu0ll_Vp_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "BFu0ll_Vp_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu32ll(Test_BFu0ll_Vp_BFu32ll, "BFu0ll_Vp_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu33()
{
  {
    init_simple_test("BFu0ll_Vp_BFu33");
    static BFu0ll_Vp_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(BFu0ll_Vp_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "BFu0ll_Vp_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "BFu0ll_Vp_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu33(Test_BFu0ll_Vp_BFu33, "BFu0ll_Vp_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu7c()
{
  {
    init_simple_test("BFu0ll_Vp_BFu7c");
    static BFu0ll_Vp_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0ll_Vp_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0ll_Vp_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0ll_Vp_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu7c(Test_BFu0ll_Vp_BFu7c, "BFu0ll_Vp_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu7i()
{
  {
    init_simple_test("BFu0ll_Vp_BFu7i");
    static BFu0ll_Vp_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0ll_Vp_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0ll_Vp_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0ll_Vp_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu7i(Test_BFu0ll_Vp_BFu7i, "BFu0ll_Vp_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu7ll()
{
  {
    init_simple_test("BFu0ll_Vp_BFu7ll");
    static BFu0ll_Vp_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0ll_Vp_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0ll_Vp_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0ll_Vp_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu7ll(Test_BFu0ll_Vp_BFu7ll, "BFu0ll_Vp_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_BFu7s()
{
  {
    init_simple_test("BFu0ll_Vp_BFu7s");
    static BFu0ll_Vp_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0ll_Vp_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0ll_Vp_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0ll_Vp_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_BFu7s(Test_BFu0ll_Vp_BFu7s, "BFu0ll_Vp_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_C()
{
  {
    init_simple_test("BFu0ll_Vp_C");
    static BFu0ll_Vp_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0ll_Vp_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_C)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_C.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_C(Test_BFu0ll_Vp_C, "BFu0ll_Vp_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_D()
{
  {
    init_simple_test("BFu0ll_Vp_D");
    static BFu0ll_Vp_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0ll_Vp_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_D)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_D.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_D(Test_BFu0ll_Vp_D, "BFu0ll_Vp_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_F()
{
  {
    init_simple_test("BFu0ll_Vp_F");
    static BFu0ll_Vp_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0ll_Vp_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_F)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_F.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_F(Test_BFu0ll_Vp_F, "BFu0ll_Vp_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_I()
{
  {
    init_simple_test("BFu0ll_Vp_I");
    static BFu0ll_Vp_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0ll_Vp_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_I)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_I.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_I(Test_BFu0ll_Vp_I, "BFu0ll_Vp_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_Ip()
{
  {
    init_simple_test("BFu0ll_Vp_Ip");
    static BFu0ll_Vp_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(BFu0ll_Vp_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_Ip)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_Ip(Test_BFu0ll_Vp_Ip, "BFu0ll_Vp_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_L()
{
  {
    init_simple_test("BFu0ll_Vp_L");
    static BFu0ll_Vp_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0ll_Vp_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_L)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_L.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_L(Test_BFu0ll_Vp_L, "BFu0ll_Vp_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_S()
{
  {
    init_simple_test("BFu0ll_Vp_S");
    static BFu0ll_Vp_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0ll_Vp_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_S)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_S.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_S(Test_BFu0ll_Vp_S, "BFu0ll_Vp_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_Uc()
{
  {
    init_simple_test("BFu0ll_Vp_Uc");
    static BFu0ll_Vp_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0ll_Vp_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_Uc)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_Uc(Test_BFu0ll_Vp_Uc, "BFu0ll_Vp_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_Ui()
{
  {
    init_simple_test("BFu0ll_Vp_Ui");
    static BFu0ll_Vp_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0ll_Vp_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_Ui)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_Ui(Test_BFu0ll_Vp_Ui, "BFu0ll_Vp_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_Ul()
{
  {
    init_simple_test("BFu0ll_Vp_Ul");
    static BFu0ll_Vp_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0ll_Vp_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_Ul)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_Ul(Test_BFu0ll_Vp_Ul, "BFu0ll_Vp_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_Us()
{
  {
    init_simple_test("BFu0ll_Vp_Us");
    static BFu0ll_Vp_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0ll_Vp_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_Us)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_Us.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_Us(Test_BFu0ll_Vp_Us, "BFu0ll_Vp_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0ll_Vp_Vp()
{
  {
    init_simple_test("BFu0ll_Vp_Vp");
    static BFu0ll_Vp_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(BFu0ll_Vp_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0ll_Vp_Vp)");
    check_field_offset(lv, v1, 0, "BFu0ll_Vp_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0ll_Vp_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0ll_Vp_Vp(Test_BFu0ll_Vp_Vp, "BFu0ll_Vp_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s()
{
  {
    init_simple_test("BFu0s");
    static BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s(Test_BFu0s, "BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0c");
    static BFu0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c(Test_BFu0s_BFs0c, "BFu0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0c");
    static BFu0s_BFs0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0c(Test_BFu0s_BFs0c_BFs0c, "BFu0s_BFs0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0c_BFs0c");
    static BFu0s_BFs0c_BFs0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0c_BFs0c(Test_BFu0s_BFs0c_BFs0c_BFs0c, "BFu0s_BFs0c_BFs0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0c_BFs0i");
    static BFu0s_BFs0c_BFs0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0c_BFs0i(Test_BFu0s_BFs0c_BFs0c_BFs0i, "BFu0s_BFs0c_BFs0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0c_BFs0ll");
    static BFu0s_BFs0c_BFs0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0c_BFs0ll(Test_BFu0s_BFs0c_BFs0c_BFs0ll, "BFu0s_BFs0c_BFs0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0c_BFs0s");
    static BFu0s_BFs0c_BFs0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0c_BFs0s(Test_BFu0s_BFs0c_BFs0c_BFs0s, "BFu0s_BFs0c_BFs0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0c_BFu0c");
    static BFu0s_BFs0c_BFs0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0c_BFu0c(Test_BFu0s_BFs0c_BFs0c_BFu0c, "BFu0s_BFs0c_BFs0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0c_BFu0i");
    static BFu0s_BFs0c_BFs0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0c_BFu0i(Test_BFu0s_BFs0c_BFs0c_BFu0i, "BFu0s_BFs0c_BFs0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0c_BFu0ll");
    static BFu0s_BFs0c_BFs0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0c_BFu0ll(Test_BFu0s_BFs0c_BFs0c_BFu0ll, "BFu0s_BFs0c_BFs0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0c_BFu0s");
    static BFu0s_BFs0c_BFs0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0c_BFu0s(Test_BFu0s_BFs0c_BFs0c_BFu0s, "BFu0s_BFs0c_BFs0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0i");
    static BFu0s_BFs0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0i(Test_BFu0s_BFs0c_BFs0i, "BFu0s_BFs0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0i_BFs0c");
    static BFu0s_BFs0c_BFs0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0i_BFs0c(Test_BFu0s_BFs0c_BFs0i_BFs0c, "BFu0s_BFs0c_BFs0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0i_BFs0i");
    static BFu0s_BFs0c_BFs0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0i_BFs0i(Test_BFu0s_BFs0c_BFs0i_BFs0i, "BFu0s_BFs0c_BFs0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0i_BFs0ll");
    static BFu0s_BFs0c_BFs0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0i_BFs0ll(Test_BFu0s_BFs0c_BFs0i_BFs0ll, "BFu0s_BFs0c_BFs0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0i_BFs0s");
    static BFu0s_BFs0c_BFs0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0i_BFs0s(Test_BFu0s_BFs0c_BFs0i_BFs0s, "BFu0s_BFs0c_BFs0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0i_BFu0c");
    static BFu0s_BFs0c_BFs0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0i_BFu0c(Test_BFu0s_BFs0c_BFs0i_BFu0c, "BFu0s_BFs0c_BFs0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0i_BFu0i");
    static BFu0s_BFs0c_BFs0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0i_BFu0i(Test_BFu0s_BFs0c_BFs0i_BFu0i, "BFu0s_BFs0c_BFs0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0i_BFu0ll");
    static BFu0s_BFs0c_BFs0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0i_BFu0ll(Test_BFu0s_BFs0c_BFs0i_BFu0ll, "BFu0s_BFs0c_BFs0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0i_BFu0s");
    static BFu0s_BFs0c_BFs0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0i_BFu0s(Test_BFu0s_BFs0c_BFs0i_BFu0s, "BFu0s_BFs0c_BFs0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0ll");
    static BFu0s_BFs0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0ll(Test_BFu0s_BFs0c_BFs0ll, "BFu0s_BFs0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0ll_BFs0c");
    static BFu0s_BFs0c_BFs0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0ll_BFs0c(Test_BFu0s_BFs0c_BFs0ll_BFs0c, "BFu0s_BFs0c_BFs0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0ll_BFs0i");
    static BFu0s_BFs0c_BFs0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0ll_BFs0i(Test_BFu0s_BFs0c_BFs0ll_BFs0i, "BFu0s_BFs0c_BFs0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0ll_BFs0ll");
    static BFu0s_BFs0c_BFs0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0ll_BFs0ll(Test_BFu0s_BFs0c_BFs0ll_BFs0ll, "BFu0s_BFs0c_BFs0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0ll_BFs0s");
    static BFu0s_BFs0c_BFs0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0ll_BFs0s(Test_BFu0s_BFs0c_BFs0ll_BFs0s, "BFu0s_BFs0c_BFs0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0ll_BFu0c");
    static BFu0s_BFs0c_BFs0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0ll_BFu0c(Test_BFu0s_BFs0c_BFs0ll_BFu0c, "BFu0s_BFs0c_BFs0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0ll_BFu0i");
    static BFu0s_BFs0c_BFs0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0ll_BFu0i(Test_BFu0s_BFs0c_BFs0ll_BFu0i, "BFu0s_BFs0c_BFs0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0ll_BFu0ll");
    static BFu0s_BFs0c_BFs0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0ll_BFu0ll(Test_BFu0s_BFs0c_BFs0ll_BFu0ll, "BFu0s_BFs0c_BFs0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0ll_BFu0s");
    static BFu0s_BFs0c_BFs0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0ll_BFu0s(Test_BFu0s_BFs0c_BFs0ll_BFu0s, "BFu0s_BFs0c_BFs0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0s");
    static BFu0s_BFs0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0s(Test_BFu0s_BFs0c_BFs0s, "BFu0s_BFs0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0s_BFs0c");
    static BFu0s_BFs0c_BFs0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0s_BFs0c(Test_BFu0s_BFs0c_BFs0s_BFs0c, "BFu0s_BFs0c_BFs0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0s_BFs0i");
    static BFu0s_BFs0c_BFs0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0s_BFs0i(Test_BFu0s_BFs0c_BFs0s_BFs0i, "BFu0s_BFs0c_BFs0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0s_BFs0ll");
    static BFu0s_BFs0c_BFs0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0s_BFs0ll(Test_BFu0s_BFs0c_BFs0s_BFs0ll, "BFu0s_BFs0c_BFs0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0s_BFs0s");
    static BFu0s_BFs0c_BFs0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0s_BFs0s(Test_BFu0s_BFs0c_BFs0s_BFs0s, "BFu0s_BFs0c_BFs0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0s_BFu0c");
    static BFu0s_BFs0c_BFs0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0s_BFu0c(Test_BFu0s_BFs0c_BFs0s_BFu0c, "BFu0s_BFs0c_BFs0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0s_BFu0i");
    static BFu0s_BFs0c_BFs0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0s_BFu0i(Test_BFu0s_BFs0c_BFs0s_BFu0i, "BFu0s_BFs0c_BFs0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0s_BFu0ll");
    static BFu0s_BFs0c_BFs0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0s_BFu0ll(Test_BFu0s_BFs0c_BFs0s_BFu0ll, "BFu0s_BFs0c_BFs0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFs0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFs0s_BFu0s");
    static BFu0s_BFs0c_BFs0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFs0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFs0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFs0s_BFu0s(Test_BFu0s_BFs0c_BFs0s_BFu0s, "BFu0s_BFs0c_BFs0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0c");
    static BFu0s_BFs0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0c(Test_BFu0s_BFs0c_BFu0c, "BFu0s_BFs0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0c_BFs0c");
    static BFu0s_BFs0c_BFu0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0c_BFs0c(Test_BFu0s_BFs0c_BFu0c_BFs0c, "BFu0s_BFs0c_BFu0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0c_BFs0i");
    static BFu0s_BFs0c_BFu0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0c_BFs0i(Test_BFu0s_BFs0c_BFu0c_BFs0i, "BFu0s_BFs0c_BFu0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0c_BFs0ll");
    static BFu0s_BFs0c_BFu0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0c_BFs0ll(Test_BFu0s_BFs0c_BFu0c_BFs0ll, "BFu0s_BFs0c_BFu0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0c_BFs0s");
    static BFu0s_BFs0c_BFu0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0c_BFs0s(Test_BFu0s_BFs0c_BFu0c_BFs0s, "BFu0s_BFs0c_BFu0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0c_BFu0c");
    static BFu0s_BFs0c_BFu0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0c_BFu0c(Test_BFu0s_BFs0c_BFu0c_BFu0c, "BFu0s_BFs0c_BFu0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0c_BFu0i");
    static BFu0s_BFs0c_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0c_BFu0i(Test_BFu0s_BFs0c_BFu0c_BFu0i, "BFu0s_BFs0c_BFu0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0c_BFu0ll");
    static BFu0s_BFs0c_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0c_BFu0ll(Test_BFu0s_BFs0c_BFu0c_BFu0ll, "BFu0s_BFs0c_BFu0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0c_BFu0s");
    static BFu0s_BFs0c_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0c_BFu0s(Test_BFu0s_BFs0c_BFu0c_BFu0s, "BFu0s_BFs0c_BFu0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0i");
    static BFu0s_BFs0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0i(Test_BFu0s_BFs0c_BFu0i, "BFu0s_BFs0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0i_BFs0c");
    static BFu0s_BFs0c_BFu0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0i_BFs0c(Test_BFu0s_BFs0c_BFu0i_BFs0c, "BFu0s_BFs0c_BFu0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0i_BFs0i");
    static BFu0s_BFs0c_BFu0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0i_BFs0i(Test_BFu0s_BFs0c_BFu0i_BFs0i, "BFu0s_BFs0c_BFu0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0i_BFs0ll");
    static BFu0s_BFs0c_BFu0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0i_BFs0ll(Test_BFu0s_BFs0c_BFu0i_BFs0ll, "BFu0s_BFs0c_BFu0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0i_BFs0s");
    static BFu0s_BFs0c_BFu0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0i_BFs0s(Test_BFu0s_BFs0c_BFu0i_BFs0s, "BFu0s_BFs0c_BFu0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0i_BFu0c");
    static BFu0s_BFs0c_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0i_BFu0c(Test_BFu0s_BFs0c_BFu0i_BFu0c, "BFu0s_BFs0c_BFu0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0i_BFu0i");
    static BFu0s_BFs0c_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0i_BFu0i(Test_BFu0s_BFs0c_BFu0i_BFu0i, "BFu0s_BFs0c_BFu0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0i_BFu0ll");
    static BFu0s_BFs0c_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0i_BFu0ll(Test_BFu0s_BFs0c_BFu0i_BFu0ll, "BFu0s_BFs0c_BFu0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0i_BFu0s");
    static BFu0s_BFs0c_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0i_BFu0s(Test_BFu0s_BFs0c_BFu0i_BFu0s, "BFu0s_BFs0c_BFu0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0ll");
    static BFu0s_BFs0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0ll(Test_BFu0s_BFs0c_BFu0ll, "BFu0s_BFs0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0ll_BFs0c");
    static BFu0s_BFs0c_BFu0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0ll_BFs0c(Test_BFu0s_BFs0c_BFu0ll_BFs0c, "BFu0s_BFs0c_BFu0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0ll_BFs0i");
    static BFu0s_BFs0c_BFu0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0ll_BFs0i(Test_BFu0s_BFs0c_BFu0ll_BFs0i, "BFu0s_BFs0c_BFu0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0ll_BFs0ll");
    static BFu0s_BFs0c_BFu0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0ll_BFs0ll(Test_BFu0s_BFs0c_BFu0ll_BFs0ll, "BFu0s_BFs0c_BFu0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0ll_BFs0s");
    static BFu0s_BFs0c_BFu0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0ll_BFs0s(Test_BFu0s_BFs0c_BFu0ll_BFs0s, "BFu0s_BFs0c_BFu0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0ll_BFu0c");
    static BFu0s_BFs0c_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0ll_BFu0c(Test_BFu0s_BFs0c_BFu0ll_BFu0c, "BFu0s_BFs0c_BFu0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0ll_BFu0i");
    static BFu0s_BFs0c_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0ll_BFu0i(Test_BFu0s_BFs0c_BFu0ll_BFu0i, "BFu0s_BFs0c_BFu0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0ll_BFu0ll");
    static BFu0s_BFs0c_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0ll_BFu0ll(Test_BFu0s_BFs0c_BFu0ll_BFu0ll, "BFu0s_BFs0c_BFu0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0ll_BFu0s");
    static BFu0s_BFs0c_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0ll_BFu0s(Test_BFu0s_BFs0c_BFu0ll_BFu0s, "BFu0s_BFs0c_BFu0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0s");
    static BFu0s_BFs0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0s(Test_BFu0s_BFs0c_BFu0s, "BFu0s_BFs0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0s_BFs0c");
    static BFu0s_BFs0c_BFu0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0s_BFs0c(Test_BFu0s_BFs0c_BFu0s_BFs0c, "BFu0s_BFs0c_BFu0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0s_BFs0i");
    static BFu0s_BFs0c_BFu0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0s_BFs0i(Test_BFu0s_BFs0c_BFu0s_BFs0i, "BFu0s_BFs0c_BFu0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0s_BFs0ll");
    static BFu0s_BFs0c_BFu0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0s_BFs0ll(Test_BFu0s_BFs0c_BFu0s_BFs0ll, "BFu0s_BFs0c_BFu0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0s_BFs0s");
    static BFu0s_BFs0c_BFu0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0s_BFs0s(Test_BFu0s_BFs0c_BFu0s_BFs0s, "BFu0s_BFs0c_BFu0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0s_BFu0c");
    static BFu0s_BFs0c_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0s_BFu0c(Test_BFu0s_BFs0c_BFu0s_BFu0c, "BFu0s_BFs0c_BFu0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0s_BFu0i");
    static BFu0s_BFs0c_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0s_BFu0i(Test_BFu0s_BFs0c_BFu0s_BFu0i, "BFu0s_BFs0c_BFu0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0s_BFu0ll");
    static BFu0s_BFs0c_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0s_BFu0ll(Test_BFu0s_BFs0c_BFu0s_BFu0ll, "BFu0s_BFs0c_BFu0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0c_BFu0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0c_BFu0s_BFu0s");
    static BFu0s_BFs0c_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0c_BFu0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0c_BFu0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0c_BFu0s_BFu0s(Test_BFu0s_BFs0c_BFu0s_BFu0s, "BFu0s_BFs0c_BFu0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0i");
    static BFu0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i(Test_BFu0s_BFs0i, "BFu0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0c");
    static BFu0s_BFs0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0c(Test_BFu0s_BFs0i_BFs0c, "BFu0s_BFs0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0c_BFs0c");
    static BFu0s_BFs0i_BFs0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0c_BFs0c(Test_BFu0s_BFs0i_BFs0c_BFs0c, "BFu0s_BFs0i_BFs0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0c_BFs0i");
    static BFu0s_BFs0i_BFs0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0c_BFs0i(Test_BFu0s_BFs0i_BFs0c_BFs0i, "BFu0s_BFs0i_BFs0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0c_BFs0ll");
    static BFu0s_BFs0i_BFs0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0c_BFs0ll(Test_BFu0s_BFs0i_BFs0c_BFs0ll, "BFu0s_BFs0i_BFs0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0c_BFs0s");
    static BFu0s_BFs0i_BFs0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0c_BFs0s(Test_BFu0s_BFs0i_BFs0c_BFs0s, "BFu0s_BFs0i_BFs0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0c_BFu0c");
    static BFu0s_BFs0i_BFs0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0c_BFu0c(Test_BFu0s_BFs0i_BFs0c_BFu0c, "BFu0s_BFs0i_BFs0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0c_BFu0i");
    static BFu0s_BFs0i_BFs0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0c_BFu0i(Test_BFu0s_BFs0i_BFs0c_BFu0i, "BFu0s_BFs0i_BFs0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0c_BFu0ll");
    static BFu0s_BFs0i_BFs0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0c_BFu0ll(Test_BFu0s_BFs0i_BFs0c_BFu0ll, "BFu0s_BFs0i_BFs0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0c_BFu0s");
    static BFu0s_BFs0i_BFs0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0c_BFu0s(Test_BFu0s_BFs0i_BFs0c_BFu0s, "BFu0s_BFs0i_BFs0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0i");
    static BFu0s_BFs0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0i(Test_BFu0s_BFs0i_BFs0i, "BFu0s_BFs0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0i_BFs0c");
    static BFu0s_BFs0i_BFs0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0i_BFs0c(Test_BFu0s_BFs0i_BFs0i_BFs0c, "BFu0s_BFs0i_BFs0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0i_BFs0i");
    static BFu0s_BFs0i_BFs0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0i_BFs0i(Test_BFu0s_BFs0i_BFs0i_BFs0i, "BFu0s_BFs0i_BFs0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0i_BFs0ll");
    static BFu0s_BFs0i_BFs0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0i_BFs0ll(Test_BFu0s_BFs0i_BFs0i_BFs0ll, "BFu0s_BFs0i_BFs0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0i_BFs0s");
    static BFu0s_BFs0i_BFs0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0i_BFs0s(Test_BFu0s_BFs0i_BFs0i_BFs0s, "BFu0s_BFs0i_BFs0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0i_BFu0c");
    static BFu0s_BFs0i_BFs0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0i_BFu0c(Test_BFu0s_BFs0i_BFs0i_BFu0c, "BFu0s_BFs0i_BFs0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0i_BFu0i");
    static BFu0s_BFs0i_BFs0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0i_BFu0i(Test_BFu0s_BFs0i_BFs0i_BFu0i, "BFu0s_BFs0i_BFs0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0i_BFu0ll");
    static BFu0s_BFs0i_BFs0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0i_BFu0ll(Test_BFu0s_BFs0i_BFs0i_BFu0ll, "BFu0s_BFs0i_BFs0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0i_BFu0s");
    static BFu0s_BFs0i_BFs0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0i_BFu0s(Test_BFu0s_BFs0i_BFs0i_BFu0s, "BFu0s_BFs0i_BFs0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0ll");
    static BFu0s_BFs0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0ll(Test_BFu0s_BFs0i_BFs0ll, "BFu0s_BFs0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0ll_BFs0c");
    static BFu0s_BFs0i_BFs0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0ll_BFs0c(Test_BFu0s_BFs0i_BFs0ll_BFs0c, "BFu0s_BFs0i_BFs0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0ll_BFs0i");
    static BFu0s_BFs0i_BFs0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0ll_BFs0i(Test_BFu0s_BFs0i_BFs0ll_BFs0i, "BFu0s_BFs0i_BFs0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0ll_BFs0ll");
    static BFu0s_BFs0i_BFs0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0ll_BFs0ll(Test_BFu0s_BFs0i_BFs0ll_BFs0ll, "BFu0s_BFs0i_BFs0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0ll_BFs0s");
    static BFu0s_BFs0i_BFs0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0ll_BFs0s(Test_BFu0s_BFs0i_BFs0ll_BFs0s, "BFu0s_BFs0i_BFs0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0ll_BFu0c");
    static BFu0s_BFs0i_BFs0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0ll_BFu0c(Test_BFu0s_BFs0i_BFs0ll_BFu0c, "BFu0s_BFs0i_BFs0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0ll_BFu0i");
    static BFu0s_BFs0i_BFs0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0ll_BFu0i(Test_BFu0s_BFs0i_BFs0ll_BFu0i, "BFu0s_BFs0i_BFs0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0ll_BFu0ll");
    static BFu0s_BFs0i_BFs0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0ll_BFu0ll(Test_BFu0s_BFs0i_BFs0ll_BFu0ll, "BFu0s_BFs0i_BFs0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0ll_BFu0s");
    static BFu0s_BFs0i_BFs0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0ll_BFu0s(Test_BFu0s_BFs0i_BFs0ll_BFu0s, "BFu0s_BFs0i_BFs0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0s");
    static BFu0s_BFs0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0s(Test_BFu0s_BFs0i_BFs0s, "BFu0s_BFs0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0s_BFs0c");
    static BFu0s_BFs0i_BFs0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0s_BFs0c(Test_BFu0s_BFs0i_BFs0s_BFs0c, "BFu0s_BFs0i_BFs0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0s_BFs0i");
    static BFu0s_BFs0i_BFs0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0s_BFs0i(Test_BFu0s_BFs0i_BFs0s_BFs0i, "BFu0s_BFs0i_BFs0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0s_BFs0ll");
    static BFu0s_BFs0i_BFs0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0s_BFs0ll(Test_BFu0s_BFs0i_BFs0s_BFs0ll, "BFu0s_BFs0i_BFs0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0s_BFs0s");
    static BFu0s_BFs0i_BFs0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0s_BFs0s(Test_BFu0s_BFs0i_BFs0s_BFs0s, "BFu0s_BFs0i_BFs0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0s_BFu0c");
    static BFu0s_BFs0i_BFs0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0s_BFu0c(Test_BFu0s_BFs0i_BFs0s_BFu0c, "BFu0s_BFs0i_BFs0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0s_BFu0i");
    static BFu0s_BFs0i_BFs0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0s_BFu0i(Test_BFu0s_BFs0i_BFs0s_BFu0i, "BFu0s_BFs0i_BFs0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0s_BFu0ll");
    static BFu0s_BFs0i_BFs0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0s_BFu0ll(Test_BFu0s_BFs0i_BFs0s_BFu0ll, "BFu0s_BFs0i_BFs0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFs0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFs0s_BFu0s");
    static BFu0s_BFs0i_BFs0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFs0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFs0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFs0s_BFu0s(Test_BFu0s_BFs0i_BFs0s_BFu0s, "BFu0s_BFs0i_BFs0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0c");
    static BFu0s_BFs0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0c(Test_BFu0s_BFs0i_BFu0c, "BFu0s_BFs0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0c_BFs0c");
    static BFu0s_BFs0i_BFu0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0c_BFs0c(Test_BFu0s_BFs0i_BFu0c_BFs0c, "BFu0s_BFs0i_BFu0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0c_BFs0i");
    static BFu0s_BFs0i_BFu0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0c_BFs0i(Test_BFu0s_BFs0i_BFu0c_BFs0i, "BFu0s_BFs0i_BFu0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0c_BFs0ll");
    static BFu0s_BFs0i_BFu0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0c_BFs0ll(Test_BFu0s_BFs0i_BFu0c_BFs0ll, "BFu0s_BFs0i_BFu0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0c_BFs0s");
    static BFu0s_BFs0i_BFu0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0c_BFs0s(Test_BFu0s_BFs0i_BFu0c_BFs0s, "BFu0s_BFs0i_BFu0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0c_BFu0c");
    static BFu0s_BFs0i_BFu0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0c_BFu0c(Test_BFu0s_BFs0i_BFu0c_BFu0c, "BFu0s_BFs0i_BFu0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0c_BFu0i");
    static BFu0s_BFs0i_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0c_BFu0i(Test_BFu0s_BFs0i_BFu0c_BFu0i, "BFu0s_BFs0i_BFu0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0c_BFu0ll");
    static BFu0s_BFs0i_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0c_BFu0ll(Test_BFu0s_BFs0i_BFu0c_BFu0ll, "BFu0s_BFs0i_BFu0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0c_BFu0s");
    static BFu0s_BFs0i_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0c_BFu0s(Test_BFu0s_BFs0i_BFu0c_BFu0s, "BFu0s_BFs0i_BFu0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0i");
    static BFu0s_BFs0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0i(Test_BFu0s_BFs0i_BFu0i, "BFu0s_BFs0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0i_BFs0c");
    static BFu0s_BFs0i_BFu0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0i_BFs0c(Test_BFu0s_BFs0i_BFu0i_BFs0c, "BFu0s_BFs0i_BFu0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0i_BFs0i");
    static BFu0s_BFs0i_BFu0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0i_BFs0i(Test_BFu0s_BFs0i_BFu0i_BFs0i, "BFu0s_BFs0i_BFu0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0i_BFs0ll");
    static BFu0s_BFs0i_BFu0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0i_BFs0ll(Test_BFu0s_BFs0i_BFu0i_BFs0ll, "BFu0s_BFs0i_BFu0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0i_BFs0s");
    static BFu0s_BFs0i_BFu0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0i_BFs0s(Test_BFu0s_BFs0i_BFu0i_BFs0s, "BFu0s_BFs0i_BFu0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0i_BFu0c");
    static BFu0s_BFs0i_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0i_BFu0c(Test_BFu0s_BFs0i_BFu0i_BFu0c, "BFu0s_BFs0i_BFu0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0i_BFu0i");
    static BFu0s_BFs0i_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0i_BFu0i(Test_BFu0s_BFs0i_BFu0i_BFu0i, "BFu0s_BFs0i_BFu0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0i_BFu0ll");
    static BFu0s_BFs0i_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0i_BFu0ll(Test_BFu0s_BFs0i_BFu0i_BFu0ll, "BFu0s_BFs0i_BFu0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0i_BFu0s");
    static BFu0s_BFs0i_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0i_BFu0s(Test_BFu0s_BFs0i_BFu0i_BFu0s, "BFu0s_BFs0i_BFu0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0ll");
    static BFu0s_BFs0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0ll(Test_BFu0s_BFs0i_BFu0ll, "BFu0s_BFs0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0ll_BFs0c");
    static BFu0s_BFs0i_BFu0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0ll_BFs0c(Test_BFu0s_BFs0i_BFu0ll_BFs0c, "BFu0s_BFs0i_BFu0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0ll_BFs0i");
    static BFu0s_BFs0i_BFu0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0ll_BFs0i(Test_BFu0s_BFs0i_BFu0ll_BFs0i, "BFu0s_BFs0i_BFu0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0ll_BFs0ll");
    static BFu0s_BFs0i_BFu0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0ll_BFs0ll(Test_BFu0s_BFs0i_BFu0ll_BFs0ll, "BFu0s_BFs0i_BFu0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0ll_BFs0s");
    static BFu0s_BFs0i_BFu0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0ll_BFs0s(Test_BFu0s_BFs0i_BFu0ll_BFs0s, "BFu0s_BFs0i_BFu0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0ll_BFu0c");
    static BFu0s_BFs0i_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0ll_BFu0c(Test_BFu0s_BFs0i_BFu0ll_BFu0c, "BFu0s_BFs0i_BFu0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0ll_BFu0i");
    static BFu0s_BFs0i_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0ll_BFu0i(Test_BFu0s_BFs0i_BFu0ll_BFu0i, "BFu0s_BFs0i_BFu0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0ll_BFu0ll");
    static BFu0s_BFs0i_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0ll_BFu0ll(Test_BFu0s_BFs0i_BFu0ll_BFu0ll, "BFu0s_BFs0i_BFu0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0ll_BFu0s");
    static BFu0s_BFs0i_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0ll_BFu0s(Test_BFu0s_BFs0i_BFu0ll_BFu0s, "BFu0s_BFs0i_BFu0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0s");
    static BFu0s_BFs0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0s(Test_BFu0s_BFs0i_BFu0s, "BFu0s_BFs0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0s_BFs0c");
    static BFu0s_BFs0i_BFu0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0s_BFs0c(Test_BFu0s_BFs0i_BFu0s_BFs0c, "BFu0s_BFs0i_BFu0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0s_BFs0i");
    static BFu0s_BFs0i_BFu0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0s_BFs0i(Test_BFu0s_BFs0i_BFu0s_BFs0i, "BFu0s_BFs0i_BFu0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0s_BFs0ll");
    static BFu0s_BFs0i_BFu0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0s_BFs0ll(Test_BFu0s_BFs0i_BFu0s_BFs0ll, "BFu0s_BFs0i_BFu0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0s_BFs0s");
    static BFu0s_BFs0i_BFu0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0s_BFs0s(Test_BFu0s_BFs0i_BFu0s_BFs0s, "BFu0s_BFs0i_BFu0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0s_BFu0c");
    static BFu0s_BFs0i_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0s_BFu0c(Test_BFu0s_BFs0i_BFu0s_BFu0c, "BFu0s_BFs0i_BFu0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0s_BFu0i");
    static BFu0s_BFs0i_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0s_BFu0i(Test_BFu0s_BFs0i_BFu0s_BFu0i, "BFu0s_BFs0i_BFu0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0s_BFu0ll");
    static BFu0s_BFs0i_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0s_BFu0ll(Test_BFu0s_BFs0i_BFu0s_BFu0ll, "BFu0s_BFs0i_BFu0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0i_BFu0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0i_BFu0s_BFu0s");
    static BFu0s_BFs0i_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0i_BFu0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0i_BFu0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0i_BFu0s_BFu0s(Test_BFu0s_BFs0i_BFu0s_BFu0s, "BFu0s_BFs0i_BFu0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll");
    static BFu0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll(Test_BFu0s_BFs0ll, "BFu0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0c");
    static BFu0s_BFs0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0c(Test_BFu0s_BFs0ll_BFs0c, "BFu0s_BFs0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0c_BFs0c");
    static BFu0s_BFs0ll_BFs0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0c_BFs0c(Test_BFu0s_BFs0ll_BFs0c_BFs0c, "BFu0s_BFs0ll_BFs0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0c_BFs0i");
    static BFu0s_BFs0ll_BFs0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0c_BFs0i(Test_BFu0s_BFs0ll_BFs0c_BFs0i, "BFu0s_BFs0ll_BFs0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0c_BFs0ll");
    static BFu0s_BFs0ll_BFs0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0c_BFs0ll(Test_BFu0s_BFs0ll_BFs0c_BFs0ll, "BFu0s_BFs0ll_BFs0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0c_BFs0s");
    static BFu0s_BFs0ll_BFs0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0c_BFs0s(Test_BFu0s_BFs0ll_BFs0c_BFs0s, "BFu0s_BFs0ll_BFs0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0c_BFu0c");
    static BFu0s_BFs0ll_BFs0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0c_BFu0c(Test_BFu0s_BFs0ll_BFs0c_BFu0c, "BFu0s_BFs0ll_BFs0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0c_BFu0i");
    static BFu0s_BFs0ll_BFs0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0c_BFu0i(Test_BFu0s_BFs0ll_BFs0c_BFu0i, "BFu0s_BFs0ll_BFs0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0c_BFu0ll");
    static BFu0s_BFs0ll_BFs0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0c_BFu0ll(Test_BFu0s_BFs0ll_BFs0c_BFu0ll, "BFu0s_BFs0ll_BFs0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0c_BFu0s");
    static BFu0s_BFs0ll_BFs0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0c_BFu0s(Test_BFu0s_BFs0ll_BFs0c_BFu0s, "BFu0s_BFs0ll_BFs0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0i");
    static BFu0s_BFs0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0i(Test_BFu0s_BFs0ll_BFs0i, "BFu0s_BFs0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0i_BFs0c");
    static BFu0s_BFs0ll_BFs0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0i_BFs0c(Test_BFu0s_BFs0ll_BFs0i_BFs0c, "BFu0s_BFs0ll_BFs0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0i_BFs0i");
    static BFu0s_BFs0ll_BFs0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0i_BFs0i(Test_BFu0s_BFs0ll_BFs0i_BFs0i, "BFu0s_BFs0ll_BFs0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0i_BFs0ll");
    static BFu0s_BFs0ll_BFs0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0i_BFs0ll(Test_BFu0s_BFs0ll_BFs0i_BFs0ll, "BFu0s_BFs0ll_BFs0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0i_BFs0s");
    static BFu0s_BFs0ll_BFs0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0i_BFs0s(Test_BFu0s_BFs0ll_BFs0i_BFs0s, "BFu0s_BFs0ll_BFs0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0i_BFu0c");
    static BFu0s_BFs0ll_BFs0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0i_BFu0c(Test_BFu0s_BFs0ll_BFs0i_BFu0c, "BFu0s_BFs0ll_BFs0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0i_BFu0i");
    static BFu0s_BFs0ll_BFs0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0i_BFu0i(Test_BFu0s_BFs0ll_BFs0i_BFu0i, "BFu0s_BFs0ll_BFs0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0i_BFu0ll");
    static BFu0s_BFs0ll_BFs0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0i_BFu0ll(Test_BFu0s_BFs0ll_BFs0i_BFu0ll, "BFu0s_BFs0ll_BFs0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0i_BFu0s");
    static BFu0s_BFs0ll_BFs0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0i_BFu0s(Test_BFu0s_BFs0ll_BFs0i_BFu0s, "BFu0s_BFs0ll_BFs0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0ll");
    static BFu0s_BFs0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0ll(Test_BFu0s_BFs0ll_BFs0ll, "BFu0s_BFs0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0ll_BFs0c");
    static BFu0s_BFs0ll_BFs0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0ll_BFs0c(Test_BFu0s_BFs0ll_BFs0ll_BFs0c, "BFu0s_BFs0ll_BFs0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0ll_BFs0i");
    static BFu0s_BFs0ll_BFs0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0ll_BFs0i(Test_BFu0s_BFs0ll_BFs0ll_BFs0i, "BFu0s_BFs0ll_BFs0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0ll_BFs0ll");
    static BFu0s_BFs0ll_BFs0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0ll_BFs0ll(Test_BFu0s_BFs0ll_BFs0ll_BFs0ll, "BFu0s_BFs0ll_BFs0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0ll_BFs0s");
    static BFu0s_BFs0ll_BFs0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0ll_BFs0s(Test_BFu0s_BFs0ll_BFs0ll_BFs0s, "BFu0s_BFs0ll_BFs0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0ll_BFu0c");
    static BFu0s_BFs0ll_BFs0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0ll_BFu0c(Test_BFu0s_BFs0ll_BFs0ll_BFu0c, "BFu0s_BFs0ll_BFs0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0ll_BFu0i");
    static BFu0s_BFs0ll_BFs0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0ll_BFu0i(Test_BFu0s_BFs0ll_BFs0ll_BFu0i, "BFu0s_BFs0ll_BFs0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0ll_BFu0ll");
    static BFu0s_BFs0ll_BFs0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0ll_BFu0ll(Test_BFu0s_BFs0ll_BFs0ll_BFu0ll, "BFu0s_BFs0ll_BFs0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0ll_BFu0s");
    static BFu0s_BFs0ll_BFs0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0ll_BFu0s(Test_BFu0s_BFs0ll_BFs0ll_BFu0s, "BFu0s_BFs0ll_BFs0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0s");
    static BFu0s_BFs0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0s(Test_BFu0s_BFs0ll_BFs0s, "BFu0s_BFs0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0s_BFs0c");
    static BFu0s_BFs0ll_BFs0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0s_BFs0c(Test_BFu0s_BFs0ll_BFs0s_BFs0c, "BFu0s_BFs0ll_BFs0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0s_BFs0i");
    static BFu0s_BFs0ll_BFs0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0s_BFs0i(Test_BFu0s_BFs0ll_BFs0s_BFs0i, "BFu0s_BFs0ll_BFs0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0s_BFs0ll");
    static BFu0s_BFs0ll_BFs0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0s_BFs0ll(Test_BFu0s_BFs0ll_BFs0s_BFs0ll, "BFu0s_BFs0ll_BFs0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0s_BFs0s");
    static BFu0s_BFs0ll_BFs0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0s_BFs0s(Test_BFu0s_BFs0ll_BFs0s_BFs0s, "BFu0s_BFs0ll_BFs0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0s_BFu0c");
    static BFu0s_BFs0ll_BFs0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0s_BFu0c(Test_BFu0s_BFs0ll_BFs0s_BFu0c, "BFu0s_BFs0ll_BFs0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0s_BFu0i");
    static BFu0s_BFs0ll_BFs0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0s_BFu0i(Test_BFu0s_BFs0ll_BFs0s_BFu0i, "BFu0s_BFs0ll_BFs0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0s_BFu0ll");
    static BFu0s_BFs0ll_BFs0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0s_BFu0ll(Test_BFu0s_BFs0ll_BFs0s_BFu0ll, "BFu0s_BFs0ll_BFs0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFs0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFs0s_BFu0s");
    static BFu0s_BFs0ll_BFs0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFs0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFs0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFs0s_BFu0s(Test_BFu0s_BFs0ll_BFs0s_BFu0s, "BFu0s_BFs0ll_BFs0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0c");
    static BFu0s_BFs0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0c(Test_BFu0s_BFs0ll_BFu0c, "BFu0s_BFs0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0c_BFs0c");
    static BFu0s_BFs0ll_BFu0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0c_BFs0c(Test_BFu0s_BFs0ll_BFu0c_BFs0c, "BFu0s_BFs0ll_BFu0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0c_BFs0i");
    static BFu0s_BFs0ll_BFu0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0c_BFs0i(Test_BFu0s_BFs0ll_BFu0c_BFs0i, "BFu0s_BFs0ll_BFu0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0c_BFs0ll");
    static BFu0s_BFs0ll_BFu0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0c_BFs0ll(Test_BFu0s_BFs0ll_BFu0c_BFs0ll, "BFu0s_BFs0ll_BFu0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0c_BFs0s");
    static BFu0s_BFs0ll_BFu0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0c_BFs0s(Test_BFu0s_BFs0ll_BFu0c_BFs0s, "BFu0s_BFs0ll_BFu0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0c_BFu0c");
    static BFu0s_BFs0ll_BFu0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0c_BFu0c(Test_BFu0s_BFs0ll_BFu0c_BFu0c, "BFu0s_BFs0ll_BFu0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0c_BFu0i");
    static BFu0s_BFs0ll_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0c_BFu0i(Test_BFu0s_BFs0ll_BFu0c_BFu0i, "BFu0s_BFs0ll_BFu0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0c_BFu0ll");
    static BFu0s_BFs0ll_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0c_BFu0ll(Test_BFu0s_BFs0ll_BFu0c_BFu0ll, "BFu0s_BFs0ll_BFu0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0c_BFu0s");
    static BFu0s_BFs0ll_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0c_BFu0s(Test_BFu0s_BFs0ll_BFu0c_BFu0s, "BFu0s_BFs0ll_BFu0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0i");
    static BFu0s_BFs0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0i(Test_BFu0s_BFs0ll_BFu0i, "BFu0s_BFs0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0i_BFs0c");
    static BFu0s_BFs0ll_BFu0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0i_BFs0c(Test_BFu0s_BFs0ll_BFu0i_BFs0c, "BFu0s_BFs0ll_BFu0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0i_BFs0i");
    static BFu0s_BFs0ll_BFu0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0i_BFs0i(Test_BFu0s_BFs0ll_BFu0i_BFs0i, "BFu0s_BFs0ll_BFu0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0i_BFs0ll");
    static BFu0s_BFs0ll_BFu0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0i_BFs0ll(Test_BFu0s_BFs0ll_BFu0i_BFs0ll, "BFu0s_BFs0ll_BFu0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0i_BFs0s");
    static BFu0s_BFs0ll_BFu0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0i_BFs0s(Test_BFu0s_BFs0ll_BFu0i_BFs0s, "BFu0s_BFs0ll_BFu0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0i_BFu0c");
    static BFu0s_BFs0ll_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0i_BFu0c(Test_BFu0s_BFs0ll_BFu0i_BFu0c, "BFu0s_BFs0ll_BFu0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0i_BFu0i");
    static BFu0s_BFs0ll_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0i_BFu0i(Test_BFu0s_BFs0ll_BFu0i_BFu0i, "BFu0s_BFs0ll_BFu0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0i_BFu0ll");
    static BFu0s_BFs0ll_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0i_BFu0ll(Test_BFu0s_BFs0ll_BFu0i_BFu0ll, "BFu0s_BFs0ll_BFu0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0i_BFu0s");
    static BFu0s_BFs0ll_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0i_BFu0s(Test_BFu0s_BFs0ll_BFu0i_BFu0s, "BFu0s_BFs0ll_BFu0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0ll");
    static BFu0s_BFs0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0ll(Test_BFu0s_BFs0ll_BFu0ll, "BFu0s_BFs0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0ll_BFs0c");
    static BFu0s_BFs0ll_BFu0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0ll_BFs0c(Test_BFu0s_BFs0ll_BFu0ll_BFs0c, "BFu0s_BFs0ll_BFu0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0ll_BFs0i");
    static BFu0s_BFs0ll_BFu0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0ll_BFs0i(Test_BFu0s_BFs0ll_BFu0ll_BFs0i, "BFu0s_BFs0ll_BFu0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0ll_BFs0ll");
    static BFu0s_BFs0ll_BFu0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0ll_BFs0ll(Test_BFu0s_BFs0ll_BFu0ll_BFs0ll, "BFu0s_BFs0ll_BFu0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0ll_BFs0s");
    static BFu0s_BFs0ll_BFu0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0ll_BFs0s(Test_BFu0s_BFs0ll_BFu0ll_BFs0s, "BFu0s_BFs0ll_BFu0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0ll_BFu0c");
    static BFu0s_BFs0ll_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0ll_BFu0c(Test_BFu0s_BFs0ll_BFu0ll_BFu0c, "BFu0s_BFs0ll_BFu0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0ll_BFu0i");
    static BFu0s_BFs0ll_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0ll_BFu0i(Test_BFu0s_BFs0ll_BFu0ll_BFu0i, "BFu0s_BFs0ll_BFu0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0ll_BFu0ll");
    static BFu0s_BFs0ll_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0ll_BFu0ll(Test_BFu0s_BFs0ll_BFu0ll_BFu0ll, "BFu0s_BFs0ll_BFu0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0ll_BFu0s");
    static BFu0s_BFs0ll_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0ll_BFu0s(Test_BFu0s_BFs0ll_BFu0ll_BFu0s, "BFu0s_BFs0ll_BFu0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0s");
    static BFu0s_BFs0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0s(Test_BFu0s_BFs0ll_BFu0s, "BFu0s_BFs0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0s_BFs0c");
    static BFu0s_BFs0ll_BFu0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0s_BFs0c(Test_BFu0s_BFs0ll_BFu0s_BFs0c, "BFu0s_BFs0ll_BFu0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0s_BFs0i");
    static BFu0s_BFs0ll_BFu0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0s_BFs0i(Test_BFu0s_BFs0ll_BFu0s_BFs0i, "BFu0s_BFs0ll_BFu0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0s_BFs0ll");
    static BFu0s_BFs0ll_BFu0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0s_BFs0ll(Test_BFu0s_BFs0ll_BFu0s_BFs0ll, "BFu0s_BFs0ll_BFu0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0s_BFs0s");
    static BFu0s_BFs0ll_BFu0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0s_BFs0s(Test_BFu0s_BFs0ll_BFu0s_BFs0s, "BFu0s_BFs0ll_BFu0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0s_BFu0c");
    static BFu0s_BFs0ll_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0s_BFu0c(Test_BFu0s_BFs0ll_BFu0s_BFu0c, "BFu0s_BFs0ll_BFu0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0s_BFu0i");
    static BFu0s_BFs0ll_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0s_BFu0i(Test_BFu0s_BFs0ll_BFu0s_BFu0i, "BFu0s_BFs0ll_BFu0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0s_BFu0ll");
    static BFu0s_BFs0ll_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0s_BFu0ll(Test_BFu0s_BFs0ll_BFu0s_BFu0ll, "BFu0s_BFs0ll_BFu0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0ll_BFu0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0ll_BFu0s_BFu0s");
    static BFu0s_BFs0ll_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0ll_BFu0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0ll_BFu0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0ll_BFu0s_BFu0s(Test_BFu0s_BFs0ll_BFu0s_BFu0s, "BFu0s_BFs0ll_BFu0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0s");
    static BFu0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s(Test_BFu0s_BFs0s, "BFu0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0c");
    static BFu0s_BFs0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0c(Test_BFu0s_BFs0s_BFs0c, "BFu0s_BFs0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0c_BFs0c");
    static BFu0s_BFs0s_BFs0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0c_BFs0c(Test_BFu0s_BFs0s_BFs0c_BFs0c, "BFu0s_BFs0s_BFs0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0c_BFs0i");
    static BFu0s_BFs0s_BFs0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0c_BFs0i(Test_BFu0s_BFs0s_BFs0c_BFs0i, "BFu0s_BFs0s_BFs0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0c_BFs0ll");
    static BFu0s_BFs0s_BFs0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0c_BFs0ll(Test_BFu0s_BFs0s_BFs0c_BFs0ll, "BFu0s_BFs0s_BFs0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0c_BFs0s");
    static BFu0s_BFs0s_BFs0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0c_BFs0s(Test_BFu0s_BFs0s_BFs0c_BFs0s, "BFu0s_BFs0s_BFs0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0c_BFu0c");
    static BFu0s_BFs0s_BFs0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0c_BFu0c(Test_BFu0s_BFs0s_BFs0c_BFu0c, "BFu0s_BFs0s_BFs0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0c_BFu0i");
    static BFu0s_BFs0s_BFs0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0c_BFu0i(Test_BFu0s_BFs0s_BFs0c_BFu0i, "BFu0s_BFs0s_BFs0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0c_BFu0ll");
    static BFu0s_BFs0s_BFs0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0c_BFu0ll(Test_BFu0s_BFs0s_BFs0c_BFu0ll, "BFu0s_BFs0s_BFs0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0c_BFu0s");
    static BFu0s_BFs0s_BFs0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0c_BFu0s(Test_BFu0s_BFs0s_BFs0c_BFu0s, "BFu0s_BFs0s_BFs0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0i");
    static BFu0s_BFs0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0i(Test_BFu0s_BFs0s_BFs0i, "BFu0s_BFs0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0i_BFs0c");
    static BFu0s_BFs0s_BFs0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0i_BFs0c(Test_BFu0s_BFs0s_BFs0i_BFs0c, "BFu0s_BFs0s_BFs0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0i_BFs0i");
    static BFu0s_BFs0s_BFs0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0i_BFs0i(Test_BFu0s_BFs0s_BFs0i_BFs0i, "BFu0s_BFs0s_BFs0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0i_BFs0ll");
    static BFu0s_BFs0s_BFs0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0i_BFs0ll(Test_BFu0s_BFs0s_BFs0i_BFs0ll, "BFu0s_BFs0s_BFs0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0i_BFs0s");
    static BFu0s_BFs0s_BFs0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0i_BFs0s(Test_BFu0s_BFs0s_BFs0i_BFs0s, "BFu0s_BFs0s_BFs0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0i_BFu0c");
    static BFu0s_BFs0s_BFs0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0i_BFu0c(Test_BFu0s_BFs0s_BFs0i_BFu0c, "BFu0s_BFs0s_BFs0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0i_BFu0i");
    static BFu0s_BFs0s_BFs0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0i_BFu0i(Test_BFu0s_BFs0s_BFs0i_BFu0i, "BFu0s_BFs0s_BFs0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0i_BFu0ll");
    static BFu0s_BFs0s_BFs0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0i_BFu0ll(Test_BFu0s_BFs0s_BFs0i_BFu0ll, "BFu0s_BFs0s_BFs0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0i_BFu0s");
    static BFu0s_BFs0s_BFs0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0i_BFu0s(Test_BFu0s_BFs0s_BFs0i_BFu0s, "BFu0s_BFs0s_BFs0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0ll");
    static BFu0s_BFs0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0ll(Test_BFu0s_BFs0s_BFs0ll, "BFu0s_BFs0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0ll_BFs0c");
    static BFu0s_BFs0s_BFs0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0ll_BFs0c(Test_BFu0s_BFs0s_BFs0ll_BFs0c, "BFu0s_BFs0s_BFs0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0ll_BFs0i");
    static BFu0s_BFs0s_BFs0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0ll_BFs0i(Test_BFu0s_BFs0s_BFs0ll_BFs0i, "BFu0s_BFs0s_BFs0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0ll_BFs0ll");
    static BFu0s_BFs0s_BFs0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0ll_BFs0ll(Test_BFu0s_BFs0s_BFs0ll_BFs0ll, "BFu0s_BFs0s_BFs0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0ll_BFs0s");
    static BFu0s_BFs0s_BFs0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0ll_BFs0s(Test_BFu0s_BFs0s_BFs0ll_BFs0s, "BFu0s_BFs0s_BFs0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0ll_BFu0c");
    static BFu0s_BFs0s_BFs0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0ll_BFu0c(Test_BFu0s_BFs0s_BFs0ll_BFu0c, "BFu0s_BFs0s_BFs0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0ll_BFu0i");
    static BFu0s_BFs0s_BFs0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0ll_BFu0i(Test_BFu0s_BFs0s_BFs0ll_BFu0i, "BFu0s_BFs0s_BFs0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0ll_BFu0ll");
    static BFu0s_BFs0s_BFs0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0ll_BFu0ll(Test_BFu0s_BFs0s_BFs0ll_BFu0ll, "BFu0s_BFs0s_BFs0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0ll_BFu0s");
    static BFu0s_BFs0s_BFs0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0ll_BFu0s(Test_BFu0s_BFs0s_BFs0ll_BFu0s, "BFu0s_BFs0s_BFs0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0s");
    static BFu0s_BFs0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0s(Test_BFu0s_BFs0s_BFs0s, "BFu0s_BFs0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0s_BFs0c");
    static BFu0s_BFs0s_BFs0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0s_BFs0c(Test_BFu0s_BFs0s_BFs0s_BFs0c, "BFu0s_BFs0s_BFs0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0s_BFs0i");
    static BFu0s_BFs0s_BFs0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0s_BFs0i(Test_BFu0s_BFs0s_BFs0s_BFs0i, "BFu0s_BFs0s_BFs0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0s_BFs0ll");
    static BFu0s_BFs0s_BFs0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0s_BFs0ll(Test_BFu0s_BFs0s_BFs0s_BFs0ll, "BFu0s_BFs0s_BFs0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0s_BFs0s");
    static BFu0s_BFs0s_BFs0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0s_BFs0s(Test_BFu0s_BFs0s_BFs0s_BFs0s, "BFu0s_BFs0s_BFs0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0s_BFu0c");
    static BFu0s_BFs0s_BFs0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0s_BFu0c(Test_BFu0s_BFs0s_BFs0s_BFu0c, "BFu0s_BFs0s_BFs0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0s_BFu0i");
    static BFu0s_BFs0s_BFs0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0s_BFu0i(Test_BFu0s_BFs0s_BFs0s_BFu0i, "BFu0s_BFs0s_BFs0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0s_BFu0ll");
    static BFu0s_BFs0s_BFs0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0s_BFu0ll(Test_BFu0s_BFs0s_BFs0s_BFu0ll, "BFu0s_BFs0s_BFs0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFs0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFs0s_BFu0s");
    static BFu0s_BFs0s_BFs0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFs0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFs0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFs0s_BFu0s(Test_BFu0s_BFs0s_BFs0s_BFu0s, "BFu0s_BFs0s_BFs0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0c");
    static BFu0s_BFs0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0c(Test_BFu0s_BFs0s_BFu0c, "BFu0s_BFs0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0c_BFs0c");
    static BFu0s_BFs0s_BFu0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0c_BFs0c(Test_BFu0s_BFs0s_BFu0c_BFs0c, "BFu0s_BFs0s_BFu0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0c_BFs0i");
    static BFu0s_BFs0s_BFu0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0c_BFs0i(Test_BFu0s_BFs0s_BFu0c_BFs0i, "BFu0s_BFs0s_BFu0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0c_BFs0ll");
    static BFu0s_BFs0s_BFu0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0c_BFs0ll(Test_BFu0s_BFs0s_BFu0c_BFs0ll, "BFu0s_BFs0s_BFu0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0c_BFs0s");
    static BFu0s_BFs0s_BFu0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0c_BFs0s(Test_BFu0s_BFs0s_BFu0c_BFs0s, "BFu0s_BFs0s_BFu0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0c_BFu0c");
    static BFu0s_BFs0s_BFu0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0c_BFu0c(Test_BFu0s_BFs0s_BFu0c_BFu0c, "BFu0s_BFs0s_BFu0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0c_BFu0i");
    static BFu0s_BFs0s_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0c_BFu0i(Test_BFu0s_BFs0s_BFu0c_BFu0i, "BFu0s_BFs0s_BFu0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0c_BFu0ll");
    static BFu0s_BFs0s_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0c_BFu0ll(Test_BFu0s_BFs0s_BFu0c_BFu0ll, "BFu0s_BFs0s_BFu0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0c_BFu0s");
    static BFu0s_BFs0s_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0c_BFu0s(Test_BFu0s_BFs0s_BFu0c_BFu0s, "BFu0s_BFs0s_BFu0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0i");
    static BFu0s_BFs0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0i(Test_BFu0s_BFs0s_BFu0i, "BFu0s_BFs0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0i_BFs0c");
    static BFu0s_BFs0s_BFu0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0i_BFs0c(Test_BFu0s_BFs0s_BFu0i_BFs0c, "BFu0s_BFs0s_BFu0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0i_BFs0i");
    static BFu0s_BFs0s_BFu0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0i_BFs0i(Test_BFu0s_BFs0s_BFu0i_BFs0i, "BFu0s_BFs0s_BFu0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0i_BFs0ll");
    static BFu0s_BFs0s_BFu0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0i_BFs0ll(Test_BFu0s_BFs0s_BFu0i_BFs0ll, "BFu0s_BFs0s_BFu0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0i_BFs0s");
    static BFu0s_BFs0s_BFu0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0i_BFs0s(Test_BFu0s_BFs0s_BFu0i_BFs0s, "BFu0s_BFs0s_BFu0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0i_BFu0c");
    static BFu0s_BFs0s_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0i_BFu0c(Test_BFu0s_BFs0s_BFu0i_BFu0c, "BFu0s_BFs0s_BFu0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0i_BFu0i");
    static BFu0s_BFs0s_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0i_BFu0i(Test_BFu0s_BFs0s_BFu0i_BFu0i, "BFu0s_BFs0s_BFu0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0i_BFu0ll");
    static BFu0s_BFs0s_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0i_BFu0ll(Test_BFu0s_BFs0s_BFu0i_BFu0ll, "BFu0s_BFs0s_BFu0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0i_BFu0s");
    static BFu0s_BFs0s_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0i_BFu0s(Test_BFu0s_BFs0s_BFu0i_BFu0s, "BFu0s_BFs0s_BFu0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0ll");
    static BFu0s_BFs0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0ll(Test_BFu0s_BFs0s_BFu0ll, "BFu0s_BFs0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0ll_BFs0c");
    static BFu0s_BFs0s_BFu0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0ll_BFs0c(Test_BFu0s_BFs0s_BFu0ll_BFs0c, "BFu0s_BFs0s_BFu0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0ll_BFs0i");
    static BFu0s_BFs0s_BFu0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0ll_BFs0i(Test_BFu0s_BFs0s_BFu0ll_BFs0i, "BFu0s_BFs0s_BFu0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0ll_BFs0ll");
    static BFu0s_BFs0s_BFu0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0ll_BFs0ll(Test_BFu0s_BFs0s_BFu0ll_BFs0ll, "BFu0s_BFs0s_BFu0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0ll_BFs0s");
    static BFu0s_BFs0s_BFu0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0ll_BFs0s(Test_BFu0s_BFs0s_BFu0ll_BFs0s, "BFu0s_BFs0s_BFu0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0ll_BFu0c");
    static BFu0s_BFs0s_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0ll_BFu0c(Test_BFu0s_BFs0s_BFu0ll_BFu0c, "BFu0s_BFs0s_BFu0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0ll_BFu0i");
    static BFu0s_BFs0s_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0ll_BFu0i(Test_BFu0s_BFs0s_BFu0ll_BFu0i, "BFu0s_BFs0s_BFu0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0ll_BFu0ll");
    static BFu0s_BFs0s_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0ll_BFu0ll(Test_BFu0s_BFs0s_BFu0ll_BFu0ll, "BFu0s_BFs0s_BFu0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0ll_BFu0s");
    static BFu0s_BFs0s_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0ll_BFu0s(Test_BFu0s_BFs0s_BFu0ll_BFu0s, "BFu0s_BFs0s_BFu0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0s");
    static BFu0s_BFs0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0s(Test_BFu0s_BFs0s_BFu0s, "BFu0s_BFs0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0s_BFs0c");
    static BFu0s_BFs0s_BFu0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0s_BFs0c(Test_BFu0s_BFs0s_BFu0s_BFs0c, "BFu0s_BFs0s_BFu0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0s_BFs0i");
    static BFu0s_BFs0s_BFu0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0s_BFs0i(Test_BFu0s_BFs0s_BFu0s_BFs0i, "BFu0s_BFs0s_BFu0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0s_BFs0ll");
    static BFu0s_BFs0s_BFu0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0s_BFs0ll(Test_BFu0s_BFs0s_BFu0s_BFs0ll, "BFu0s_BFs0s_BFu0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0s_BFs0s");
    static BFu0s_BFs0s_BFu0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0s_BFs0s(Test_BFu0s_BFs0s_BFu0s_BFs0s, "BFu0s_BFs0s_BFu0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0s_BFu0c");
    static BFu0s_BFs0s_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0s_BFu0c(Test_BFu0s_BFs0s_BFu0s_BFu0c, "BFu0s_BFs0s_BFu0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0s_BFu0i");
    static BFu0s_BFs0s_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0s_BFu0i(Test_BFu0s_BFs0s_BFu0s_BFu0i, "BFu0s_BFs0s_BFu0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0s_BFu0ll");
    static BFu0s_BFs0s_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0s_BFu0ll(Test_BFu0s_BFs0s_BFu0s_BFu0ll, "BFu0s_BFs0s_BFu0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFs0s_BFu0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFs0s_BFu0s_BFu0s");
    static BFu0s_BFs0s_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFs0s_BFu0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFs0s_BFu0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFs0s_BFu0s_BFu0s(Test_BFu0s_BFs0s_BFu0s_BFu0s, "BFu0s_BFs0s_BFu0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0c");
    static BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c(Test_BFu0s_BFu0c, "BFu0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0c");
    static BFu0s_BFu0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0c(Test_BFu0s_BFu0c_BFs0c, "BFu0s_BFu0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0c_BFs0c");
    static BFu0s_BFu0c_BFs0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0c_BFs0c(Test_BFu0s_BFu0c_BFs0c_BFs0c, "BFu0s_BFu0c_BFs0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0c_BFs0i");
    static BFu0s_BFu0c_BFs0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0c_BFs0i(Test_BFu0s_BFu0c_BFs0c_BFs0i, "BFu0s_BFu0c_BFs0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0c_BFs0ll");
    static BFu0s_BFu0c_BFs0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0c_BFs0ll(Test_BFu0s_BFu0c_BFs0c_BFs0ll, "BFu0s_BFu0c_BFs0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0c_BFs0s");
    static BFu0s_BFu0c_BFs0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0c_BFs0s(Test_BFu0s_BFu0c_BFs0c_BFs0s, "BFu0s_BFu0c_BFs0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0c_BFu0c");
    static BFu0s_BFu0c_BFs0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0c_BFu0c(Test_BFu0s_BFu0c_BFs0c_BFu0c, "BFu0s_BFu0c_BFs0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0c_BFu0i");
    static BFu0s_BFu0c_BFs0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0c_BFu0i(Test_BFu0s_BFu0c_BFs0c_BFu0i, "BFu0s_BFu0c_BFs0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0c_BFu0ll");
    static BFu0s_BFu0c_BFs0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0c_BFu0ll(Test_BFu0s_BFu0c_BFs0c_BFu0ll, "BFu0s_BFu0c_BFs0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0c_BFu0s");
    static BFu0s_BFu0c_BFs0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0c_BFu0s(Test_BFu0s_BFu0c_BFs0c_BFu0s, "BFu0s_BFu0c_BFs0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0i");
    static BFu0s_BFu0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0i(Test_BFu0s_BFu0c_BFs0i, "BFu0s_BFu0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0i_BFs0c");
    static BFu0s_BFu0c_BFs0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0i_BFs0c(Test_BFu0s_BFu0c_BFs0i_BFs0c, "BFu0s_BFu0c_BFs0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0i_BFs0i");
    static BFu0s_BFu0c_BFs0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0i_BFs0i(Test_BFu0s_BFu0c_BFs0i_BFs0i, "BFu0s_BFu0c_BFs0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0i_BFs0ll");
    static BFu0s_BFu0c_BFs0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0i_BFs0ll(Test_BFu0s_BFu0c_BFs0i_BFs0ll, "BFu0s_BFu0c_BFs0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0i_BFs0s");
    static BFu0s_BFu0c_BFs0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0i_BFs0s(Test_BFu0s_BFu0c_BFs0i_BFs0s, "BFu0s_BFu0c_BFs0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0i_BFu0c");
    static BFu0s_BFu0c_BFs0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0i_BFu0c(Test_BFu0s_BFu0c_BFs0i_BFu0c, "BFu0s_BFu0c_BFs0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0i_BFu0i");
    static BFu0s_BFu0c_BFs0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0i_BFu0i(Test_BFu0s_BFu0c_BFs0i_BFu0i, "BFu0s_BFu0c_BFs0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0i_BFu0ll");
    static BFu0s_BFu0c_BFs0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0i_BFu0ll(Test_BFu0s_BFu0c_BFs0i_BFu0ll, "BFu0s_BFu0c_BFs0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0i_BFu0s");
    static BFu0s_BFu0c_BFs0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0i_BFu0s(Test_BFu0s_BFu0c_BFs0i_BFu0s, "BFu0s_BFu0c_BFs0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0ll");
    static BFu0s_BFu0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0ll(Test_BFu0s_BFu0c_BFs0ll, "BFu0s_BFu0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0ll_BFs0c");
    static BFu0s_BFu0c_BFs0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0ll_BFs0c(Test_BFu0s_BFu0c_BFs0ll_BFs0c, "BFu0s_BFu0c_BFs0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0ll_BFs0i");
    static BFu0s_BFu0c_BFs0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0ll_BFs0i(Test_BFu0s_BFu0c_BFs0ll_BFs0i, "BFu0s_BFu0c_BFs0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0ll_BFs0ll");
    static BFu0s_BFu0c_BFs0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0ll_BFs0ll(Test_BFu0s_BFu0c_BFs0ll_BFs0ll, "BFu0s_BFu0c_BFs0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0ll_BFs0s");
    static BFu0s_BFu0c_BFs0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0ll_BFs0s(Test_BFu0s_BFu0c_BFs0ll_BFs0s, "BFu0s_BFu0c_BFs0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0ll_BFu0c");
    static BFu0s_BFu0c_BFs0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0ll_BFu0c(Test_BFu0s_BFu0c_BFs0ll_BFu0c, "BFu0s_BFu0c_BFs0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0ll_BFu0i");
    static BFu0s_BFu0c_BFs0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0ll_BFu0i(Test_BFu0s_BFu0c_BFs0ll_BFu0i, "BFu0s_BFu0c_BFs0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0ll_BFu0ll");
    static BFu0s_BFu0c_BFs0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0ll_BFu0ll(Test_BFu0s_BFu0c_BFs0ll_BFu0ll, "BFu0s_BFu0c_BFs0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0ll_BFu0s");
    static BFu0s_BFu0c_BFs0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0ll_BFu0s(Test_BFu0s_BFu0c_BFs0ll_BFu0s, "BFu0s_BFu0c_BFs0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0s");
    static BFu0s_BFu0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0s(Test_BFu0s_BFu0c_BFs0s, "BFu0s_BFu0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0s_BFs0c");
    static BFu0s_BFu0c_BFs0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0s_BFs0c(Test_BFu0s_BFu0c_BFs0s_BFs0c, "BFu0s_BFu0c_BFs0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0s_BFs0i");
    static BFu0s_BFu0c_BFs0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0s_BFs0i(Test_BFu0s_BFu0c_BFs0s_BFs0i, "BFu0s_BFu0c_BFs0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0s_BFs0ll");
    static BFu0s_BFu0c_BFs0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0s_BFs0ll(Test_BFu0s_BFu0c_BFs0s_BFs0ll, "BFu0s_BFu0c_BFs0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0s_BFs0s");
    static BFu0s_BFu0c_BFs0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0s_BFs0s(Test_BFu0s_BFu0c_BFs0s_BFs0s, "BFu0s_BFu0c_BFs0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0s_BFu0c");
    static BFu0s_BFu0c_BFs0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0s_BFu0c(Test_BFu0s_BFu0c_BFs0s_BFu0c, "BFu0s_BFu0c_BFs0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0s_BFu0i");
    static BFu0s_BFu0c_BFs0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0s_BFu0i(Test_BFu0s_BFu0c_BFs0s_BFu0i, "BFu0s_BFu0c_BFs0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0s_BFu0ll");
    static BFu0s_BFu0c_BFs0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0s_BFu0ll(Test_BFu0s_BFu0c_BFs0s_BFu0ll, "BFu0s_BFu0c_BFs0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFs0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFs0s_BFu0s");
    static BFu0s_BFu0c_BFs0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFs0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFs0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFs0s_BFu0s(Test_BFu0s_BFu0c_BFs0s_BFu0s, "BFu0s_BFu0c_BFs0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0c");
    static BFu0s_BFu0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0c(Test_BFu0s_BFu0c_BFu0c, "BFu0s_BFu0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0c_BFs0c");
    static BFu0s_BFu0c_BFu0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0c_BFs0c(Test_BFu0s_BFu0c_BFu0c_BFs0c, "BFu0s_BFu0c_BFu0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0c_BFs0i");
    static BFu0s_BFu0c_BFu0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0c_BFs0i(Test_BFu0s_BFu0c_BFu0c_BFs0i, "BFu0s_BFu0c_BFu0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0c_BFs0ll");
    static BFu0s_BFu0c_BFu0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0c_BFs0ll(Test_BFu0s_BFu0c_BFu0c_BFs0ll, "BFu0s_BFu0c_BFu0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0c_BFs0s");
    static BFu0s_BFu0c_BFu0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0c_BFs0s(Test_BFu0s_BFu0c_BFu0c_BFs0s, "BFu0s_BFu0c_BFu0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0c_BFu0c");
    static BFu0s_BFu0c_BFu0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0c_BFu0c(Test_BFu0s_BFu0c_BFu0c_BFu0c, "BFu0s_BFu0c_BFu0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0c_BFu0i");
    static BFu0s_BFu0c_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0c_BFu0i(Test_BFu0s_BFu0c_BFu0c_BFu0i, "BFu0s_BFu0c_BFu0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0c_BFu0ll");
    static BFu0s_BFu0c_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0c_BFu0ll(Test_BFu0s_BFu0c_BFu0c_BFu0ll, "BFu0s_BFu0c_BFu0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0c_BFu0s");
    static BFu0s_BFu0c_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0c_BFu0s(Test_BFu0s_BFu0c_BFu0c_BFu0s, "BFu0s_BFu0c_BFu0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0i");
    static BFu0s_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0i(Test_BFu0s_BFu0c_BFu0i, "BFu0s_BFu0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0i_BFs0c");
    static BFu0s_BFu0c_BFu0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0i_BFs0c(Test_BFu0s_BFu0c_BFu0i_BFs0c, "BFu0s_BFu0c_BFu0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0i_BFs0i");
    static BFu0s_BFu0c_BFu0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0i_BFs0i(Test_BFu0s_BFu0c_BFu0i_BFs0i, "BFu0s_BFu0c_BFu0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0i_BFs0ll");
    static BFu0s_BFu0c_BFu0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0i_BFs0ll(Test_BFu0s_BFu0c_BFu0i_BFs0ll, "BFu0s_BFu0c_BFu0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0i_BFs0s");
    static BFu0s_BFu0c_BFu0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0i_BFs0s(Test_BFu0s_BFu0c_BFu0i_BFs0s, "BFu0s_BFu0c_BFu0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0i_BFu0c");
    static BFu0s_BFu0c_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0i_BFu0c(Test_BFu0s_BFu0c_BFu0i_BFu0c, "BFu0s_BFu0c_BFu0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0i_BFu0i");
    static BFu0s_BFu0c_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0i_BFu0i(Test_BFu0s_BFu0c_BFu0i_BFu0i, "BFu0s_BFu0c_BFu0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0i_BFu0ll");
    static BFu0s_BFu0c_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0i_BFu0ll(Test_BFu0s_BFu0c_BFu0i_BFu0ll, "BFu0s_BFu0c_BFu0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0i_BFu0s");
    static BFu0s_BFu0c_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0i_BFu0s(Test_BFu0s_BFu0c_BFu0i_BFu0s, "BFu0s_BFu0c_BFu0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0ll");
    static BFu0s_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0ll(Test_BFu0s_BFu0c_BFu0ll, "BFu0s_BFu0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0ll_BFs0c");
    static BFu0s_BFu0c_BFu0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0ll_BFs0c(Test_BFu0s_BFu0c_BFu0ll_BFs0c, "BFu0s_BFu0c_BFu0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0ll_BFs0i");
    static BFu0s_BFu0c_BFu0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0ll_BFs0i(Test_BFu0s_BFu0c_BFu0ll_BFs0i, "BFu0s_BFu0c_BFu0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0ll_BFs0ll");
    static BFu0s_BFu0c_BFu0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0ll_BFs0ll(Test_BFu0s_BFu0c_BFu0ll_BFs0ll, "BFu0s_BFu0c_BFu0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0ll_BFs0s");
    static BFu0s_BFu0c_BFu0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0ll_BFs0s(Test_BFu0s_BFu0c_BFu0ll_BFs0s, "BFu0s_BFu0c_BFu0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0ll_BFu0c");
    static BFu0s_BFu0c_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0ll_BFu0c(Test_BFu0s_BFu0c_BFu0ll_BFu0c, "BFu0s_BFu0c_BFu0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0ll_BFu0i");
    static BFu0s_BFu0c_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0ll_BFu0i(Test_BFu0s_BFu0c_BFu0ll_BFu0i, "BFu0s_BFu0c_BFu0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0ll_BFu0ll");
    static BFu0s_BFu0c_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0ll_BFu0ll(Test_BFu0s_BFu0c_BFu0ll_BFu0ll, "BFu0s_BFu0c_BFu0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0ll_BFu0s");
    static BFu0s_BFu0c_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0ll_BFu0s(Test_BFu0s_BFu0c_BFu0ll_BFu0s, "BFu0s_BFu0c_BFu0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0s");
    static BFu0s_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0s(Test_BFu0s_BFu0c_BFu0s, "BFu0s_BFu0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0s_BFs0c");
    static BFu0s_BFu0c_BFu0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0s_BFs0c(Test_BFu0s_BFu0c_BFu0s_BFs0c, "BFu0s_BFu0c_BFu0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0s_BFs0i");
    static BFu0s_BFu0c_BFu0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0s_BFs0i(Test_BFu0s_BFu0c_BFu0s_BFs0i, "BFu0s_BFu0c_BFu0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0s_BFs0ll");
    static BFu0s_BFu0c_BFu0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0s_BFs0ll(Test_BFu0s_BFu0c_BFu0s_BFs0ll, "BFu0s_BFu0c_BFu0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0s_BFs0s");
    static BFu0s_BFu0c_BFu0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0s_BFs0s(Test_BFu0s_BFu0c_BFu0s_BFs0s, "BFu0s_BFu0c_BFu0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0s_BFu0c");
    static BFu0s_BFu0c_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0s_BFu0c(Test_BFu0s_BFu0c_BFu0s_BFu0c, "BFu0s_BFu0c_BFu0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0s_BFu0i");
    static BFu0s_BFu0c_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0s_BFu0i(Test_BFu0s_BFu0c_BFu0s_BFu0i, "BFu0s_BFu0c_BFu0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0s_BFu0ll");
    static BFu0s_BFu0c_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0s_BFu0ll(Test_BFu0s_BFu0c_BFu0s_BFu0ll, "BFu0s_BFu0c_BFu0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu0s_BFu0s");
    static BFu0s_BFu0c_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu0s_BFu0s(Test_BFu0s_BFu0c_BFu0s_BFu0s, "BFu0s_BFu0c_BFu0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu15i");
    static BFu0s_BFu0c_BFu15i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0c_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu15i(Test_BFu0s_BFu0c_BFu15i, "BFu0s_BFu0c_BFu15i", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu15ll");
    static BFu0s_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0c_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu15ll(Test_BFu0s_BFu0c_BFu15ll, "BFu0s_BFu0c_BFu15ll", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu15s");
    static BFu0s_BFu0c_BFu15s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0c_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu15s(Test_BFu0s_BFu0c_BFu15s, "BFu0s_BFu0c_BFu15s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu16i");
    static BFu0s_BFu0c_BFu16i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0c_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu16i(Test_BFu0s_BFu0c_BFu16i, "BFu0s_BFu0c_BFu16i", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu16ll");
    static BFu0s_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0c_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu16ll(Test_BFu0s_BFu0c_BFu16ll, "BFu0s_BFu0c_BFu16ll", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu16s");
    static BFu0s_BFu0c_BFu16s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0c_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu16s(Test_BFu0s_BFu0c_BFu16s, "BFu0s_BFu0c_BFu16s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu17i");
    static BFu0s_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu0c_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu17i(Test_BFu0s_BFu0c_BFu17i, "BFu0s_BFu0c_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu17ll");
    static BFu0s_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu0c_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu17ll(Test_BFu0s_BFu0c_BFu17ll, "BFu0s_BFu0c_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu1c");
    static BFu0s_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu1c(Test_BFu0s_BFu0c_BFu1c, "BFu0s_BFu0c_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu1i");
    static BFu0s_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu1i(Test_BFu0s_BFu0c_BFu1i, "BFu0s_BFu0c_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu1ll");
    static BFu0s_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu1ll(Test_BFu0s_BFu0c_BFu1ll, "BFu0s_BFu0c_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu1s");
    static BFu0s_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu1s(Test_BFu0s_BFu0c_BFu1s, "BFu0s_BFu0c_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu31i");
    static BFu0s_BFu0c_BFu31i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0c_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu31i(Test_BFu0s_BFu0c_BFu31i, "BFu0s_BFu0c_BFu31i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu31ll");
    static BFu0s_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0c_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu31ll(Test_BFu0s_BFu0c_BFu31ll, "BFu0s_BFu0c_BFu31ll", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu32i");
    static BFu0s_BFu0c_BFu32i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0c_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu32i(Test_BFu0s_BFu0c_BFu32i, "BFu0s_BFu0c_BFu32i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu32ll");
    static BFu0s_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0c_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu32ll(Test_BFu0s_BFu0c_BFu32ll, "BFu0s_BFu0c_BFu32ll", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu33()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu33");
    static BFu0s_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu0c_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu33(Test_BFu0s_BFu0c_BFu33, "BFu0s_BFu0c_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu7c");
    static BFu0s_BFu0c_BFu7c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu7c(Test_BFu0s_BFu0c_BFu7c, "BFu0s_BFu0c_BFu7c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu7i");
    static BFu0s_BFu0c_BFu7i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu7i(Test_BFu0s_BFu0c_BFu7i, "BFu0s_BFu0c_BFu7i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu7ll");
    static BFu0s_BFu0c_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu7ll(Test_BFu0s_BFu0c_BFu7ll, "BFu0s_BFu0c_BFu7ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu7s");
    static BFu0s_BFu0c_BFu7s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu7s(Test_BFu0s_BFu0c_BFu7s, "BFu0s_BFu0c_BFu7s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu8c");
    static BFu0s_BFu0c_BFu8c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu8c(Test_BFu0s_BFu0c_BFu8c, "BFu0s_BFu0c_BFu8c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu8i");
    static BFu0s_BFu0c_BFu8i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu8i(Test_BFu0s_BFu0c_BFu8i, "BFu0s_BFu0c_BFu8i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu8ll");
    static BFu0s_BFu0c_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu8ll(Test_BFu0s_BFu0c_BFu8ll, "BFu0s_BFu0c_BFu8ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu8s");
    static BFu0s_BFu0c_BFu8s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu8s(Test_BFu0s_BFu0c_BFu8s, "BFu0s_BFu0c_BFu8s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu9i");
    static BFu0s_BFu0c_BFu9i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0c_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu9i(Test_BFu0s_BFu0c_BFu9i, "BFu0s_BFu0c_BFu9i", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu9ll");
    static BFu0s_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0c_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu9ll(Test_BFu0s_BFu0c_BFu9ll, "BFu0s_BFu0c_BFu9ll", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu0c_BFu9s");
    static BFu0s_BFu0c_BFu9s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0c_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_BFu9s(Test_BFu0s_BFu0c_BFu9s, "BFu0s_BFu0c_BFu9s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_C()
{
  {
    init_simple_test("BFu0s_BFu0c_C");
    static BFu0s_BFu0c_C lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_C)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_C.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_C(Test_BFu0s_BFu0c_C, "BFu0s_BFu0c_C", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_D()
{
  {
    init_simple_test("BFu0s_BFu0c_D");
    static BFu0s_BFu0c_D lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0c_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_D)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_D.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_D(Test_BFu0s_BFu0c_D, "BFu0s_BFu0c_D", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_F()
{
  {
    init_simple_test("BFu0s_BFu0c_F");
    static BFu0s_BFu0c_F lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0c_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_F)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_F.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_F(Test_BFu0s_BFu0c_F, "BFu0s_BFu0c_F", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_I()
{
  {
    init_simple_test("BFu0s_BFu0c_I");
    static BFu0s_BFu0c_I lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0c_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_I)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_I.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_I(Test_BFu0s_BFu0c_I, "BFu0s_BFu0c_I", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_Ip()
{
  {
    init_simple_test("BFu0s_BFu0c_Ip");
    static BFu0s_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu0c_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_Ip.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_Ip(Test_BFu0s_BFu0c_Ip, "BFu0s_BFu0c_Ip", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_L()
{
  {
    init_simple_test("BFu0s_BFu0c_L");
    static BFu0s_BFu0c_L lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0c_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_L)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_L.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_L(Test_BFu0s_BFu0c_L, "BFu0s_BFu0c_L", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_S()
{
  {
    init_simple_test("BFu0s_BFu0c_S");
    static BFu0s_BFu0c_S lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0c_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_S)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_S.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_S(Test_BFu0s_BFu0c_S, "BFu0s_BFu0c_S", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_Uc()
{
  {
    init_simple_test("BFu0s_BFu0c_Uc");
    static BFu0s_BFu0c_Uc lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0c_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_Uc.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_Uc(Test_BFu0s_BFu0c_Uc, "BFu0s_BFu0c_Uc", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_Ui()
{
  {
    init_simple_test("BFu0s_BFu0c_Ui");
    static BFu0s_BFu0c_Ui lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0c_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_Ui.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_Ui(Test_BFu0s_BFu0c_Ui, "BFu0s_BFu0c_Ui", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_Ul()
{
  {
    init_simple_test("BFu0s_BFu0c_Ul");
    static BFu0s_BFu0c_Ul lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0c_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_Ul.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_Ul(Test_BFu0s_BFu0c_Ul, "BFu0s_BFu0c_Ul", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_Us()
{
  {
    init_simple_test("BFu0s_BFu0c_Us");
    static BFu0s_BFu0c_Us lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0c_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_Us.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_Us(Test_BFu0s_BFu0c_Us, "BFu0s_BFu0c_Us", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0c_Vp()
{
  {
    init_simple_test("BFu0s_BFu0c_Vp");
    static BFu0s_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu0c_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0c_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0c_Vp.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0c_Vp(Test_BFu0s_BFu0c_Vp, "BFu0s_BFu0c_Vp", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0i");
    static BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i(Test_BFu0s_BFu0i, "BFu0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0c");
    static BFu0s_BFu0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0c(Test_BFu0s_BFu0i_BFs0c, "BFu0s_BFu0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0c_BFs0c");
    static BFu0s_BFu0i_BFs0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0c_BFs0c(Test_BFu0s_BFu0i_BFs0c_BFs0c, "BFu0s_BFu0i_BFs0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0c_BFs0i");
    static BFu0s_BFu0i_BFs0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0c_BFs0i(Test_BFu0s_BFu0i_BFs0c_BFs0i, "BFu0s_BFu0i_BFs0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0c_BFs0ll");
    static BFu0s_BFu0i_BFs0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0c_BFs0ll(Test_BFu0s_BFu0i_BFs0c_BFs0ll, "BFu0s_BFu0i_BFs0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0c_BFs0s");
    static BFu0s_BFu0i_BFs0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0c_BFs0s(Test_BFu0s_BFu0i_BFs0c_BFs0s, "BFu0s_BFu0i_BFs0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0c_BFu0c");
    static BFu0s_BFu0i_BFs0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0c_BFu0c(Test_BFu0s_BFu0i_BFs0c_BFu0c, "BFu0s_BFu0i_BFs0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0c_BFu0i");
    static BFu0s_BFu0i_BFs0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0c_BFu0i(Test_BFu0s_BFu0i_BFs0c_BFu0i, "BFu0s_BFu0i_BFs0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0c_BFu0ll");
    static BFu0s_BFu0i_BFs0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0c_BFu0ll(Test_BFu0s_BFu0i_BFs0c_BFu0ll, "BFu0s_BFu0i_BFs0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0c_BFu0s");
    static BFu0s_BFu0i_BFs0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0c_BFu0s(Test_BFu0s_BFu0i_BFs0c_BFu0s, "BFu0s_BFu0i_BFs0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0i");
    static BFu0s_BFu0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0i(Test_BFu0s_BFu0i_BFs0i, "BFu0s_BFu0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0i_BFs0c");
    static BFu0s_BFu0i_BFs0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0i_BFs0c(Test_BFu0s_BFu0i_BFs0i_BFs0c, "BFu0s_BFu0i_BFs0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0i_BFs0i");
    static BFu0s_BFu0i_BFs0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0i_BFs0i(Test_BFu0s_BFu0i_BFs0i_BFs0i, "BFu0s_BFu0i_BFs0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0i_BFs0ll");
    static BFu0s_BFu0i_BFs0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0i_BFs0ll(Test_BFu0s_BFu0i_BFs0i_BFs0ll, "BFu0s_BFu0i_BFs0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0i_BFs0s");
    static BFu0s_BFu0i_BFs0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0i_BFs0s(Test_BFu0s_BFu0i_BFs0i_BFs0s, "BFu0s_BFu0i_BFs0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0i_BFu0c");
    static BFu0s_BFu0i_BFs0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0i_BFu0c(Test_BFu0s_BFu0i_BFs0i_BFu0c, "BFu0s_BFu0i_BFs0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0i_BFu0i");
    static BFu0s_BFu0i_BFs0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0i_BFu0i(Test_BFu0s_BFu0i_BFs0i_BFu0i, "BFu0s_BFu0i_BFs0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0i_BFu0ll");
    static BFu0s_BFu0i_BFs0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0i_BFu0ll(Test_BFu0s_BFu0i_BFs0i_BFu0ll, "BFu0s_BFu0i_BFs0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0i_BFu0s");
    static BFu0s_BFu0i_BFs0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0i_BFu0s(Test_BFu0s_BFu0i_BFs0i_BFu0s, "BFu0s_BFu0i_BFs0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0ll");
    static BFu0s_BFu0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0ll(Test_BFu0s_BFu0i_BFs0ll, "BFu0s_BFu0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0ll_BFs0c");
    static BFu0s_BFu0i_BFs0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0ll_BFs0c(Test_BFu0s_BFu0i_BFs0ll_BFs0c, "BFu0s_BFu0i_BFs0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0ll_BFs0i");
    static BFu0s_BFu0i_BFs0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0ll_BFs0i(Test_BFu0s_BFu0i_BFs0ll_BFs0i, "BFu0s_BFu0i_BFs0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0ll_BFs0ll");
    static BFu0s_BFu0i_BFs0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0ll_BFs0ll(Test_BFu0s_BFu0i_BFs0ll_BFs0ll, "BFu0s_BFu0i_BFs0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0ll_BFs0s");
    static BFu0s_BFu0i_BFs0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0ll_BFs0s(Test_BFu0s_BFu0i_BFs0ll_BFs0s, "BFu0s_BFu0i_BFs0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0ll_BFu0c");
    static BFu0s_BFu0i_BFs0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0ll_BFu0c(Test_BFu0s_BFu0i_BFs0ll_BFu0c, "BFu0s_BFu0i_BFs0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0ll_BFu0i");
    static BFu0s_BFu0i_BFs0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0ll_BFu0i(Test_BFu0s_BFu0i_BFs0ll_BFu0i, "BFu0s_BFu0i_BFs0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0ll_BFu0ll");
    static BFu0s_BFu0i_BFs0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0ll_BFu0ll(Test_BFu0s_BFu0i_BFs0ll_BFu0ll, "BFu0s_BFu0i_BFs0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0ll_BFu0s");
    static BFu0s_BFu0i_BFs0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0ll_BFu0s(Test_BFu0s_BFu0i_BFs0ll_BFu0s, "BFu0s_BFu0i_BFs0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0s");
    static BFu0s_BFu0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0s(Test_BFu0s_BFu0i_BFs0s, "BFu0s_BFu0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0s_BFs0c");
    static BFu0s_BFu0i_BFs0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0s_BFs0c(Test_BFu0s_BFu0i_BFs0s_BFs0c, "BFu0s_BFu0i_BFs0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0s_BFs0i");
    static BFu0s_BFu0i_BFs0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0s_BFs0i(Test_BFu0s_BFu0i_BFs0s_BFs0i, "BFu0s_BFu0i_BFs0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0s_BFs0ll");
    static BFu0s_BFu0i_BFs0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0s_BFs0ll(Test_BFu0s_BFu0i_BFs0s_BFs0ll, "BFu0s_BFu0i_BFs0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0s_BFs0s");
    static BFu0s_BFu0i_BFs0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0s_BFs0s(Test_BFu0s_BFu0i_BFs0s_BFs0s, "BFu0s_BFu0i_BFs0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0s_BFu0c");
    static BFu0s_BFu0i_BFs0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0s_BFu0c(Test_BFu0s_BFu0i_BFs0s_BFu0c, "BFu0s_BFu0i_BFs0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0s_BFu0i");
    static BFu0s_BFu0i_BFs0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0s_BFu0i(Test_BFu0s_BFu0i_BFs0s_BFu0i, "BFu0s_BFu0i_BFs0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0s_BFu0ll");
    static BFu0s_BFu0i_BFs0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0s_BFu0ll(Test_BFu0s_BFu0i_BFs0s_BFu0ll, "BFu0s_BFu0i_BFs0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFs0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFs0s_BFu0s");
    static BFu0s_BFu0i_BFs0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFs0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFs0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFs0s_BFu0s(Test_BFu0s_BFu0i_BFs0s_BFu0s, "BFu0s_BFu0i_BFs0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0c");
    static BFu0s_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0c(Test_BFu0s_BFu0i_BFu0c, "BFu0s_BFu0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0c_BFs0c");
    static BFu0s_BFu0i_BFu0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0c_BFs0c(Test_BFu0s_BFu0i_BFu0c_BFs0c, "BFu0s_BFu0i_BFu0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0c_BFs0i");
    static BFu0s_BFu0i_BFu0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0c_BFs0i(Test_BFu0s_BFu0i_BFu0c_BFs0i, "BFu0s_BFu0i_BFu0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0c_BFs0ll");
    static BFu0s_BFu0i_BFu0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0c_BFs0ll(Test_BFu0s_BFu0i_BFu0c_BFs0ll, "BFu0s_BFu0i_BFu0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0c_BFs0s");
    static BFu0s_BFu0i_BFu0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0c_BFs0s(Test_BFu0s_BFu0i_BFu0c_BFs0s, "BFu0s_BFu0i_BFu0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0c_BFu0c");
    static BFu0s_BFu0i_BFu0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0c_BFu0c(Test_BFu0s_BFu0i_BFu0c_BFu0c, "BFu0s_BFu0i_BFu0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0c_BFu0i");
    static BFu0s_BFu0i_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0c_BFu0i(Test_BFu0s_BFu0i_BFu0c_BFu0i, "BFu0s_BFu0i_BFu0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0c_BFu0ll");
    static BFu0s_BFu0i_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0c_BFu0ll(Test_BFu0s_BFu0i_BFu0c_BFu0ll, "BFu0s_BFu0i_BFu0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0c_BFu0s");
    static BFu0s_BFu0i_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0c_BFu0s(Test_BFu0s_BFu0i_BFu0c_BFu0s, "BFu0s_BFu0i_BFu0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0i");
    static BFu0s_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0i(Test_BFu0s_BFu0i_BFu0i, "BFu0s_BFu0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0i_BFs0c");
    static BFu0s_BFu0i_BFu0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0i_BFs0c(Test_BFu0s_BFu0i_BFu0i_BFs0c, "BFu0s_BFu0i_BFu0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0i_BFs0i");
    static BFu0s_BFu0i_BFu0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0i_BFs0i(Test_BFu0s_BFu0i_BFu0i_BFs0i, "BFu0s_BFu0i_BFu0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0i_BFs0ll");
    static BFu0s_BFu0i_BFu0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0i_BFs0ll(Test_BFu0s_BFu0i_BFu0i_BFs0ll, "BFu0s_BFu0i_BFu0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0i_BFs0s");
    static BFu0s_BFu0i_BFu0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0i_BFs0s(Test_BFu0s_BFu0i_BFu0i_BFs0s, "BFu0s_BFu0i_BFu0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0i_BFu0c");
    static BFu0s_BFu0i_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0i_BFu0c(Test_BFu0s_BFu0i_BFu0i_BFu0c, "BFu0s_BFu0i_BFu0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0i_BFu0i");
    static BFu0s_BFu0i_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0i_BFu0i(Test_BFu0s_BFu0i_BFu0i_BFu0i, "BFu0s_BFu0i_BFu0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0i_BFu0ll");
    static BFu0s_BFu0i_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0i_BFu0ll(Test_BFu0s_BFu0i_BFu0i_BFu0ll, "BFu0s_BFu0i_BFu0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0i_BFu0s");
    static BFu0s_BFu0i_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0i_BFu0s(Test_BFu0s_BFu0i_BFu0i_BFu0s, "BFu0s_BFu0i_BFu0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0ll");
    static BFu0s_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0ll(Test_BFu0s_BFu0i_BFu0ll, "BFu0s_BFu0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0ll_BFs0c");
    static BFu0s_BFu0i_BFu0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0ll_BFs0c(Test_BFu0s_BFu0i_BFu0ll_BFs0c, "BFu0s_BFu0i_BFu0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0ll_BFs0i");
    static BFu0s_BFu0i_BFu0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0ll_BFs0i(Test_BFu0s_BFu0i_BFu0ll_BFs0i, "BFu0s_BFu0i_BFu0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0ll_BFs0ll");
    static BFu0s_BFu0i_BFu0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0ll_BFs0ll(Test_BFu0s_BFu0i_BFu0ll_BFs0ll, "BFu0s_BFu0i_BFu0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0ll_BFs0s");
    static BFu0s_BFu0i_BFu0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0ll_BFs0s(Test_BFu0s_BFu0i_BFu0ll_BFs0s, "BFu0s_BFu0i_BFu0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0ll_BFu0c");
    static BFu0s_BFu0i_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0ll_BFu0c(Test_BFu0s_BFu0i_BFu0ll_BFu0c, "BFu0s_BFu0i_BFu0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0ll_BFu0i");
    static BFu0s_BFu0i_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0ll_BFu0i(Test_BFu0s_BFu0i_BFu0ll_BFu0i, "BFu0s_BFu0i_BFu0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0ll_BFu0ll");
    static BFu0s_BFu0i_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0ll_BFu0ll(Test_BFu0s_BFu0i_BFu0ll_BFu0ll, "BFu0s_BFu0i_BFu0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0ll_BFu0s");
    static BFu0s_BFu0i_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0ll_BFu0s(Test_BFu0s_BFu0i_BFu0ll_BFu0s, "BFu0s_BFu0i_BFu0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0s");
    static BFu0s_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0s(Test_BFu0s_BFu0i_BFu0s, "BFu0s_BFu0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0s_BFs0c");
    static BFu0s_BFu0i_BFu0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0s_BFs0c(Test_BFu0s_BFu0i_BFu0s_BFs0c, "BFu0s_BFu0i_BFu0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0s_BFs0i");
    static BFu0s_BFu0i_BFu0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0s_BFs0i(Test_BFu0s_BFu0i_BFu0s_BFs0i, "BFu0s_BFu0i_BFu0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0s_BFs0ll");
    static BFu0s_BFu0i_BFu0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0s_BFs0ll(Test_BFu0s_BFu0i_BFu0s_BFs0ll, "BFu0s_BFu0i_BFu0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0s_BFs0s");
    static BFu0s_BFu0i_BFu0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0s_BFs0s(Test_BFu0s_BFu0i_BFu0s_BFs0s, "BFu0s_BFu0i_BFu0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0s_BFu0c");
    static BFu0s_BFu0i_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0s_BFu0c(Test_BFu0s_BFu0i_BFu0s_BFu0c, "BFu0s_BFu0i_BFu0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0s_BFu0i");
    static BFu0s_BFu0i_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0s_BFu0i(Test_BFu0s_BFu0i_BFu0s_BFu0i, "BFu0s_BFu0i_BFu0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0s_BFu0ll");
    static BFu0s_BFu0i_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0s_BFu0ll(Test_BFu0s_BFu0i_BFu0s_BFu0ll, "BFu0s_BFu0i_BFu0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu0s_BFu0s");
    static BFu0s_BFu0i_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu0s_BFu0s(Test_BFu0s_BFu0i_BFu0s_BFu0s, "BFu0s_BFu0i_BFu0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu15i");
    static BFu0s_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu15i(Test_BFu0s_BFu0i_BFu15i, "BFu0s_BFu0i_BFu15i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu15ll");
    static BFu0s_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu15ll(Test_BFu0s_BFu0i_BFu15ll, "BFu0s_BFu0i_BFu15ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu15s");
    static BFu0s_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu15s(Test_BFu0s_BFu0i_BFu15s, "BFu0s_BFu0i_BFu15s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu16i");
    static BFu0s_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu16i(Test_BFu0s_BFu0i_BFu16i, "BFu0s_BFu0i_BFu16i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu16ll");
    static BFu0s_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu16ll(Test_BFu0s_BFu0i_BFu16ll, "BFu0s_BFu0i_BFu16ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu16s");
    static BFu0s_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu16s(Test_BFu0s_BFu0i_BFu16s, "BFu0s_BFu0i_BFu16s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu17i");
    static BFu0s_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu0i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu17i(Test_BFu0s_BFu0i_BFu17i, "BFu0s_BFu0i_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu17ll");
    static BFu0s_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu0i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu17ll(Test_BFu0s_BFu0i_BFu17ll, "BFu0s_BFu0i_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu1c");
    static BFu0s_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu1c(Test_BFu0s_BFu0i_BFu1c, "BFu0s_BFu0i_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu1i");
    static BFu0s_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu1i(Test_BFu0s_BFu0i_BFu1i, "BFu0s_BFu0i_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu1ll");
    static BFu0s_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu1ll(Test_BFu0s_BFu0i_BFu1ll, "BFu0s_BFu0i_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu1s");
    static BFu0s_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu1s(Test_BFu0s_BFu0i_BFu1s, "BFu0s_BFu0i_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu31i");
    static BFu0s_BFu0i_BFu31i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0i_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu31i(Test_BFu0s_BFu0i_BFu31i, "BFu0s_BFu0i_BFu31i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu31ll");
    static BFu0s_BFu0i_BFu31ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0i_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu31ll(Test_BFu0s_BFu0i_BFu31ll, "BFu0s_BFu0i_BFu31ll", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu32i");
    static BFu0s_BFu0i_BFu32i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0i_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu32i(Test_BFu0s_BFu0i_BFu32i, "BFu0s_BFu0i_BFu32i", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu32ll");
    static BFu0s_BFu0i_BFu32ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0i_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu32ll(Test_BFu0s_BFu0i_BFu32ll, "BFu0s_BFu0i_BFu32ll", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu33()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu33");
    static BFu0s_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu0i_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu33(Test_BFu0s_BFu0i_BFu33, "BFu0s_BFu0i_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu7c");
    static BFu0s_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu7c(Test_BFu0s_BFu0i_BFu7c, "BFu0s_BFu0i_BFu7c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu7i");
    static BFu0s_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu7i(Test_BFu0s_BFu0i_BFu7i, "BFu0s_BFu0i_BFu7i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu7ll");
    static BFu0s_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu7ll(Test_BFu0s_BFu0i_BFu7ll, "BFu0s_BFu0i_BFu7ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu7s");
    static BFu0s_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu7s(Test_BFu0s_BFu0i_BFu7s, "BFu0s_BFu0i_BFu7s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu8c");
    static BFu0s_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu8c(Test_BFu0s_BFu0i_BFu8c, "BFu0s_BFu0i_BFu8c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu8i");
    static BFu0s_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu8i(Test_BFu0s_BFu0i_BFu8i, "BFu0s_BFu0i_BFu8i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu8ll");
    static BFu0s_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu8ll(Test_BFu0s_BFu0i_BFu8ll, "BFu0s_BFu0i_BFu8ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu8s");
    static BFu0s_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu8s(Test_BFu0s_BFu0i_BFu8s, "BFu0s_BFu0i_BFu8s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu9i");
    static BFu0s_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0i_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu9i(Test_BFu0s_BFu0i_BFu9i, "BFu0s_BFu0i_BFu9i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu9ll");
    static BFu0s_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0i_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu9ll(Test_BFu0s_BFu0i_BFu9ll, "BFu0s_BFu0i_BFu9ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu0i_BFu9s");
    static BFu0s_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0i_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_BFu9s(Test_BFu0s_BFu0i_BFu9s, "BFu0s_BFu0i_BFu9s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_C()
{
  {
    init_simple_test("BFu0s_BFu0i_C");
    static BFu0s_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_C)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_C.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_C(Test_BFu0s_BFu0i_C, "BFu0s_BFu0i_C", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_D()
{
  {
    init_simple_test("BFu0s_BFu0i_D");
    static BFu0s_BFu0i_D lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0i_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_D)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_D.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_D(Test_BFu0s_BFu0i_D, "BFu0s_BFu0i_D", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_F()
{
  {
    init_simple_test("BFu0s_BFu0i_F");
    static BFu0s_BFu0i_F lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0i_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_F)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_F.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_F(Test_BFu0s_BFu0i_F, "BFu0s_BFu0i_F", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_I()
{
  {
    init_simple_test("BFu0s_BFu0i_I");
    static BFu0s_BFu0i_I lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0i_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_I)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_I.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_I(Test_BFu0s_BFu0i_I, "BFu0s_BFu0i_I", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_Ip()
{
  {
    init_simple_test("BFu0s_BFu0i_Ip");
    static BFu0s_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu0i_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_Ip.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_Ip(Test_BFu0s_BFu0i_Ip, "BFu0s_BFu0i_Ip", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_L()
{
  {
    init_simple_test("BFu0s_BFu0i_L");
    static BFu0s_BFu0i_L lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0i_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_L)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_L.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_L(Test_BFu0s_BFu0i_L, "BFu0s_BFu0i_L", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_S()
{
  {
    init_simple_test("BFu0s_BFu0i_S");
    static BFu0s_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0i_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_S)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_S.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_S(Test_BFu0s_BFu0i_S, "BFu0s_BFu0i_S", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_Uc()
{
  {
    init_simple_test("BFu0s_BFu0i_Uc");
    static BFu0s_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0i_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_Uc.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_Uc(Test_BFu0s_BFu0i_Uc, "BFu0s_BFu0i_Uc", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_Ui()
{
  {
    init_simple_test("BFu0s_BFu0i_Ui");
    static BFu0s_BFu0i_Ui lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0i_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_Ui.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_Ui(Test_BFu0s_BFu0i_Ui, "BFu0s_BFu0i_Ui", 4);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_Ul()
{
  {
    init_simple_test("BFu0s_BFu0i_Ul");
    static BFu0s_BFu0i_Ul lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0i_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_Ul.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_Ul(Test_BFu0s_BFu0i_Ul, "BFu0s_BFu0i_Ul", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_Us()
{
  {
    init_simple_test("BFu0s_BFu0i_Us");
    static BFu0s_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0i_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_Us.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_Us(Test_BFu0s_BFu0i_Us, "BFu0s_BFu0i_Us", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0i_Vp()
{
  {
    init_simple_test("BFu0s_BFu0i_Vp");
    static BFu0s_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu0i_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0i_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0i_Vp.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0i_Vp(Test_BFu0s_BFu0i_Vp, "BFu0s_BFu0i_Vp", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll");
    static BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll(Test_BFu0s_BFu0ll, "BFu0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0c");
    static BFu0s_BFu0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0c(Test_BFu0s_BFu0ll_BFs0c, "BFu0s_BFu0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0c_BFs0c");
    static BFu0s_BFu0ll_BFs0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0c_BFs0c(Test_BFu0s_BFu0ll_BFs0c_BFs0c, "BFu0s_BFu0ll_BFs0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0c_BFs0i");
    static BFu0s_BFu0ll_BFs0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0c_BFs0i(Test_BFu0s_BFu0ll_BFs0c_BFs0i, "BFu0s_BFu0ll_BFs0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0c_BFs0ll");
    static BFu0s_BFu0ll_BFs0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0c_BFs0ll(Test_BFu0s_BFu0ll_BFs0c_BFs0ll, "BFu0s_BFu0ll_BFs0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0c_BFs0s");
    static BFu0s_BFu0ll_BFs0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0c_BFs0s(Test_BFu0s_BFu0ll_BFs0c_BFs0s, "BFu0s_BFu0ll_BFs0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0c_BFu0c");
    static BFu0s_BFu0ll_BFs0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0c_BFu0c(Test_BFu0s_BFu0ll_BFs0c_BFu0c, "BFu0s_BFu0ll_BFs0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0c_BFu0i");
    static BFu0s_BFu0ll_BFs0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0c_BFu0i(Test_BFu0s_BFu0ll_BFs0c_BFu0i, "BFu0s_BFu0ll_BFs0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0c_BFu0ll");
    static BFu0s_BFu0ll_BFs0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0c_BFu0ll(Test_BFu0s_BFu0ll_BFs0c_BFu0ll, "BFu0s_BFu0ll_BFs0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0c_BFu0s");
    static BFu0s_BFu0ll_BFs0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0c_BFu0s(Test_BFu0s_BFu0ll_BFs0c_BFu0s, "BFu0s_BFu0ll_BFs0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0i");
    static BFu0s_BFu0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0i(Test_BFu0s_BFu0ll_BFs0i, "BFu0s_BFu0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0i_BFs0c");
    static BFu0s_BFu0ll_BFs0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0i_BFs0c(Test_BFu0s_BFu0ll_BFs0i_BFs0c, "BFu0s_BFu0ll_BFs0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0i_BFs0i");
    static BFu0s_BFu0ll_BFs0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0i_BFs0i(Test_BFu0s_BFu0ll_BFs0i_BFs0i, "BFu0s_BFu0ll_BFs0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0i_BFs0ll");
    static BFu0s_BFu0ll_BFs0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0i_BFs0ll(Test_BFu0s_BFu0ll_BFs0i_BFs0ll, "BFu0s_BFu0ll_BFs0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0i_BFs0s");
    static BFu0s_BFu0ll_BFs0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0i_BFs0s(Test_BFu0s_BFu0ll_BFs0i_BFs0s, "BFu0s_BFu0ll_BFs0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0i_BFu0c");
    static BFu0s_BFu0ll_BFs0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0i_BFu0c(Test_BFu0s_BFu0ll_BFs0i_BFu0c, "BFu0s_BFu0ll_BFs0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0i_BFu0i");
    static BFu0s_BFu0ll_BFs0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0i_BFu0i(Test_BFu0s_BFu0ll_BFs0i_BFu0i, "BFu0s_BFu0ll_BFs0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0i_BFu0ll");
    static BFu0s_BFu0ll_BFs0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0i_BFu0ll(Test_BFu0s_BFu0ll_BFs0i_BFu0ll, "BFu0s_BFu0ll_BFs0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0i_BFu0s");
    static BFu0s_BFu0ll_BFs0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0i_BFu0s(Test_BFu0s_BFu0ll_BFs0i_BFu0s, "BFu0s_BFu0ll_BFs0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0ll");
    static BFu0s_BFu0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0ll(Test_BFu0s_BFu0ll_BFs0ll, "BFu0s_BFu0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0ll_BFs0c");
    static BFu0s_BFu0ll_BFs0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0ll_BFs0c(Test_BFu0s_BFu0ll_BFs0ll_BFs0c, "BFu0s_BFu0ll_BFs0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0ll_BFs0i");
    static BFu0s_BFu0ll_BFs0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0ll_BFs0i(Test_BFu0s_BFu0ll_BFs0ll_BFs0i, "BFu0s_BFu0ll_BFs0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0ll_BFs0ll");
    static BFu0s_BFu0ll_BFs0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0ll_BFs0ll(Test_BFu0s_BFu0ll_BFs0ll_BFs0ll, "BFu0s_BFu0ll_BFs0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0ll_BFs0s");
    static BFu0s_BFu0ll_BFs0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0ll_BFs0s(Test_BFu0s_BFu0ll_BFs0ll_BFs0s, "BFu0s_BFu0ll_BFs0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0ll_BFu0c");
    static BFu0s_BFu0ll_BFs0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0ll_BFu0c(Test_BFu0s_BFu0ll_BFs0ll_BFu0c, "BFu0s_BFu0ll_BFs0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0ll_BFu0i");
    static BFu0s_BFu0ll_BFs0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0ll_BFu0i(Test_BFu0s_BFu0ll_BFs0ll_BFu0i, "BFu0s_BFu0ll_BFs0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0ll_BFu0ll");
    static BFu0s_BFu0ll_BFs0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0ll_BFu0ll(Test_BFu0s_BFu0ll_BFs0ll_BFu0ll, "BFu0s_BFu0ll_BFs0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0ll_BFu0s");
    static BFu0s_BFu0ll_BFs0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0ll_BFu0s(Test_BFu0s_BFu0ll_BFs0ll_BFu0s, "BFu0s_BFu0ll_BFs0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0s");
    static BFu0s_BFu0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0s(Test_BFu0s_BFu0ll_BFs0s, "BFu0s_BFu0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0s_BFs0c");
    static BFu0s_BFu0ll_BFs0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0s_BFs0c(Test_BFu0s_BFu0ll_BFs0s_BFs0c, "BFu0s_BFu0ll_BFs0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0s_BFs0i");
    static BFu0s_BFu0ll_BFs0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0s_BFs0i(Test_BFu0s_BFu0ll_BFs0s_BFs0i, "BFu0s_BFu0ll_BFs0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0s_BFs0ll");
    static BFu0s_BFu0ll_BFs0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0s_BFs0ll(Test_BFu0s_BFu0ll_BFs0s_BFs0ll, "BFu0s_BFu0ll_BFs0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0s_BFs0s");
    static BFu0s_BFu0ll_BFs0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0s_BFs0s(Test_BFu0s_BFu0ll_BFs0s_BFs0s, "BFu0s_BFu0ll_BFs0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0s_BFu0c");
    static BFu0s_BFu0ll_BFs0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0s_BFu0c(Test_BFu0s_BFu0ll_BFs0s_BFu0c, "BFu0s_BFu0ll_BFs0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0s_BFu0i");
    static BFu0s_BFu0ll_BFs0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0s_BFu0i(Test_BFu0s_BFu0ll_BFs0s_BFu0i, "BFu0s_BFu0ll_BFs0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0s_BFu0ll");
    static BFu0s_BFu0ll_BFs0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0s_BFu0ll(Test_BFu0s_BFu0ll_BFs0s_BFu0ll, "BFu0s_BFu0ll_BFs0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFs0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFs0s_BFu0s");
    static BFu0s_BFu0ll_BFs0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFs0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFs0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFs0s_BFu0s(Test_BFu0s_BFu0ll_BFs0s_BFu0s, "BFu0s_BFu0ll_BFs0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0c");
    static BFu0s_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0c(Test_BFu0s_BFu0ll_BFu0c, "BFu0s_BFu0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0c_BFs0c");
    static BFu0s_BFu0ll_BFu0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0c_BFs0c(Test_BFu0s_BFu0ll_BFu0c_BFs0c, "BFu0s_BFu0ll_BFu0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0c_BFs0i");
    static BFu0s_BFu0ll_BFu0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0c_BFs0i(Test_BFu0s_BFu0ll_BFu0c_BFs0i, "BFu0s_BFu0ll_BFu0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0c_BFs0ll");
    static BFu0s_BFu0ll_BFu0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0c_BFs0ll(Test_BFu0s_BFu0ll_BFu0c_BFs0ll, "BFu0s_BFu0ll_BFu0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0c_BFs0s");
    static BFu0s_BFu0ll_BFu0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0c_BFs0s(Test_BFu0s_BFu0ll_BFu0c_BFs0s, "BFu0s_BFu0ll_BFu0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0c_BFu0c");
    static BFu0s_BFu0ll_BFu0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0c_BFu0c(Test_BFu0s_BFu0ll_BFu0c_BFu0c, "BFu0s_BFu0ll_BFu0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0c_BFu0i");
    static BFu0s_BFu0ll_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0c_BFu0i(Test_BFu0s_BFu0ll_BFu0c_BFu0i, "BFu0s_BFu0ll_BFu0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0c_BFu0ll");
    static BFu0s_BFu0ll_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0c_BFu0ll(Test_BFu0s_BFu0ll_BFu0c_BFu0ll, "BFu0s_BFu0ll_BFu0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0c_BFu0s");
    static BFu0s_BFu0ll_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0c_BFu0s(Test_BFu0s_BFu0ll_BFu0c_BFu0s, "BFu0s_BFu0ll_BFu0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0i");
    static BFu0s_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0i(Test_BFu0s_BFu0ll_BFu0i, "BFu0s_BFu0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0i_BFs0c");
    static BFu0s_BFu0ll_BFu0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0i_BFs0c(Test_BFu0s_BFu0ll_BFu0i_BFs0c, "BFu0s_BFu0ll_BFu0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0i_BFs0i");
    static BFu0s_BFu0ll_BFu0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0i_BFs0i(Test_BFu0s_BFu0ll_BFu0i_BFs0i, "BFu0s_BFu0ll_BFu0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0i_BFs0ll");
    static BFu0s_BFu0ll_BFu0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0i_BFs0ll(Test_BFu0s_BFu0ll_BFu0i_BFs0ll, "BFu0s_BFu0ll_BFu0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0i_BFs0s");
    static BFu0s_BFu0ll_BFu0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0i_BFs0s(Test_BFu0s_BFu0ll_BFu0i_BFs0s, "BFu0s_BFu0ll_BFu0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0i_BFu0c");
    static BFu0s_BFu0ll_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0i_BFu0c(Test_BFu0s_BFu0ll_BFu0i_BFu0c, "BFu0s_BFu0ll_BFu0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0i_BFu0i");
    static BFu0s_BFu0ll_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0i_BFu0i(Test_BFu0s_BFu0ll_BFu0i_BFu0i, "BFu0s_BFu0ll_BFu0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0i_BFu0ll");
    static BFu0s_BFu0ll_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0i_BFu0ll(Test_BFu0s_BFu0ll_BFu0i_BFu0ll, "BFu0s_BFu0ll_BFu0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0i_BFu0s");
    static BFu0s_BFu0ll_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0i_BFu0s(Test_BFu0s_BFu0ll_BFu0i_BFu0s, "BFu0s_BFu0ll_BFu0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0ll");
    static BFu0s_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0ll(Test_BFu0s_BFu0ll_BFu0ll, "BFu0s_BFu0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0ll_BFs0c");
    static BFu0s_BFu0ll_BFu0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0ll_BFs0c(Test_BFu0s_BFu0ll_BFu0ll_BFs0c, "BFu0s_BFu0ll_BFu0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0ll_BFs0i");
    static BFu0s_BFu0ll_BFu0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0ll_BFs0i(Test_BFu0s_BFu0ll_BFu0ll_BFs0i, "BFu0s_BFu0ll_BFu0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0ll_BFs0ll");
    static BFu0s_BFu0ll_BFu0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0ll_BFs0ll(Test_BFu0s_BFu0ll_BFu0ll_BFs0ll, "BFu0s_BFu0ll_BFu0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0ll_BFs0s");
    static BFu0s_BFu0ll_BFu0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0ll_BFs0s(Test_BFu0s_BFu0ll_BFu0ll_BFs0s, "BFu0s_BFu0ll_BFu0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0ll_BFu0c");
    static BFu0s_BFu0ll_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0ll_BFu0c(Test_BFu0s_BFu0ll_BFu0ll_BFu0c, "BFu0s_BFu0ll_BFu0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0ll_BFu0i");
    static BFu0s_BFu0ll_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0ll_BFu0i(Test_BFu0s_BFu0ll_BFu0ll_BFu0i, "BFu0s_BFu0ll_BFu0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0ll_BFu0ll");
    static BFu0s_BFu0ll_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0ll_BFu0ll(Test_BFu0s_BFu0ll_BFu0ll_BFu0ll, "BFu0s_BFu0ll_BFu0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0ll_BFu0s");
    static BFu0s_BFu0ll_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0ll_BFu0s(Test_BFu0s_BFu0ll_BFu0ll_BFu0s, "BFu0s_BFu0ll_BFu0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0s");
    static BFu0s_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0s(Test_BFu0s_BFu0ll_BFu0s, "BFu0s_BFu0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0s_BFs0c");
    static BFu0s_BFu0ll_BFu0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0s_BFs0c(Test_BFu0s_BFu0ll_BFu0s_BFs0c, "BFu0s_BFu0ll_BFu0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0s_BFs0i");
    static BFu0s_BFu0ll_BFu0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0s_BFs0i(Test_BFu0s_BFu0ll_BFu0s_BFs0i, "BFu0s_BFu0ll_BFu0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0s_BFs0ll");
    static BFu0s_BFu0ll_BFu0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0s_BFs0ll(Test_BFu0s_BFu0ll_BFu0s_BFs0ll, "BFu0s_BFu0ll_BFu0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0s_BFs0s");
    static BFu0s_BFu0ll_BFu0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0s_BFs0s(Test_BFu0s_BFu0ll_BFu0s_BFs0s, "BFu0s_BFu0ll_BFu0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0s_BFu0c");
    static BFu0s_BFu0ll_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0s_BFu0c(Test_BFu0s_BFu0ll_BFu0s_BFu0c, "BFu0s_BFu0ll_BFu0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0s_BFu0i");
    static BFu0s_BFu0ll_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0s_BFu0i(Test_BFu0s_BFu0ll_BFu0s_BFu0i, "BFu0s_BFu0ll_BFu0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0s_BFu0ll");
    static BFu0s_BFu0ll_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0s_BFu0ll(Test_BFu0s_BFu0ll_BFu0s_BFu0ll, "BFu0s_BFu0ll_BFu0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu0s_BFu0s");
    static BFu0s_BFu0ll_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu0s_BFu0s(Test_BFu0s_BFu0ll_BFu0s_BFu0s, "BFu0s_BFu0ll_BFu0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu15i");
    static BFu0s_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu15i(Test_BFu0s_BFu0ll_BFu15i, "BFu0s_BFu0ll_BFu15i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu15ll");
    static BFu0s_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu15ll(Test_BFu0s_BFu0ll_BFu15ll, "BFu0s_BFu0ll_BFu15ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu15s");
    static BFu0s_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu15s(Test_BFu0s_BFu0ll_BFu15s, "BFu0s_BFu0ll_BFu15s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu16i");
    static BFu0s_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu16i(Test_BFu0s_BFu0ll_BFu16i, "BFu0s_BFu0ll_BFu16i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu16ll");
    static BFu0s_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu16ll(Test_BFu0s_BFu0ll_BFu16ll, "BFu0s_BFu0ll_BFu16ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu16s");
    static BFu0s_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu16s(Test_BFu0s_BFu0ll_BFu16s, "BFu0s_BFu0ll_BFu16s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu17i");
    static BFu0s_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu0ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu17i(Test_BFu0s_BFu0ll_BFu17i, "BFu0s_BFu0ll_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu17ll");
    static BFu0s_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu17ll(Test_BFu0s_BFu0ll_BFu17ll, "BFu0s_BFu0ll_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu1c");
    static BFu0s_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu1c(Test_BFu0s_BFu0ll_BFu1c, "BFu0s_BFu0ll_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu1i");
    static BFu0s_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu1i(Test_BFu0s_BFu0ll_BFu1i, "BFu0s_BFu0ll_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu1ll");
    static BFu0s_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu1ll(Test_BFu0s_BFu0ll_BFu1ll, "BFu0s_BFu0ll_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu1s");
    static BFu0s_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu1s(Test_BFu0s_BFu0ll_BFu1s, "BFu0s_BFu0ll_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu31i");
    static BFu0s_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu0ll_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu31i(Test_BFu0s_BFu0ll_BFu31i, "BFu0s_BFu0ll_BFu31i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu31ll");
    static BFu0s_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu31ll(Test_BFu0s_BFu0ll_BFu31ll, "BFu0s_BFu0ll_BFu31ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu32i");
    static BFu0s_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu0ll_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu32i(Test_BFu0s_BFu0ll_BFu32i, "BFu0s_BFu0ll_BFu32i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu32ll");
    static BFu0s_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu32ll(Test_BFu0s_BFu0ll_BFu32ll, "BFu0s_BFu0ll_BFu32ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu33()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu33");
    static BFu0s_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu0ll_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu33(Test_BFu0s_BFu0ll_BFu33, "BFu0s_BFu0ll_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu7c");
    static BFu0s_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu7c(Test_BFu0s_BFu0ll_BFu7c, "BFu0s_BFu0ll_BFu7c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu7i");
    static BFu0s_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu7i(Test_BFu0s_BFu0ll_BFu7i, "BFu0s_BFu0ll_BFu7i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu7ll");
    static BFu0s_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu7ll(Test_BFu0s_BFu0ll_BFu7ll, "BFu0s_BFu0ll_BFu7ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu7s");
    static BFu0s_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu7s(Test_BFu0s_BFu0ll_BFu7s, "BFu0s_BFu0ll_BFu7s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu8c");
    static BFu0s_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu8c(Test_BFu0s_BFu0ll_BFu8c, "BFu0s_BFu0ll_BFu8c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu8i");
    static BFu0s_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu8i(Test_BFu0s_BFu0ll_BFu8i, "BFu0s_BFu0ll_BFu8i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu8ll");
    static BFu0s_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu8ll(Test_BFu0s_BFu0ll_BFu8ll, "BFu0s_BFu0ll_BFu8ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu8s");
    static BFu0s_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu8s(Test_BFu0s_BFu0ll_BFu8s, "BFu0s_BFu0ll_BFu8s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu9i");
    static BFu0s_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0ll_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu9i(Test_BFu0s_BFu0ll_BFu9i, "BFu0s_BFu0ll_BFu9i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu9ll");
    static BFu0s_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu9ll(Test_BFu0s_BFu0ll_BFu9ll, "BFu0s_BFu0ll_BFu9ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu0ll_BFu9s");
    static BFu0s_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0ll_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_BFu9s(Test_BFu0s_BFu0ll_BFu9s, "BFu0s_BFu0ll_BFu9s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_C()
{
  {
    init_simple_test("BFu0s_BFu0ll_C");
    static BFu0s_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_C)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_C.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_C(Test_BFu0s_BFu0ll_C, "BFu0s_BFu0ll_C", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_D()
{
  {
    init_simple_test("BFu0s_BFu0ll_D");
    static BFu0s_BFu0ll_D lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0ll_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_D)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_D.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_D(Test_BFu0s_BFu0ll_D, "BFu0s_BFu0ll_D", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_F()
{
  {
    init_simple_test("BFu0s_BFu0ll_F");
    static BFu0s_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu0ll_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_F)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_F.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_F(Test_BFu0s_BFu0ll_F, "BFu0s_BFu0ll_F", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_I()
{
  {
    init_simple_test("BFu0s_BFu0ll_I");
    static BFu0s_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu0ll_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_I)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_I.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_I(Test_BFu0s_BFu0ll_I, "BFu0s_BFu0ll_I", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_Ip()
{
  {
    init_simple_test("BFu0s_BFu0ll_Ip");
    static BFu0s_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu0ll_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_Ip.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_Ip(Test_BFu0s_BFu0ll_Ip, "BFu0s_BFu0ll_Ip", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_L()
{
  {
    init_simple_test("BFu0s_BFu0ll_L");
    static BFu0s_BFu0ll_L lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0ll_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_L)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_L.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_L(Test_BFu0s_BFu0ll_L, "BFu0s_BFu0ll_L", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_S()
{
  {
    init_simple_test("BFu0s_BFu0ll_S");
    static BFu0s_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0ll_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_S)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_S.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_S(Test_BFu0s_BFu0ll_S, "BFu0s_BFu0ll_S", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_Uc()
{
  {
    init_simple_test("BFu0s_BFu0ll_Uc");
    static BFu0s_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0ll_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_Uc.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_Uc(Test_BFu0s_BFu0ll_Uc, "BFu0s_BFu0ll_Uc", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_Ui()
{
  {
    init_simple_test("BFu0s_BFu0ll_Ui");
    static BFu0s_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu0ll_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_Ui.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_Ui(Test_BFu0s_BFu0ll_Ui, "BFu0s_BFu0ll_Ui", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_Ul()
{
  {
    init_simple_test("BFu0s_BFu0ll_Ul");
    static BFu0s_BFu0ll_Ul lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0ll_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_Ul.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_Ul(Test_BFu0s_BFu0ll_Ul, "BFu0s_BFu0ll_Ul", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_Us()
{
  {
    init_simple_test("BFu0s_BFu0ll_Us");
    static BFu0s_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu0ll_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_Us.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_Us(Test_BFu0s_BFu0ll_Us, "BFu0s_BFu0ll_Us", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0ll_Vp()
{
  {
    init_simple_test("BFu0s_BFu0ll_Vp");
    static BFu0s_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu0ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0ll_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0ll_Vp.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0ll_Vp(Test_BFu0s_BFu0ll_Vp, "BFu0s_BFu0ll_Vp", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0s");
    static BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s(Test_BFu0s_BFu0s, "BFu0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0c");
    static BFu0s_BFu0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0c(Test_BFu0s_BFu0s_BFs0c, "BFu0s_BFu0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0c_BFs0c");
    static BFu0s_BFu0s_BFs0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0c_BFs0c(Test_BFu0s_BFu0s_BFs0c_BFs0c, "BFu0s_BFu0s_BFs0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0c_BFs0i");
    static BFu0s_BFu0s_BFs0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0c_BFs0i(Test_BFu0s_BFu0s_BFs0c_BFs0i, "BFu0s_BFu0s_BFs0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0c_BFs0ll");
    static BFu0s_BFu0s_BFs0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0c_BFs0ll(Test_BFu0s_BFu0s_BFs0c_BFs0ll, "BFu0s_BFu0s_BFs0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0c_BFs0s");
    static BFu0s_BFu0s_BFs0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0c_BFs0s(Test_BFu0s_BFu0s_BFs0c_BFs0s, "BFu0s_BFu0s_BFs0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0c_BFu0c");
    static BFu0s_BFu0s_BFs0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0c_BFu0c(Test_BFu0s_BFu0s_BFs0c_BFu0c, "BFu0s_BFu0s_BFs0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0c_BFu0i");
    static BFu0s_BFu0s_BFs0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0c_BFu0i(Test_BFu0s_BFu0s_BFs0c_BFu0i, "BFu0s_BFu0s_BFs0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0c_BFu0ll");
    static BFu0s_BFu0s_BFs0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0c_BFu0ll(Test_BFu0s_BFu0s_BFs0c_BFu0ll, "BFu0s_BFu0s_BFs0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0c_BFu0s");
    static BFu0s_BFu0s_BFs0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0c_BFu0s(Test_BFu0s_BFu0s_BFs0c_BFu0s, "BFu0s_BFu0s_BFs0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0i");
    static BFu0s_BFu0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0i(Test_BFu0s_BFu0s_BFs0i, "BFu0s_BFu0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0i_BFs0c");
    static BFu0s_BFu0s_BFs0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0i_BFs0c(Test_BFu0s_BFu0s_BFs0i_BFs0c, "BFu0s_BFu0s_BFs0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0i_BFs0i");
    static BFu0s_BFu0s_BFs0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0i_BFs0i(Test_BFu0s_BFu0s_BFs0i_BFs0i, "BFu0s_BFu0s_BFs0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0i_BFs0ll");
    static BFu0s_BFu0s_BFs0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0i_BFs0ll(Test_BFu0s_BFu0s_BFs0i_BFs0ll, "BFu0s_BFu0s_BFs0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0i_BFs0s");
    static BFu0s_BFu0s_BFs0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0i_BFs0s(Test_BFu0s_BFu0s_BFs0i_BFs0s, "BFu0s_BFu0s_BFs0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0i_BFu0c");
    static BFu0s_BFu0s_BFs0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0i_BFu0c(Test_BFu0s_BFu0s_BFs0i_BFu0c, "BFu0s_BFu0s_BFs0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0i_BFu0i");
    static BFu0s_BFu0s_BFs0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0i_BFu0i(Test_BFu0s_BFu0s_BFs0i_BFu0i, "BFu0s_BFu0s_BFs0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0i_BFu0ll");
    static BFu0s_BFu0s_BFs0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0i_BFu0ll(Test_BFu0s_BFu0s_BFs0i_BFu0ll, "BFu0s_BFu0s_BFs0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0i_BFu0s");
    static BFu0s_BFu0s_BFs0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0i_BFu0s(Test_BFu0s_BFu0s_BFs0i_BFu0s, "BFu0s_BFu0s_BFs0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0ll");
    static BFu0s_BFu0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0ll(Test_BFu0s_BFu0s_BFs0ll, "BFu0s_BFu0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0ll_BFs0c");
    static BFu0s_BFu0s_BFs0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0ll_BFs0c(Test_BFu0s_BFu0s_BFs0ll_BFs0c, "BFu0s_BFu0s_BFs0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0ll_BFs0i");
    static BFu0s_BFu0s_BFs0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0ll_BFs0i(Test_BFu0s_BFu0s_BFs0ll_BFs0i, "BFu0s_BFu0s_BFs0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0ll_BFs0ll");
    static BFu0s_BFu0s_BFs0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0ll_BFs0ll(Test_BFu0s_BFu0s_BFs0ll_BFs0ll, "BFu0s_BFu0s_BFs0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0ll_BFs0s");
    static BFu0s_BFu0s_BFs0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0ll_BFs0s(Test_BFu0s_BFu0s_BFs0ll_BFs0s, "BFu0s_BFu0s_BFs0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0ll_BFu0c");
    static BFu0s_BFu0s_BFs0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0ll_BFu0c(Test_BFu0s_BFu0s_BFs0ll_BFu0c, "BFu0s_BFu0s_BFs0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0ll_BFu0i");
    static BFu0s_BFu0s_BFs0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0ll_BFu0i(Test_BFu0s_BFu0s_BFs0ll_BFu0i, "BFu0s_BFu0s_BFs0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0ll_BFu0ll");
    static BFu0s_BFu0s_BFs0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0ll_BFu0ll(Test_BFu0s_BFu0s_BFs0ll_BFu0ll, "BFu0s_BFu0s_BFs0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0ll_BFu0s");
    static BFu0s_BFu0s_BFs0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0ll_BFu0s(Test_BFu0s_BFu0s_BFs0ll_BFu0s, "BFu0s_BFu0s_BFs0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0s");
    static BFu0s_BFu0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0s(Test_BFu0s_BFu0s_BFs0s, "BFu0s_BFu0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0s_BFs0c");
    static BFu0s_BFu0s_BFs0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0s_BFs0c(Test_BFu0s_BFu0s_BFs0s_BFs0c, "BFu0s_BFu0s_BFs0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0s_BFs0i");
    static BFu0s_BFu0s_BFs0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0s_BFs0i(Test_BFu0s_BFu0s_BFs0s_BFs0i, "BFu0s_BFu0s_BFs0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0s_BFs0ll");
    static BFu0s_BFu0s_BFs0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0s_BFs0ll(Test_BFu0s_BFu0s_BFs0s_BFs0ll, "BFu0s_BFu0s_BFs0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0s_BFs0s");
    static BFu0s_BFu0s_BFs0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0s_BFs0s(Test_BFu0s_BFu0s_BFs0s_BFs0s, "BFu0s_BFu0s_BFs0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0s_BFu0c");
    static BFu0s_BFu0s_BFs0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0s_BFu0c(Test_BFu0s_BFu0s_BFs0s_BFu0c, "BFu0s_BFu0s_BFs0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0s_BFu0i");
    static BFu0s_BFu0s_BFs0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0s_BFu0i(Test_BFu0s_BFu0s_BFs0s_BFu0i, "BFu0s_BFu0s_BFs0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0s_BFu0ll");
    static BFu0s_BFu0s_BFs0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0s_BFu0ll(Test_BFu0s_BFu0s_BFs0s_BFu0ll, "BFu0s_BFu0s_BFs0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFs0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFs0s_BFu0s");
    static BFu0s_BFu0s_BFs0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFs0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFs0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFs0s_BFu0s(Test_BFu0s_BFu0s_BFs0s_BFu0s, "BFu0s_BFu0s_BFs0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0c");
    static BFu0s_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0c(Test_BFu0s_BFu0s_BFu0c, "BFu0s_BFu0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0c_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0c_BFs0c");
    static BFu0s_BFu0s_BFu0c_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0c_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0c_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0c_BFs0c(Test_BFu0s_BFu0s_BFu0c_BFs0c, "BFu0s_BFu0s_BFu0c_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0c_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0c_BFs0i");
    static BFu0s_BFu0s_BFu0c_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0c_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0c_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0c_BFs0i(Test_BFu0s_BFu0s_BFu0c_BFs0i, "BFu0s_BFu0s_BFu0c_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0c_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0c_BFs0ll");
    static BFu0s_BFu0s_BFu0c_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0c_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0c_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0c_BFs0ll(Test_BFu0s_BFu0s_BFu0c_BFs0ll, "BFu0s_BFu0s_BFu0c_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0c_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0c_BFs0s");
    static BFu0s_BFu0s_BFu0c_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0c_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0c_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0c_BFs0s(Test_BFu0s_BFu0s_BFu0c_BFs0s, "BFu0s_BFu0s_BFu0c_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0c_BFu0c");
    static BFu0s_BFu0s_BFu0c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0c_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0c_BFu0c(Test_BFu0s_BFu0s_BFu0c_BFu0c, "BFu0s_BFu0s_BFu0c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0c_BFu0i");
    static BFu0s_BFu0s_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0c_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0c_BFu0i(Test_BFu0s_BFu0s_BFu0c_BFu0i, "BFu0s_BFu0s_BFu0c_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0c_BFu0ll");
    static BFu0s_BFu0s_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0c_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0c_BFu0ll(Test_BFu0s_BFu0s_BFu0c_BFu0ll, "BFu0s_BFu0s_BFu0c_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0c_BFu0s");
    static BFu0s_BFu0s_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0c_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0c_BFu0s(Test_BFu0s_BFu0s_BFu0c_BFu0s, "BFu0s_BFu0s_BFu0c_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0i");
    static BFu0s_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0i(Test_BFu0s_BFu0s_BFu0i, "BFu0s_BFu0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0i_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0i_BFs0c");
    static BFu0s_BFu0s_BFu0i_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0i_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0i_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0i_BFs0c(Test_BFu0s_BFu0s_BFu0i_BFs0c, "BFu0s_BFu0s_BFu0i_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0i_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0i_BFs0i");
    static BFu0s_BFu0s_BFu0i_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0i_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0i_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0i_BFs0i(Test_BFu0s_BFu0s_BFu0i_BFs0i, "BFu0s_BFu0s_BFu0i_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0i_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0i_BFs0ll");
    static BFu0s_BFu0s_BFu0i_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0i_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0i_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0i_BFs0ll(Test_BFu0s_BFu0s_BFu0i_BFs0ll, "BFu0s_BFu0s_BFu0i_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0i_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0i_BFs0s");
    static BFu0s_BFu0s_BFu0i_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0i_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0i_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0i_BFs0s(Test_BFu0s_BFu0s_BFu0i_BFs0s, "BFu0s_BFu0s_BFu0i_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0i_BFu0c");
    static BFu0s_BFu0s_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0i_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0i_BFu0c(Test_BFu0s_BFu0s_BFu0i_BFu0c, "BFu0s_BFu0s_BFu0i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0i_BFu0i");
    static BFu0s_BFu0s_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0i_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0i_BFu0i(Test_BFu0s_BFu0s_BFu0i_BFu0i, "BFu0s_BFu0s_BFu0i_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0i_BFu0ll");
    static BFu0s_BFu0s_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0i_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0i_BFu0ll(Test_BFu0s_BFu0s_BFu0i_BFu0ll, "BFu0s_BFu0s_BFu0i_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0i_BFu0s");
    static BFu0s_BFu0s_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0i_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0i_BFu0s(Test_BFu0s_BFu0s_BFu0i_BFu0s, "BFu0s_BFu0s_BFu0i_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0ll");
    static BFu0s_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0ll(Test_BFu0s_BFu0s_BFu0ll, "BFu0s_BFu0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0ll_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0ll_BFs0c");
    static BFu0s_BFu0s_BFu0ll_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0ll_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0ll_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0ll_BFs0c(Test_BFu0s_BFu0s_BFu0ll_BFs0c, "BFu0s_BFu0s_BFu0ll_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0ll_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0ll_BFs0i");
    static BFu0s_BFu0s_BFu0ll_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0ll_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0ll_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0ll_BFs0i(Test_BFu0s_BFu0s_BFu0ll_BFs0i, "BFu0s_BFu0s_BFu0ll_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0ll_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0ll_BFs0ll");
    static BFu0s_BFu0s_BFu0ll_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0ll_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0ll_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0ll_BFs0ll(Test_BFu0s_BFu0s_BFu0ll_BFs0ll, "BFu0s_BFu0s_BFu0ll_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0ll_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0ll_BFs0s");
    static BFu0s_BFu0s_BFu0ll_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0ll_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0ll_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0ll_BFs0s(Test_BFu0s_BFu0s_BFu0ll_BFs0s, "BFu0s_BFu0s_BFu0ll_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0ll_BFu0c");
    static BFu0s_BFu0s_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0ll_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0ll_BFu0c(Test_BFu0s_BFu0s_BFu0ll_BFu0c, "BFu0s_BFu0s_BFu0ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0ll_BFu0i");
    static BFu0s_BFu0s_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0ll_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0ll_BFu0i(Test_BFu0s_BFu0s_BFu0ll_BFu0i, "BFu0s_BFu0s_BFu0ll_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0ll_BFu0ll");
    static BFu0s_BFu0s_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0ll_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0ll_BFu0ll(Test_BFu0s_BFu0s_BFu0ll_BFu0ll, "BFu0s_BFu0s_BFu0ll_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0ll_BFu0s");
    static BFu0s_BFu0s_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0ll_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0ll_BFu0s(Test_BFu0s_BFu0s_BFu0ll_BFu0s, "BFu0s_BFu0s_BFu0ll_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0s");
    static BFu0s_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0s(Test_BFu0s_BFu0s_BFu0s, "BFu0s_BFu0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0s_BFs0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0s_BFs0c");
    static BFu0s_BFu0s_BFu0s_BFs0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0s_BFs0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0s_BFs0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0s_BFs0c(Test_BFu0s_BFu0s_BFu0s_BFs0c, "BFu0s_BFu0s_BFu0s_BFs0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0s_BFs0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0s_BFs0i");
    static BFu0s_BFu0s_BFu0s_BFs0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0s_BFs0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0s_BFs0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0s_BFs0i(Test_BFu0s_BFu0s_BFu0s_BFs0i, "BFu0s_BFu0s_BFu0s_BFs0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0s_BFs0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0s_BFs0ll");
    static BFu0s_BFu0s_BFu0s_BFs0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0s_BFs0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0s_BFs0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0s_BFs0ll(Test_BFu0s_BFu0s_BFu0s_BFs0ll, "BFu0s_BFu0s_BFu0s_BFs0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0s_BFs0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0s_BFs0s");
    static BFu0s_BFu0s_BFu0s_BFs0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0s_BFs0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0s_BFs0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0s_BFs0s(Test_BFu0s_BFu0s_BFu0s_BFs0s, "BFu0s_BFu0s_BFu0s_BFs0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0s_BFu0c");
    static BFu0s_BFu0s_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0s_BFu0c)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0s_BFu0c(Test_BFu0s_BFu0s_BFu0s_BFu0c, "BFu0s_BFu0s_BFu0s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0s_BFu0i");
    static BFu0s_BFu0s_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0s_BFu0i)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0s_BFu0i(Test_BFu0s_BFu0s_BFu0s_BFu0i, "BFu0s_BFu0s_BFu0s_BFu0i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0s_BFu0ll");
    static BFu0s_BFu0s_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0s_BFu0ll)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0s_BFu0ll(Test_BFu0s_BFu0s_BFu0s_BFu0ll, "BFu0s_BFu0s_BFu0s_BFu0ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu0s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu0s_BFu0s");
    static BFu0s_BFu0s_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu0s_BFu0s)");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu0s_BFu0s(Test_BFu0s_BFu0s_BFu0s_BFu0s, "BFu0s_BFu0s_BFu0s_BFu0s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu15i");
    static BFu0s_BFu0s_BFu15i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu15i(Test_BFu0s_BFu0s_BFu15i, "BFu0s_BFu0s_BFu15i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu15ll");
    static BFu0s_BFu0s_BFu15ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu15ll(Test_BFu0s_BFu0s_BFu15ll, "BFu0s_BFu0s_BFu15ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu15s");
    static BFu0s_BFu0s_BFu15s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu15s(Test_BFu0s_BFu0s_BFu15s, "BFu0s_BFu0s_BFu15s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu16i");
    static BFu0s_BFu0s_BFu16i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu16i(Test_BFu0s_BFu0s_BFu16i, "BFu0s_BFu0s_BFu16i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu16ll");
    static BFu0s_BFu0s_BFu16ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu16ll(Test_BFu0s_BFu0s_BFu16ll, "BFu0s_BFu0s_BFu16ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu16s");
    static BFu0s_BFu0s_BFu16s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu16s(Test_BFu0s_BFu0s_BFu16s, "BFu0s_BFu0s_BFu16s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu17i");
    static BFu0s_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu0s_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu17i(Test_BFu0s_BFu0s_BFu17i, "BFu0s_BFu0s_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu17ll");
    static BFu0s_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu0s_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu17ll(Test_BFu0s_BFu0s_BFu17ll, "BFu0s_BFu0s_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu1c");
    static BFu0s_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu1c(Test_BFu0s_BFu0s_BFu1c, "BFu0s_BFu0s_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu1i");
    static BFu0s_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu1i(Test_BFu0s_BFu0s_BFu1i, "BFu0s_BFu0s_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu1ll");
    static BFu0s_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu1ll(Test_BFu0s_BFu0s_BFu1ll, "BFu0s_BFu0s_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu1s");
    static BFu0s_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu1s(Test_BFu0s_BFu0s_BFu1s, "BFu0s_BFu0s_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu31i");
    static BFu0s_BFu0s_BFu31i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0s_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu31i(Test_BFu0s_BFu0s_BFu31i, "BFu0s_BFu0s_BFu31i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu31ll");
    static BFu0s_BFu0s_BFu31ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0s_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu31ll(Test_BFu0s_BFu0s_BFu31ll, "BFu0s_BFu0s_BFu31ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu32i");
    static BFu0s_BFu0s_BFu32i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0s_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu32i(Test_BFu0s_BFu0s_BFu32i, "BFu0s_BFu0s_BFu32i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu32ll");
    static BFu0s_BFu0s_BFu32ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0s_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu32ll(Test_BFu0s_BFu0s_BFu32ll, "BFu0s_BFu0s_BFu32ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu33()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu33");
    static BFu0s_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu0s_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu33(Test_BFu0s_BFu0s_BFu33, "BFu0s_BFu0s_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu7c");
    static BFu0s_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu7c(Test_BFu0s_BFu0s_BFu7c, "BFu0s_BFu0s_BFu7c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu7i");
    static BFu0s_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu7i(Test_BFu0s_BFu0s_BFu7i, "BFu0s_BFu0s_BFu7i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu7ll");
    static BFu0s_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu7ll(Test_BFu0s_BFu0s_BFu7ll, "BFu0s_BFu0s_BFu7ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu7s");
    static BFu0s_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu7s(Test_BFu0s_BFu0s_BFu7s, "BFu0s_BFu0s_BFu7s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu8c");
    static BFu0s_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu8c(Test_BFu0s_BFu0s_BFu8c, "BFu0s_BFu0s_BFu8c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu8i");
    static BFu0s_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu8i(Test_BFu0s_BFu0s_BFu8i, "BFu0s_BFu0s_BFu8i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu8ll");
    static BFu0s_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu8ll(Test_BFu0s_BFu0s_BFu8ll, "BFu0s_BFu0s_BFu8ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu8s");
    static BFu0s_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu8s(Test_BFu0s_BFu0s_BFu8s, "BFu0s_BFu0s_BFu8s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu9i");
    static BFu0s_BFu0s_BFu9i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0s_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu9i(Test_BFu0s_BFu0s_BFu9i, "BFu0s_BFu0s_BFu9i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu9ll");
    static BFu0s_BFu0s_BFu9ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0s_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu9ll(Test_BFu0s_BFu0s_BFu9ll, "BFu0s_BFu0s_BFu9ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu0s_BFu9s");
    static BFu0s_BFu0s_BFu9s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0s_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_BFu9s(Test_BFu0s_BFu0s_BFu9s, "BFu0s_BFu0s_BFu9s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_C()
{
  {
    init_simple_test("BFu0s_BFu0s_C");
    static BFu0s_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_C)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_C.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_C(Test_BFu0s_BFu0s_C, "BFu0s_BFu0s_C", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_D()
{
  {
    init_simple_test("BFu0s_BFu0s_D");
    static BFu0s_BFu0s_D lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0s_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_D)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_D.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_D(Test_BFu0s_BFu0s_D, "BFu0s_BFu0s_D", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_F()
{
  {
    init_simple_test("BFu0s_BFu0s_F");
    static BFu0s_BFu0s_F lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0s_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_F)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_F.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_F(Test_BFu0s_BFu0s_F, "BFu0s_BFu0s_F", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_I()
{
  {
    init_simple_test("BFu0s_BFu0s_I");
    static BFu0s_BFu0s_I lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0s_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_I)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_I.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_I(Test_BFu0s_BFu0s_I, "BFu0s_BFu0s_I", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_Ip()
{
  {
    init_simple_test("BFu0s_BFu0s_Ip");
    static BFu0s_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu0s_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_Ip.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_Ip(Test_BFu0s_BFu0s_Ip, "BFu0s_BFu0s_Ip", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_L()
{
  {
    init_simple_test("BFu0s_BFu0s_L");
    static BFu0s_BFu0s_L lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0s_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_L)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_L.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_L(Test_BFu0s_BFu0s_L, "BFu0s_BFu0s_L", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_S()
{
  {
    init_simple_test("BFu0s_BFu0s_S");
    static BFu0s_BFu0s_S lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0s_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_S)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_S.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_S(Test_BFu0s_BFu0s_S, "BFu0s_BFu0s_S", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_Uc()
{
  {
    init_simple_test("BFu0s_BFu0s_Uc");
    static BFu0s_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu0s_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_Uc.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_Uc(Test_BFu0s_BFu0s_Uc, "BFu0s_BFu0s_Uc", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_Ui()
{
  {
    init_simple_test("BFu0s_BFu0s_Ui");
    static BFu0s_BFu0s_Ui lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu0s_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_Ui.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_Ui(Test_BFu0s_BFu0s_Ui, "BFu0s_BFu0s_Ui", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_Ul()
{
  {
    init_simple_test("BFu0s_BFu0s_Ul");
    static BFu0s_BFu0s_Ul lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu0s_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_Ul.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_Ul(Test_BFu0s_BFu0s_Ul, "BFu0s_BFu0s_Ul", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_Us()
{
  {
    init_simple_test("BFu0s_BFu0s_Us");
    static BFu0s_BFu0s_Us lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu0s_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_Us.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_Us(Test_BFu0s_BFu0s_Us, "BFu0s_BFu0s_Us", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu0s_Vp()
{
  {
    init_simple_test("BFu0s_BFu0s_Vp");
    static BFu0s_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu0s_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu0s_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_BFu0s_Vp.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu0s_Vp(Test_BFu0s_BFu0s_Vp, "BFu0s_BFu0s_Vp", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu15i");
    static BFu0s_BFu15i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i(Test_BFu0s_BFu15i, "BFu0s_BFu15i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu0c");
    static BFu0s_BFu15i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu0c(Test_BFu0s_BFu15i_BFu0c, "BFu0s_BFu15i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu0i");
    static BFu0s_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu15i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu0i(Test_BFu0s_BFu15i_BFu0i, "BFu0s_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu0ll");
    static BFu0s_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu15i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu0ll(Test_BFu0s_BFu15i_BFu0ll, "BFu0s_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu0s");
    static BFu0s_BFu15i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu0s(Test_BFu0s_BFu15i_BFu0s, "BFu0s_BFu15i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu15i");
    static BFu0s_BFu15i_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu0s_BFu15i_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu15i(Test_BFu0s_BFu15i_BFu15i, "BFu0s_BFu15i_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu15ll");
    static BFu0s_BFu15i_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu0s_BFu15i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu15ll(Test_BFu0s_BFu15i_BFu15ll, "BFu0s_BFu15i_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu15s");
    static BFu0s_BFu15i_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu0s_BFu15i_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu15s(Test_BFu0s_BFu15i_BFu15s, "BFu0s_BFu15i_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu16i");
    static BFu0s_BFu15i_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu16i");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu0s_BFu15i_BFu16i");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu15i_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu16i(Test_BFu0s_BFu15i_BFu16i, "BFu0s_BFu15i_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu16ll");
    static BFu0s_BFu15i_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu16ll");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu0s_BFu15i_BFu16ll");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu15i_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu16ll(Test_BFu0s_BFu15i_BFu16ll, "BFu0s_BFu15i_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu16s");
    static BFu0s_BFu15i_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu16s");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu0s_BFu15i_BFu16s");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu15i_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu16s(Test_BFu0s_BFu15i_BFu16s, "BFu0s_BFu15i_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu17i");
    static BFu0s_BFu15i_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu17i");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu0s_BFu15i_BFu17i");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu15i_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu17i(Test_BFu0s_BFu15i_BFu17i, "BFu0s_BFu15i_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu17ll");
    static BFu0s_BFu15i_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu17ll");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu0s_BFu15i_BFu17ll");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu15i_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu17ll(Test_BFu0s_BFu15i_BFu17ll, "BFu0s_BFu15i_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu1c");
    static BFu0s_BFu15i_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu1c");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15i_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu1c(Test_BFu0s_BFu15i_BFu1c, "BFu0s_BFu15i_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu1i");
    static BFu0s_BFu15i_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu1i");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15i_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu1i(Test_BFu0s_BFu15i_BFu1i, "BFu0s_BFu15i_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu1ll");
    static BFu0s_BFu15i_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu1ll");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15i_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu1ll(Test_BFu0s_BFu15i_BFu1ll, "BFu0s_BFu15i_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu1s");
    static BFu0s_BFu15i_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu1s");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15i_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu1s(Test_BFu0s_BFu15i_BFu1s, "BFu0s_BFu15i_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu31i");
    static BFu0s_BFu15i_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15i_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu31i");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu0s_BFu15i_BFu31i");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu15i_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu31i(Test_BFu0s_BFu15i_BFu31i, "BFu0s_BFu15i_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu31ll");
    static BFu0s_BFu15i_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15i_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu31ll");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu0s_BFu15i_BFu31ll");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu15i_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu31ll(Test_BFu0s_BFu15i_BFu31ll, "BFu0s_BFu15i_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu32i");
    static BFu0s_BFu15i_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15i_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu32i");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu0s_BFu15i_BFu32i");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu15i_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu32i(Test_BFu0s_BFu15i_BFu32i, "BFu0s_BFu15i_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu32ll");
    static BFu0s_BFu15i_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15i_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu32ll");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu0s_BFu15i_BFu32ll");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu15i_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu32ll(Test_BFu0s_BFu15i_BFu32ll, "BFu0s_BFu15i_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu33()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu33");
    static BFu0s_BFu15i_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15i_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu33");
    set_bf_and_test(lv, v2, 1, 7, 33, 1, "BFu0s_BFu15i_BFu33");
    set_bf_and_test(lv, v2, 1, 7, 33, hide_ull(1LL<<32), "BFu0s_BFu15i_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu33(Test_BFu0s_BFu15i_BFu33, "BFu0s_BFu15i_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu7c");
    static BFu0s_BFu15i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu7c");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15i_BFu7c");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15i_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu7c(Test_BFu0s_BFu15i_BFu7c, "BFu0s_BFu15i_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu7i");
    static BFu0s_BFu15i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu7i");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15i_BFu7i");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15i_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu7i(Test_BFu0s_BFu15i_BFu7i, "BFu0s_BFu15i_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu7ll");
    static BFu0s_BFu15i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu7ll");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15i_BFu7ll");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15i_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu7ll(Test_BFu0s_BFu15i_BFu7ll, "BFu0s_BFu15i_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu7s");
    static BFu0s_BFu15i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu7s");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15i_BFu7s");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15i_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu7s(Test_BFu0s_BFu15i_BFu7s, "BFu0s_BFu15i_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu8c");
    static BFu0s_BFu15i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu8c");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15i_BFu8c");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15i_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu8c(Test_BFu0s_BFu15i_BFu8c, "BFu0s_BFu15i_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu8i");
    static BFu0s_BFu15i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu8i");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15i_BFu8i");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15i_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu8i(Test_BFu0s_BFu15i_BFu8i, "BFu0s_BFu15i_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu8ll");
    static BFu0s_BFu15i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu8ll");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15i_BFu8ll");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15i_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu8ll(Test_BFu0s_BFu15i_BFu8ll, "BFu0s_BFu15i_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu8s");
    static BFu0s_BFu15i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu8s");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15i_BFu8s");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15i_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu8s(Test_BFu0s_BFu15i_BFu8s, "BFu0s_BFu15i_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu9i");
    static BFu0s_BFu15i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu9i");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu0s_BFu15i_BFu9i");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu15i_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu9i(Test_BFu0s_BFu15i_BFu9i, "BFu0s_BFu15i_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu9ll");
    static BFu0s_BFu15i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu9ll");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu0s_BFu15i_BFu9ll");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu15i_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu9ll(Test_BFu0s_BFu15i_BFu9ll, "BFu0s_BFu15i_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu15i_BFu9s");
    static BFu0s_BFu15i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_BFu9s");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu0s_BFu15i_BFu9s");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu15i_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_BFu9s(Test_BFu0s_BFu15i_BFu9s, "BFu0s_BFu15i_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_C()
{
  {
    init_simple_test("BFu0s_BFu15i_C");
    static BFu0s_BFu15i_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_C)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_C");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_C");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_C(Test_BFu0s_BFu15i_C, "BFu0s_BFu15i_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_D()
{
  {
    init_simple_test("BFu0s_BFu15i_D");
    static BFu0s_BFu15i_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu15i_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_D)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_D");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_D");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_D(Test_BFu0s_BFu15i_D, "BFu0s_BFu15i_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_F()
{
  {
    init_simple_test("BFu0s_BFu15i_F");
    static BFu0s_BFu15i_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15i_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_F)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_F");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_F");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_F(Test_BFu0s_BFu15i_F, "BFu0s_BFu15i_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_I()
{
  {
    init_simple_test("BFu0s_BFu15i_I");
    static BFu0s_BFu15i_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15i_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_I)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_I");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_I");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_I(Test_BFu0s_BFu15i_I, "BFu0s_BFu15i_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_Ip()
{
  {
    init_simple_test("BFu0s_BFu15i_Ip");
    static BFu0s_BFu15i_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu15i_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_Ip");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_Ip(Test_BFu0s_BFu15i_Ip, "BFu0s_BFu15i_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_L()
{
  {
    init_simple_test("BFu0s_BFu15i_L");
    static BFu0s_BFu15i_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu15i_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_L)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_L");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_L");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_L(Test_BFu0s_BFu15i_L, "BFu0s_BFu15i_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_S()
{
  {
    init_simple_test("BFu0s_BFu15i_S");
    static BFu0s_BFu15i_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15i_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_S)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_S");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_S");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_S(Test_BFu0s_BFu15i_S, "BFu0s_BFu15i_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_Uc()
{
  {
    init_simple_test("BFu0s_BFu15i_Uc");
    static BFu0s_BFu15i_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15i_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_Uc");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_Uc(Test_BFu0s_BFu15i_Uc, "BFu0s_BFu15i_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_Ui()
{
  {
    init_simple_test("BFu0s_BFu15i_Ui");
    static BFu0s_BFu15i_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15i_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_Ui");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_Ui(Test_BFu0s_BFu15i_Ui, "BFu0s_BFu15i_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_Ul()
{
  {
    init_simple_test("BFu0s_BFu15i_Ul");
    static BFu0s_BFu15i_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu15i_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_Ul");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_Ul(Test_BFu0s_BFu15i_Ul, "BFu0s_BFu15i_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_Us()
{
  {
    init_simple_test("BFu0s_BFu15i_Us");
    static BFu0s_BFu15i_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15i_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_Us");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_Us");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_Us(Test_BFu0s_BFu15i_Us, "BFu0s_BFu15i_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15i_Vp()
{
  {
    init_simple_test("BFu0s_BFu15i_Vp");
    static BFu0s_BFu15i_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu15i_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15i_Vp");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15i_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15i_Vp(Test_BFu0s_BFu15i_Vp, "BFu0s_BFu15i_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu15ll");
    static BFu0s_BFu15ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll(Test_BFu0s_BFu15ll, "BFu0s_BFu15ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu0c");
    static BFu0s_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu0c(Test_BFu0s_BFu15ll_BFu0c, "BFu0s_BFu15ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu0i");
    static BFu0s_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu15ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu0i(Test_BFu0s_BFu15ll_BFu0i, "BFu0s_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu0ll");
    static BFu0s_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu0ll(Test_BFu0s_BFu15ll_BFu0ll, "BFu0s_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu0s");
    static BFu0s_BFu15ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu0s(Test_BFu0s_BFu15ll_BFu0s, "BFu0s_BFu15ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu15i");
    static BFu0s_BFu15ll_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu0s_BFu15ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu15i(Test_BFu0s_BFu15ll_BFu15i, "BFu0s_BFu15ll_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu15ll");
    static BFu0s_BFu15ll_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu0s_BFu15ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu15ll(Test_BFu0s_BFu15ll_BFu15ll, "BFu0s_BFu15ll_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu15s");
    static BFu0s_BFu15ll_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu0s_BFu15ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu15s(Test_BFu0s_BFu15ll_BFu15s, "BFu0s_BFu15ll_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu16i");
    static BFu0s_BFu15ll_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu16i");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu0s_BFu15ll_BFu16i");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu15ll_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu16i(Test_BFu0s_BFu15ll_BFu16i, "BFu0s_BFu15ll_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu16ll");
    static BFu0s_BFu15ll_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu16ll");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu0s_BFu15ll_BFu16ll");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu15ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu16ll(Test_BFu0s_BFu15ll_BFu16ll, "BFu0s_BFu15ll_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu16s");
    static BFu0s_BFu15ll_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu16s");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu0s_BFu15ll_BFu16s");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu15ll_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu16s(Test_BFu0s_BFu15ll_BFu16s, "BFu0s_BFu15ll_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu17i");
    static BFu0s_BFu15ll_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu17i");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu0s_BFu15ll_BFu17i");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu15ll_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu17i(Test_BFu0s_BFu15ll_BFu17i, "BFu0s_BFu15ll_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu17ll");
    static BFu0s_BFu15ll_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu17ll");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu0s_BFu15ll_BFu17ll");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu15ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu17ll(Test_BFu0s_BFu15ll_BFu17ll, "BFu0s_BFu15ll_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu1c");
    static BFu0s_BFu15ll_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu1c");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15ll_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu1c(Test_BFu0s_BFu15ll_BFu1c, "BFu0s_BFu15ll_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu1i");
    static BFu0s_BFu15ll_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu1i");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15ll_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu1i(Test_BFu0s_BFu15ll_BFu1i, "BFu0s_BFu15ll_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu1ll");
    static BFu0s_BFu15ll_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu1ll");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu1ll(Test_BFu0s_BFu15ll_BFu1ll, "BFu0s_BFu15ll_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu1s");
    static BFu0s_BFu15ll_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu1s");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15ll_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu1s(Test_BFu0s_BFu15ll_BFu1s, "BFu0s_BFu15ll_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu31i");
    static BFu0s_BFu15ll_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15ll_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu31i");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu0s_BFu15ll_BFu31i");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu15ll_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu31i(Test_BFu0s_BFu15ll_BFu31i, "BFu0s_BFu15ll_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu31ll");
    static BFu0s_BFu15ll_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15ll_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu31ll");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu0s_BFu15ll_BFu31ll");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu15ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu31ll(Test_BFu0s_BFu15ll_BFu31ll, "BFu0s_BFu15ll_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu32i");
    static BFu0s_BFu15ll_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15ll_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu32i");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu0s_BFu15ll_BFu32i");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu15ll_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu32i(Test_BFu0s_BFu15ll_BFu32i, "BFu0s_BFu15ll_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu32ll");
    static BFu0s_BFu15ll_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15ll_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu32ll");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu0s_BFu15ll_BFu32ll");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu15ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu32ll(Test_BFu0s_BFu15ll_BFu32ll, "BFu0s_BFu15ll_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu33()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu33");
    static BFu0s_BFu15ll_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15ll_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu33");
    set_bf_and_test(lv, v2, 1, 7, 33, 1, "BFu0s_BFu15ll_BFu33");
    set_bf_and_test(lv, v2, 1, 7, 33, hide_ull(1LL<<32), "BFu0s_BFu15ll_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu33(Test_BFu0s_BFu15ll_BFu33, "BFu0s_BFu15ll_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu7c");
    static BFu0s_BFu15ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu7c");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15ll_BFu7c");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15ll_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu7c(Test_BFu0s_BFu15ll_BFu7c, "BFu0s_BFu15ll_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu7i");
    static BFu0s_BFu15ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu7i");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15ll_BFu7i");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15ll_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu7i(Test_BFu0s_BFu15ll_BFu7i, "BFu0s_BFu15ll_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu7ll");
    static BFu0s_BFu15ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu7ll");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15ll_BFu7ll");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu7ll(Test_BFu0s_BFu15ll_BFu7ll, "BFu0s_BFu15ll_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu7s");
    static BFu0s_BFu15ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu7s");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15ll_BFu7s");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15ll_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu7s(Test_BFu0s_BFu15ll_BFu7s, "BFu0s_BFu15ll_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu8c");
    static BFu0s_BFu15ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu8c");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15ll_BFu8c");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15ll_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu8c(Test_BFu0s_BFu15ll_BFu8c, "BFu0s_BFu15ll_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu8i");
    static BFu0s_BFu15ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu8i");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15ll_BFu8i");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15ll_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu8i(Test_BFu0s_BFu15ll_BFu8i, "BFu0s_BFu15ll_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu8ll");
    static BFu0s_BFu15ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu8ll");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15ll_BFu8ll");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu8ll(Test_BFu0s_BFu15ll_BFu8ll, "BFu0s_BFu15ll_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu8s");
    static BFu0s_BFu15ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu8s");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15ll_BFu8s");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15ll_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu8s(Test_BFu0s_BFu15ll_BFu8s, "BFu0s_BFu15ll_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu9i");
    static BFu0s_BFu15ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu9i");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu0s_BFu15ll_BFu9i");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu15ll_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu9i(Test_BFu0s_BFu15ll_BFu9i, "BFu0s_BFu15ll_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu9ll");
    static BFu0s_BFu15ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu9ll");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu0s_BFu15ll_BFu9ll");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu15ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu9ll(Test_BFu0s_BFu15ll_BFu9ll, "BFu0s_BFu15ll_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu15ll_BFu9s");
    static BFu0s_BFu15ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_BFu9s");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu0s_BFu15ll_BFu9s");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu15ll_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_BFu9s(Test_BFu0s_BFu15ll_BFu9s, "BFu0s_BFu15ll_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_C()
{
  {
    init_simple_test("BFu0s_BFu15ll_C");
    static BFu0s_BFu15ll_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_C");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_C");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_C(Test_BFu0s_BFu15ll_C, "BFu0s_BFu15ll_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_D()
{
  {
    init_simple_test("BFu0s_BFu15ll_D");
    static BFu0s_BFu15ll_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu15ll_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_D");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_D");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_D(Test_BFu0s_BFu15ll_D, "BFu0s_BFu15ll_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_F()
{
  {
    init_simple_test("BFu0s_BFu15ll_F");
    static BFu0s_BFu15ll_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15ll_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_F");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_F");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_F(Test_BFu0s_BFu15ll_F, "BFu0s_BFu15ll_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_I()
{
  {
    init_simple_test("BFu0s_BFu15ll_I");
    static BFu0s_BFu15ll_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15ll_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_I");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_I");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_I(Test_BFu0s_BFu15ll_I, "BFu0s_BFu15ll_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_Ip()
{
  {
    init_simple_test("BFu0s_BFu15ll_Ip");
    static BFu0s_BFu15ll_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu15ll_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_Ip");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_Ip(Test_BFu0s_BFu15ll_Ip, "BFu0s_BFu15ll_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_L()
{
  {
    init_simple_test("BFu0s_BFu15ll_L");
    static BFu0s_BFu15ll_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu15ll_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_L");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_L");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_L(Test_BFu0s_BFu15ll_L, "BFu0s_BFu15ll_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_S()
{
  {
    init_simple_test("BFu0s_BFu15ll_S");
    static BFu0s_BFu15ll_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15ll_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_S");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_S");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_S(Test_BFu0s_BFu15ll_S, "BFu0s_BFu15ll_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_Uc()
{
  {
    init_simple_test("BFu0s_BFu15ll_Uc");
    static BFu0s_BFu15ll_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15ll_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_Uc");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_Uc(Test_BFu0s_BFu15ll_Uc, "BFu0s_BFu15ll_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_Ui()
{
  {
    init_simple_test("BFu0s_BFu15ll_Ui");
    static BFu0s_BFu15ll_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15ll_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_Ui");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_Ui(Test_BFu0s_BFu15ll_Ui, "BFu0s_BFu15ll_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_Ul()
{
  {
    init_simple_test("BFu0s_BFu15ll_Ul");
    static BFu0s_BFu15ll_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu15ll_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_Ul");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_Ul(Test_BFu0s_BFu15ll_Ul, "BFu0s_BFu15ll_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_Us()
{
  {
    init_simple_test("BFu0s_BFu15ll_Us");
    static BFu0s_BFu15ll_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15ll_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_Us");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_Us(Test_BFu0s_BFu15ll_Us, "BFu0s_BFu15ll_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15ll_Vp()
{
  {
    init_simple_test("BFu0s_BFu15ll_Vp");
    static BFu0s_BFu15ll_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu15ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15ll_Vp");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15ll_Vp(Test_BFu0s_BFu15ll_Vp, "BFu0s_BFu15ll_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu15s");
    static BFu0s_BFu15s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s(Test_BFu0s_BFu15s, "BFu0s_BFu15s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu0c");
    static BFu0s_BFu15s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu0c(Test_BFu0s_BFu15s_BFu0c, "BFu0s_BFu15s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu0i");
    static BFu0s_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu15s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu0i(Test_BFu0s_BFu15s_BFu0i, "BFu0s_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu0ll");
    static BFu0s_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu15s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu0ll(Test_BFu0s_BFu15s_BFu0ll, "BFu0s_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu0s");
    static BFu0s_BFu15s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu0s(Test_BFu0s_BFu15s_BFu0s, "BFu0s_BFu15s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu15i");
    static BFu0s_BFu15s_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu0s_BFu15s_BFu15i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu15i(Test_BFu0s_BFu15s_BFu15i, "BFu0s_BFu15s_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu15ll");
    static BFu0s_BFu15s_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu0s_BFu15s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu15ll(Test_BFu0s_BFu15s_BFu15ll, "BFu0s_BFu15s_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu15s");
    static BFu0s_BFu15s_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu0s_BFu15s_BFu15s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu15s(Test_BFu0s_BFu15s_BFu15s, "BFu0s_BFu15s_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu16i");
    static BFu0s_BFu15s_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu16i");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu0s_BFu15s_BFu16i");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu15s_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu16i(Test_BFu0s_BFu15s_BFu16i, "BFu0s_BFu15s_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu16ll");
    static BFu0s_BFu15s_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu16ll");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu0s_BFu15s_BFu16ll");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu15s_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu16ll(Test_BFu0s_BFu15s_BFu16ll, "BFu0s_BFu15s_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu16s");
    static BFu0s_BFu15s_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu16s");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu0s_BFu15s_BFu16s");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu15s_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu16s(Test_BFu0s_BFu15s_BFu16s, "BFu0s_BFu15s_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu17i");
    static BFu0s_BFu15s_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15s_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu17i");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu0s_BFu15s_BFu17i");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu15s_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu17i(Test_BFu0s_BFu15s_BFu17i, "BFu0s_BFu15s_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu17ll");
    static BFu0s_BFu15s_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15s_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu17ll");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu0s_BFu15s_BFu17ll");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu15s_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu17ll(Test_BFu0s_BFu15s_BFu17ll, "BFu0s_BFu15s_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu1c");
    static BFu0s_BFu15s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu1c");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15s_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu1c(Test_BFu0s_BFu15s_BFu1c, "BFu0s_BFu15s_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu1i");
    static BFu0s_BFu15s_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu1i");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15s_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu1i(Test_BFu0s_BFu15s_BFu1i, "BFu0s_BFu15s_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu1ll");
    static BFu0s_BFu15s_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu1ll");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15s_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu1ll(Test_BFu0s_BFu15s_BFu1ll, "BFu0s_BFu15s_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu1s");
    static BFu0s_BFu15s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu15s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu1s");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu0s_BFu15s_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu1s(Test_BFu0s_BFu15s_BFu1s, "BFu0s_BFu15s_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu31i");
    static BFu0s_BFu15s_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15s_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu31i");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu0s_BFu15s_BFu31i");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu15s_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu31i(Test_BFu0s_BFu15s_BFu31i, "BFu0s_BFu15s_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu31ll");
    static BFu0s_BFu15s_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15s_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu31ll");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu0s_BFu15s_BFu31ll");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu15s_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu31ll(Test_BFu0s_BFu15s_BFu31ll, "BFu0s_BFu15s_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu32i");
    static BFu0s_BFu15s_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15s_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu32i");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu0s_BFu15s_BFu32i");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu15s_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu32i(Test_BFu0s_BFu15s_BFu32i, "BFu0s_BFu15s_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu32ll");
    static BFu0s_BFu15s_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15s_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu32ll");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu0s_BFu15s_BFu32ll");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu15s_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu32ll(Test_BFu0s_BFu15s_BFu32ll, "BFu0s_BFu15s_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu33()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu33");
    static BFu0s_BFu15s_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15s_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu33");
    set_bf_and_test(lv, v2, 1, 7, 33, 1, "BFu0s_BFu15s_BFu33");
    set_bf_and_test(lv, v2, 1, 7, 33, hide_ull(1LL<<32), "BFu0s_BFu15s_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu33(Test_BFu0s_BFu15s_BFu33, "BFu0s_BFu15s_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu7c");
    static BFu0s_BFu15s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu7c");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15s_BFu7c");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15s_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu7c(Test_BFu0s_BFu15s_BFu7c, "BFu0s_BFu15s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu7i");
    static BFu0s_BFu15s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu7i");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15s_BFu7i");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15s_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu7i(Test_BFu0s_BFu15s_BFu7i, "BFu0s_BFu15s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu7ll");
    static BFu0s_BFu15s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu7ll");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15s_BFu7ll");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15s_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu7ll(Test_BFu0s_BFu15s_BFu7ll, "BFu0s_BFu15s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu7s");
    static BFu0s_BFu15s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu7s");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu0s_BFu15s_BFu7s");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu15s_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu7s(Test_BFu0s_BFu15s_BFu7s, "BFu0s_BFu15s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu8c");
    static BFu0s_BFu15s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu8c");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15s_BFu8c");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15s_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu8c(Test_BFu0s_BFu15s_BFu8c, "BFu0s_BFu15s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu8i");
    static BFu0s_BFu15s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu8i");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15s_BFu8i");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15s_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu8i(Test_BFu0s_BFu15s_BFu8i, "BFu0s_BFu15s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu8ll");
    static BFu0s_BFu15s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu8ll");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15s_BFu8ll");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15s_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu8ll(Test_BFu0s_BFu15s_BFu8ll, "BFu0s_BFu15s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu8s");
    static BFu0s_BFu15s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu8s");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu0s_BFu15s_BFu8s");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu15s_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu8s(Test_BFu0s_BFu15s_BFu8s, "BFu0s_BFu15s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu9i");
    static BFu0s_BFu15s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu9i");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu0s_BFu15s_BFu9i");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu15s_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu9i(Test_BFu0s_BFu15s_BFu9i, "BFu0s_BFu15s_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu9ll");
    static BFu0s_BFu15s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu9ll");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu0s_BFu15s_BFu9ll");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu15s_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu9ll(Test_BFu0s_BFu15s_BFu9ll, "BFu0s_BFu15s_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu15s_BFu9s");
    static BFu0s_BFu15s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_BFu9s");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu0s_BFu15s_BFu9s");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu15s_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_BFu9s(Test_BFu0s_BFu15s_BFu9s, "BFu0s_BFu15s_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_C()
{
  {
    init_simple_test("BFu0s_BFu15s_C");
    static BFu0s_BFu15s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_C)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_C");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_C");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_C(Test_BFu0s_BFu15s_C, "BFu0s_BFu15s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_D()
{
  {
    init_simple_test("BFu0s_BFu15s_D");
    static BFu0s_BFu15s_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu15s_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_D)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_D");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_D");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_D(Test_BFu0s_BFu15s_D, "BFu0s_BFu15s_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_F()
{
  {
    init_simple_test("BFu0s_BFu15s_F");
    static BFu0s_BFu15s_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15s_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_F)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_F");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_F");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_F(Test_BFu0s_BFu15s_F, "BFu0s_BFu15s_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_I()
{
  {
    init_simple_test("BFu0s_BFu15s_I");
    static BFu0s_BFu15s_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15s_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_I)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_I");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_I");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_I(Test_BFu0s_BFu15s_I, "BFu0s_BFu15s_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_Ip()
{
  {
    init_simple_test("BFu0s_BFu15s_Ip");
    static BFu0s_BFu15s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu15s_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_Ip");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_Ip(Test_BFu0s_BFu15s_Ip, "BFu0s_BFu15s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_L()
{
  {
    init_simple_test("BFu0s_BFu15s_L");
    static BFu0s_BFu15s_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu15s_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_L)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_L");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_L");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_L(Test_BFu0s_BFu15s_L, "BFu0s_BFu15s_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_S()
{
  {
    init_simple_test("BFu0s_BFu15s_S");
    static BFu0s_BFu15s_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15s_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_S)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_S");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_S");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_S(Test_BFu0s_BFu15s_S, "BFu0s_BFu15s_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_Uc()
{
  {
    init_simple_test("BFu0s_BFu15s_Uc");
    static BFu0s_BFu15s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu15s_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_Uc");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_Uc(Test_BFu0s_BFu15s_Uc, "BFu0s_BFu15s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_Ui()
{
  {
    init_simple_test("BFu0s_BFu15s_Ui");
    static BFu0s_BFu15s_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu15s_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_Ui");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_Ui(Test_BFu0s_BFu15s_Ui, "BFu0s_BFu15s_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_Ul()
{
  {
    init_simple_test("BFu0s_BFu15s_Ul");
    static BFu0s_BFu15s_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu15s_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_Ul");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_Ul(Test_BFu0s_BFu15s_Ul, "BFu0s_BFu15s_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_Us()
{
  {
    init_simple_test("BFu0s_BFu15s_Us");
    static BFu0s_BFu15s_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu15s_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_Us");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_Us");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_Us(Test_BFu0s_BFu15s_Us, "BFu0s_BFu15s_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu15s_Vp()
{
  {
    init_simple_test("BFu0s_BFu15s_Vp");
    static BFu0s_BFu15s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu15s_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu15s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu0s_BFu15s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu15s_Vp");
    check_field_offset(lv, v2, 2, "BFu0s_BFu15s_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu15s_Vp(Test_BFu0s_BFu15s_Vp, "BFu0s_BFu15s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu16i");
    static BFu0s_BFu16i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i(Test_BFu0s_BFu16i, "BFu0s_BFu16i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu0c");
    static BFu0s_BFu16i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu16i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu0c(Test_BFu0s_BFu16i_BFu0c, "BFu0s_BFu16i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu0i");
    static BFu0s_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu16i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu0i(Test_BFu0s_BFu16i_BFu0i, "BFu0s_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu0ll");
    static BFu0s_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu16i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu0ll(Test_BFu0s_BFu16i_BFu0ll, "BFu0s_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu0s");
    static BFu0s_BFu16i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu16i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu0s(Test_BFu0s_BFu16i_BFu0s, "BFu0s_BFu16i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu15i");
    static BFu0s_BFu16i_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_BFu16i_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu16i_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu15i(Test_BFu0s_BFu16i_BFu15i, "BFu0s_BFu16i_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu15ll");
    static BFu0s_BFu16i_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_BFu16i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu16i_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu15ll(Test_BFu0s_BFu16i_BFu15ll, "BFu0s_BFu16i_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu15s");
    static BFu0s_BFu16i_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_BFu16i_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu16i_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu15s(Test_BFu0s_BFu16i_BFu15s, "BFu0s_BFu16i_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu16i");
    static BFu0s_BFu16i_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_BFu16i_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu16i(Test_BFu0s_BFu16i_BFu16i, "BFu0s_BFu16i_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu16ll");
    static BFu0s_BFu16i_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_BFu16i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu16ll(Test_BFu0s_BFu16i_BFu16ll, "BFu0s_BFu16i_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu16s");
    static BFu0s_BFu16i_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_BFu16i_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu16s(Test_BFu0s_BFu16i_BFu16s, "BFu0s_BFu16i_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu17i");
    static BFu0s_BFu16i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu16i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0s_BFu16i_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu16i_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu17i(Test_BFu0s_BFu16i_BFu17i, "BFu0s_BFu16i_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu17ll");
    static BFu0s_BFu16i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu16i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0s_BFu16i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu16i_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu17ll(Test_BFu0s_BFu16i_BFu17ll, "BFu0s_BFu16i_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu1c");
    static BFu0s_BFu16i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu1c");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16i_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu1c(Test_BFu0s_BFu16i_BFu1c, "BFu0s_BFu16i_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu1i");
    static BFu0s_BFu16i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu1i");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16i_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu1i(Test_BFu0s_BFu16i_BFu1i, "BFu0s_BFu16i_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu1ll");
    static BFu0s_BFu16i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu1ll");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16i_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu1ll(Test_BFu0s_BFu16i_BFu1ll, "BFu0s_BFu16i_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu1s");
    static BFu0s_BFu16i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu1s");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16i_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu1s(Test_BFu0s_BFu16i_BFu1s, "BFu0s_BFu16i_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu31i");
    static BFu0s_BFu16i_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16i_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0s_BFu16i_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu16i_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu31i(Test_BFu0s_BFu16i_BFu31i, "BFu0s_BFu16i_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu31ll");
    static BFu0s_BFu16i_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16i_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0s_BFu16i_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu16i_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu31ll(Test_BFu0s_BFu16i_BFu31ll, "BFu0s_BFu16i_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu32i");
    static BFu0s_BFu16i_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16i_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0s_BFu16i_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu16i_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu32i(Test_BFu0s_BFu16i_BFu32i, "BFu0s_BFu16i_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu32ll");
    static BFu0s_BFu16i_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16i_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0s_BFu16i_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu16i_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu32ll(Test_BFu0s_BFu16i_BFu32ll, "BFu0s_BFu16i_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu33()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu33");
    static BFu0s_BFu16i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu16i_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, 1, "BFu0s_BFu16i_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu16i_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu33(Test_BFu0s_BFu16i_BFu33, "BFu0s_BFu16i_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu7c");
    static BFu0s_BFu16i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16i_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16i_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu7c(Test_BFu0s_BFu16i_BFu7c, "BFu0s_BFu16i_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu7i");
    static BFu0s_BFu16i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16i_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16i_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu7i(Test_BFu0s_BFu16i_BFu7i, "BFu0s_BFu16i_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu7ll");
    static BFu0s_BFu16i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16i_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16i_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu7ll(Test_BFu0s_BFu16i_BFu7ll, "BFu0s_BFu16i_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu7s");
    static BFu0s_BFu16i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16i_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16i_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu7s(Test_BFu0s_BFu16i_BFu7s, "BFu0s_BFu16i_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu8c");
    static BFu0s_BFu16i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16i_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16i_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu8c(Test_BFu0s_BFu16i_BFu8c, "BFu0s_BFu16i_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu8i");
    static BFu0s_BFu16i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16i_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16i_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu8i(Test_BFu0s_BFu16i_BFu8i, "BFu0s_BFu16i_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu8ll");
    static BFu0s_BFu16i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16i_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16i_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu8ll(Test_BFu0s_BFu16i_BFu8ll, "BFu0s_BFu16i_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu8s");
    static BFu0s_BFu16i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16i_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16i_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu8s(Test_BFu0s_BFu16i_BFu8s, "BFu0s_BFu16i_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu9i");
    static BFu0s_BFu16i_BFu9i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16i_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_BFu16i_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu16i_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu9i(Test_BFu0s_BFu16i_BFu9i, "BFu0s_BFu16i_BFu9i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu9ll");
    static BFu0s_BFu16i_BFu9ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16i_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_BFu16i_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu16i_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu9ll(Test_BFu0s_BFu16i_BFu9ll, "BFu0s_BFu16i_BFu9ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu16i_BFu9s");
    static BFu0s_BFu16i_BFu9s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16i_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_BFu16i_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu16i_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_BFu9s(Test_BFu0s_BFu16i_BFu9s, "BFu0s_BFu16i_BFu9s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_C()
{
  {
    init_simple_test("BFu0s_BFu16i_C");
    static BFu0s_BFu16i_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_C)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_C");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_C");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_C(Test_BFu0s_BFu16i_C, "BFu0s_BFu16i_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_D()
{
  {
    init_simple_test("BFu0s_BFu16i_D");
    static BFu0s_BFu16i_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu16i_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_D)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_D");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_D");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_D(Test_BFu0s_BFu16i_D, "BFu0s_BFu16i_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_F()
{
  {
    init_simple_test("BFu0s_BFu16i_F");
    static BFu0s_BFu16i_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16i_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_F)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_F");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_F");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_F(Test_BFu0s_BFu16i_F, "BFu0s_BFu16i_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_I()
{
  {
    init_simple_test("BFu0s_BFu16i_I");
    static BFu0s_BFu16i_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16i_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_I)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_I");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_I");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_I(Test_BFu0s_BFu16i_I, "BFu0s_BFu16i_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_Ip()
{
  {
    init_simple_test("BFu0s_BFu16i_Ip");
    static BFu0s_BFu16i_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu16i_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_Ip");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_Ip(Test_BFu0s_BFu16i_Ip, "BFu0s_BFu16i_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_L()
{
  {
    init_simple_test("BFu0s_BFu16i_L");
    static BFu0s_BFu16i_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu16i_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_L)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_L");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_L");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_L(Test_BFu0s_BFu16i_L, "BFu0s_BFu16i_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_S()
{
  {
    init_simple_test("BFu0s_BFu16i_S");
    static BFu0s_BFu16i_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16i_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_S)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_S");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_S");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_S(Test_BFu0s_BFu16i_S, "BFu0s_BFu16i_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_Uc()
{
  {
    init_simple_test("BFu0s_BFu16i_Uc");
    static BFu0s_BFu16i_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16i_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_Uc");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_Uc(Test_BFu0s_BFu16i_Uc, "BFu0s_BFu16i_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_Ui()
{
  {
    init_simple_test("BFu0s_BFu16i_Ui");
    static BFu0s_BFu16i_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16i_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_Ui");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_Ui(Test_BFu0s_BFu16i_Ui, "BFu0s_BFu16i_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_Ul()
{
  {
    init_simple_test("BFu0s_BFu16i_Ul");
    static BFu0s_BFu16i_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu16i_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_Ul");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_Ul(Test_BFu0s_BFu16i_Ul, "BFu0s_BFu16i_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_Us()
{
  {
    init_simple_test("BFu0s_BFu16i_Us");
    static BFu0s_BFu16i_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16i_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_Us");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_Us");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_Us(Test_BFu0s_BFu16i_Us, "BFu0s_BFu16i_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16i_Vp()
{
  {
    init_simple_test("BFu0s_BFu16i_Vp");
    static BFu0s_BFu16i_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu16i_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16i_Vp");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16i_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16i_Vp(Test_BFu0s_BFu16i_Vp, "BFu0s_BFu16i_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu16ll");
    static BFu0s_BFu16ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll(Test_BFu0s_BFu16ll, "BFu0s_BFu16ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu0c");
    static BFu0s_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu16ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu0c(Test_BFu0s_BFu16ll_BFu0c, "BFu0s_BFu16ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu0i");
    static BFu0s_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu16ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu0i(Test_BFu0s_BFu16ll_BFu0i, "BFu0s_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu0ll");
    static BFu0s_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu0ll(Test_BFu0s_BFu16ll_BFu0ll, "BFu0s_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu0s");
    static BFu0s_BFu16ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu16ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu0s(Test_BFu0s_BFu16ll_BFu0s, "BFu0s_BFu16ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu15i");
    static BFu0s_BFu16ll_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_BFu16ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu16ll_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu15i(Test_BFu0s_BFu16ll_BFu15i, "BFu0s_BFu16ll_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu15ll");
    static BFu0s_BFu16ll_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_BFu16ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu16ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu15ll(Test_BFu0s_BFu16ll_BFu15ll, "BFu0s_BFu16ll_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu15s");
    static BFu0s_BFu16ll_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_BFu16ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu16ll_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu15s(Test_BFu0s_BFu16ll_BFu15s, "BFu0s_BFu16ll_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu16i");
    static BFu0s_BFu16ll_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_BFu16ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu16i(Test_BFu0s_BFu16ll_BFu16i, "BFu0s_BFu16ll_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu16ll");
    static BFu0s_BFu16ll_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_BFu16ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu16ll(Test_BFu0s_BFu16ll_BFu16ll, "BFu0s_BFu16ll_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu16s");
    static BFu0s_BFu16ll_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_BFu16ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu16s(Test_BFu0s_BFu16ll_BFu16s, "BFu0s_BFu16ll_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu17i");
    static BFu0s_BFu16ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu16ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0s_BFu16ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu16ll_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu17i(Test_BFu0s_BFu16ll_BFu17i, "BFu0s_BFu16ll_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu17ll");
    static BFu0s_BFu16ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu16ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0s_BFu16ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu16ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu17ll(Test_BFu0s_BFu16ll_BFu17ll, "BFu0s_BFu16ll_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu1c");
    static BFu0s_BFu16ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu1c");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16ll_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu1c(Test_BFu0s_BFu16ll_BFu1c, "BFu0s_BFu16ll_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu1i");
    static BFu0s_BFu16ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu1i");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16ll_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu1i(Test_BFu0s_BFu16ll_BFu1i, "BFu0s_BFu16ll_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu1ll");
    static BFu0s_BFu16ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu1ll");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu1ll(Test_BFu0s_BFu16ll_BFu1ll, "BFu0s_BFu16ll_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu1s");
    static BFu0s_BFu16ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu1s");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16ll_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu1s(Test_BFu0s_BFu16ll_BFu1s, "BFu0s_BFu16ll_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu31i");
    static BFu0s_BFu16ll_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16ll_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0s_BFu16ll_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu16ll_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu31i(Test_BFu0s_BFu16ll_BFu31i, "BFu0s_BFu16ll_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu31ll");
    static BFu0s_BFu16ll_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16ll_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0s_BFu16ll_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu16ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu31ll(Test_BFu0s_BFu16ll_BFu31ll, "BFu0s_BFu16ll_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu32i");
    static BFu0s_BFu16ll_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16ll_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0s_BFu16ll_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu16ll_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu32i(Test_BFu0s_BFu16ll_BFu32i, "BFu0s_BFu16ll_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu32ll");
    static BFu0s_BFu16ll_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16ll_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0s_BFu16ll_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu16ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu32ll(Test_BFu0s_BFu16ll_BFu32ll, "BFu0s_BFu16ll_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu33()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu33");
    static BFu0s_BFu16ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu16ll_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, 1, "BFu0s_BFu16ll_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu16ll_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu33(Test_BFu0s_BFu16ll_BFu33, "BFu0s_BFu16ll_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu7c");
    static BFu0s_BFu16ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16ll_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16ll_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu7c(Test_BFu0s_BFu16ll_BFu7c, "BFu0s_BFu16ll_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu7i");
    static BFu0s_BFu16ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16ll_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16ll_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu7i(Test_BFu0s_BFu16ll_BFu7i, "BFu0s_BFu16ll_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu7ll");
    static BFu0s_BFu16ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16ll_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu7ll(Test_BFu0s_BFu16ll_BFu7ll, "BFu0s_BFu16ll_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu7s");
    static BFu0s_BFu16ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16ll_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16ll_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu7s(Test_BFu0s_BFu16ll_BFu7s, "BFu0s_BFu16ll_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu8c");
    static BFu0s_BFu16ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16ll_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16ll_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu8c(Test_BFu0s_BFu16ll_BFu8c, "BFu0s_BFu16ll_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu8i");
    static BFu0s_BFu16ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16ll_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16ll_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu8i(Test_BFu0s_BFu16ll_BFu8i, "BFu0s_BFu16ll_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu8ll");
    static BFu0s_BFu16ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16ll_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu8ll(Test_BFu0s_BFu16ll_BFu8ll, "BFu0s_BFu16ll_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu8s");
    static BFu0s_BFu16ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16ll_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16ll_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu8s(Test_BFu0s_BFu16ll_BFu8s, "BFu0s_BFu16ll_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu9i");
    static BFu0s_BFu16ll_BFu9i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16ll_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_BFu16ll_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu16ll_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu9i(Test_BFu0s_BFu16ll_BFu9i, "BFu0s_BFu16ll_BFu9i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu9ll");
    static BFu0s_BFu16ll_BFu9ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16ll_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_BFu16ll_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu16ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu9ll(Test_BFu0s_BFu16ll_BFu9ll, "BFu0s_BFu16ll_BFu9ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu16ll_BFu9s");
    static BFu0s_BFu16ll_BFu9s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16ll_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_BFu16ll_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu16ll_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_BFu9s(Test_BFu0s_BFu16ll_BFu9s, "BFu0s_BFu16ll_BFu9s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_C()
{
  {
    init_simple_test("BFu0s_BFu16ll_C");
    static BFu0s_BFu16ll_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_C");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_C");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_C(Test_BFu0s_BFu16ll_C, "BFu0s_BFu16ll_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_D()
{
  {
    init_simple_test("BFu0s_BFu16ll_D");
    static BFu0s_BFu16ll_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu16ll_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_D");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_D");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_D(Test_BFu0s_BFu16ll_D, "BFu0s_BFu16ll_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_F()
{
  {
    init_simple_test("BFu0s_BFu16ll_F");
    static BFu0s_BFu16ll_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16ll_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_F");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_F");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_F(Test_BFu0s_BFu16ll_F, "BFu0s_BFu16ll_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_I()
{
  {
    init_simple_test("BFu0s_BFu16ll_I");
    static BFu0s_BFu16ll_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16ll_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_I");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_I");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_I(Test_BFu0s_BFu16ll_I, "BFu0s_BFu16ll_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_Ip()
{
  {
    init_simple_test("BFu0s_BFu16ll_Ip");
    static BFu0s_BFu16ll_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu16ll_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_Ip");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_Ip(Test_BFu0s_BFu16ll_Ip, "BFu0s_BFu16ll_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_L()
{
  {
    init_simple_test("BFu0s_BFu16ll_L");
    static BFu0s_BFu16ll_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu16ll_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_L");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_L");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_L(Test_BFu0s_BFu16ll_L, "BFu0s_BFu16ll_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_S()
{
  {
    init_simple_test("BFu0s_BFu16ll_S");
    static BFu0s_BFu16ll_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16ll_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_S");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_S");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_S(Test_BFu0s_BFu16ll_S, "BFu0s_BFu16ll_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_Uc()
{
  {
    init_simple_test("BFu0s_BFu16ll_Uc");
    static BFu0s_BFu16ll_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16ll_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_Uc");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_Uc(Test_BFu0s_BFu16ll_Uc, "BFu0s_BFu16ll_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_Ui()
{
  {
    init_simple_test("BFu0s_BFu16ll_Ui");
    static BFu0s_BFu16ll_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16ll_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_Ui");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_Ui(Test_BFu0s_BFu16ll_Ui, "BFu0s_BFu16ll_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_Ul()
{
  {
    init_simple_test("BFu0s_BFu16ll_Ul");
    static BFu0s_BFu16ll_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu16ll_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_Ul");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_Ul(Test_BFu0s_BFu16ll_Ul, "BFu0s_BFu16ll_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_Us()
{
  {
    init_simple_test("BFu0s_BFu16ll_Us");
    static BFu0s_BFu16ll_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16ll_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_Us");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_Us(Test_BFu0s_BFu16ll_Us, "BFu0s_BFu16ll_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16ll_Vp()
{
  {
    init_simple_test("BFu0s_BFu16ll_Vp");
    static BFu0s_BFu16ll_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu16ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16ll_Vp");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16ll_Vp(Test_BFu0s_BFu16ll_Vp, "BFu0s_BFu16ll_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu16s");
    static BFu0s_BFu16s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s(Test_BFu0s_BFu16s, "BFu0s_BFu16s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu0c");
    static BFu0s_BFu16s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu16s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu0c(Test_BFu0s_BFu16s_BFu0c, "BFu0s_BFu16s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu0i");
    static BFu0s_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu16s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu0i(Test_BFu0s_BFu16s_BFu0i, "BFu0s_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu0ll");
    static BFu0s_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu16s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu0ll(Test_BFu0s_BFu16s_BFu0ll, "BFu0s_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu0s");
    static BFu0s_BFu16s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu16s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu0s(Test_BFu0s_BFu16s_BFu0s, "BFu0s_BFu16s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu15i");
    static BFu0s_BFu16s_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_BFu16s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu16s_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu15i(Test_BFu0s_BFu16s_BFu15i, "BFu0s_BFu16s_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu15ll");
    static BFu0s_BFu16s_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_BFu16s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu16s_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu15ll(Test_BFu0s_BFu16s_BFu15ll, "BFu0s_BFu16s_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu15s");
    static BFu0s_BFu16s_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_BFu16s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu16s_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu15s(Test_BFu0s_BFu16s_BFu15s, "BFu0s_BFu16s_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu16i");
    static BFu0s_BFu16s_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_BFu16s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu16i(Test_BFu0s_BFu16s_BFu16i, "BFu0s_BFu16s_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu16ll");
    static BFu0s_BFu16s_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_BFu16s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu16ll(Test_BFu0s_BFu16s_BFu16ll, "BFu0s_BFu16s_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu16s");
    static BFu0s_BFu16s_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_BFu16s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu16s(Test_BFu0s_BFu16s_BFu16s, "BFu0s_BFu16s_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu17i");
    static BFu0s_BFu16s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu16s_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0s_BFu16s_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu16s_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu17i(Test_BFu0s_BFu16s_BFu17i, "BFu0s_BFu16s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu17ll");
    static BFu0s_BFu16s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu16s_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0s_BFu16s_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu16s_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu17ll(Test_BFu0s_BFu16s_BFu17ll, "BFu0s_BFu16s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu1c");
    static BFu0s_BFu16s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu1c");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16s_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu1c(Test_BFu0s_BFu16s_BFu1c, "BFu0s_BFu16s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu1i");
    static BFu0s_BFu16s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu1i");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16s_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu1i(Test_BFu0s_BFu16s_BFu1i, "BFu0s_BFu16s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu1ll");
    static BFu0s_BFu16s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu1ll");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16s_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu1ll(Test_BFu0s_BFu16s_BFu1ll, "BFu0s_BFu16s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu1s");
    static BFu0s_BFu16s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu1s");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_BFu16s_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu1s(Test_BFu0s_BFu16s_BFu1s, "BFu0s_BFu16s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu31i");
    static BFu0s_BFu16s_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16s_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0s_BFu16s_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu16s_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu31i(Test_BFu0s_BFu16s_BFu31i, "BFu0s_BFu16s_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu31ll");
    static BFu0s_BFu16s_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16s_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0s_BFu16s_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu16s_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu31ll(Test_BFu0s_BFu16s_BFu31ll, "BFu0s_BFu16s_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu32i");
    static BFu0s_BFu16s_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16s_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0s_BFu16s_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu16s_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu32i(Test_BFu0s_BFu16s_BFu32i, "BFu0s_BFu16s_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu32ll");
    static BFu0s_BFu16s_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16s_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0s_BFu16s_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu16s_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu32ll(Test_BFu0s_BFu16s_BFu32ll, "BFu0s_BFu16s_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu33()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu33");
    static BFu0s_BFu16s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu16s_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, 1, "BFu0s_BFu16s_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu16s_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu33(Test_BFu0s_BFu16s_BFu33, "BFu0s_BFu16s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu7c");
    static BFu0s_BFu16s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16s_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16s_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu7c(Test_BFu0s_BFu16s_BFu7c, "BFu0s_BFu16s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu7i");
    static BFu0s_BFu16s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16s_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16s_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu7i(Test_BFu0s_BFu16s_BFu7i, "BFu0s_BFu16s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu7ll");
    static BFu0s_BFu16s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16s_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16s_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu7ll(Test_BFu0s_BFu16s_BFu7ll, "BFu0s_BFu16s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu7s");
    static BFu0s_BFu16s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_BFu16s_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu16s_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu7s(Test_BFu0s_BFu16s_BFu7s, "BFu0s_BFu16s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu8c");
    static BFu0s_BFu16s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16s_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16s_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu8c(Test_BFu0s_BFu16s_BFu8c, "BFu0s_BFu16s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu8i");
    static BFu0s_BFu16s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16s_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16s_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu8i(Test_BFu0s_BFu16s_BFu8i, "BFu0s_BFu16s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu8ll");
    static BFu0s_BFu16s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16s_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16s_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu8ll(Test_BFu0s_BFu16s_BFu8ll, "BFu0s_BFu16s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu8s");
    static BFu0s_BFu16s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_BFu16s_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu16s_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu8s(Test_BFu0s_BFu16s_BFu8s, "BFu0s_BFu16s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu9i");
    static BFu0s_BFu16s_BFu9i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16s_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_BFu16s_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu16s_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu9i(Test_BFu0s_BFu16s_BFu9i, "BFu0s_BFu16s_BFu9i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu9ll");
    static BFu0s_BFu16s_BFu9ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16s_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_BFu16s_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu16s_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu9ll(Test_BFu0s_BFu16s_BFu9ll, "BFu0s_BFu16s_BFu9ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu16s_BFu9s");
    static BFu0s_BFu16s_BFu9s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16s_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_BFu16s_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu16s_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_BFu9s(Test_BFu0s_BFu16s_BFu9s, "BFu0s_BFu16s_BFu9s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_C()
{
  {
    init_simple_test("BFu0s_BFu16s_C");
    static BFu0s_BFu16s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_C)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_C");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_C");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_C(Test_BFu0s_BFu16s_C, "BFu0s_BFu16s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_D()
{
  {
    init_simple_test("BFu0s_BFu16s_D");
    static BFu0s_BFu16s_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu16s_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_D)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_D");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_D");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_D(Test_BFu0s_BFu16s_D, "BFu0s_BFu16s_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_F()
{
  {
    init_simple_test("BFu0s_BFu16s_F");
    static BFu0s_BFu16s_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16s_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_F)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_F");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_F");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_F(Test_BFu0s_BFu16s_F, "BFu0s_BFu16s_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_I()
{
  {
    init_simple_test("BFu0s_BFu16s_I");
    static BFu0s_BFu16s_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16s_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_I)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_I");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_I");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_I(Test_BFu0s_BFu16s_I, "BFu0s_BFu16s_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_Ip()
{
  {
    init_simple_test("BFu0s_BFu16s_Ip");
    static BFu0s_BFu16s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu16s_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_Ip");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_Ip(Test_BFu0s_BFu16s_Ip, "BFu0s_BFu16s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_L()
{
  {
    init_simple_test("BFu0s_BFu16s_L");
    static BFu0s_BFu16s_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu16s_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_L)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_L");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_L");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_L(Test_BFu0s_BFu16s_L, "BFu0s_BFu16s_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_S()
{
  {
    init_simple_test("BFu0s_BFu16s_S");
    static BFu0s_BFu16s_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16s_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_S)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_S");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_S");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_S(Test_BFu0s_BFu16s_S, "BFu0s_BFu16s_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_Uc()
{
  {
    init_simple_test("BFu0s_BFu16s_Uc");
    static BFu0s_BFu16s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu16s_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_Uc");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_Uc(Test_BFu0s_BFu16s_Uc, "BFu0s_BFu16s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_Ui()
{
  {
    init_simple_test("BFu0s_BFu16s_Ui");
    static BFu0s_BFu16s_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu16s_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_Ui");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_Ui(Test_BFu0s_BFu16s_Ui, "BFu0s_BFu16s_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_Ul()
{
  {
    init_simple_test("BFu0s_BFu16s_Ul");
    static BFu0s_BFu16s_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu16s_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_Ul");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_Ul(Test_BFu0s_BFu16s_Ul, "BFu0s_BFu16s_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_Us()
{
  {
    init_simple_test("BFu0s_BFu16s_Us");
    static BFu0s_BFu16s_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu16s_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_Us");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_Us");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_Us(Test_BFu0s_BFu16s_Us, "BFu0s_BFu16s_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu16s_Vp()
{
  {
    init_simple_test("BFu0s_BFu16s_Vp");
    static BFu0s_BFu16s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu16s_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu16s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 16, 1, "BFu0s_BFu16s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu16s_Vp");
    check_field_offset(lv, v2, 2, "BFu0s_BFu16s_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu16s_Vp(Test_BFu0s_BFu16s_Vp, "BFu0s_BFu16s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu17i");
    static BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i(Test_BFu0s_BFu17i, "BFu0s_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu0c");
    static BFu0s_BFu17i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu0c(Test_BFu0s_BFu17i_BFu0c, "BFu0s_BFu17i_BFu0c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu0i");
    static BFu0s_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu17i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu0i(Test_BFu0s_BFu17i_BFu0i, "BFu0s_BFu17i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu0ll");
    static BFu0s_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu17i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu0ll(Test_BFu0s_BFu17i_BFu0ll, "BFu0s_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu0s");
    static BFu0s_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu17i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu0s(Test_BFu0s_BFu17i_BFu0s, "BFu0s_BFu17i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu15i");
    static BFu0s_BFu17i_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu15i");
    set_bf_and_test(lv, v2, 2, 1, 15, 1, "BFu0s_BFu17i_BFu15i");
    set_bf_and_test(lv, v2, 2, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu17i_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu15i(Test_BFu0s_BFu17i_BFu15i, "BFu0s_BFu17i_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu15ll");
    static BFu0s_BFu17i_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 1, 15, 1, "BFu0s_BFu17i_BFu15ll");
    set_bf_and_test(lv, v2, 2, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu17i_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu15ll(Test_BFu0s_BFu17i_BFu15ll, "BFu0s_BFu17i_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu15s");
    static BFu0s_BFu17i_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu15s");
    set_bf_and_test(lv, v2, 2, 1, 15, 1, "BFu0s_BFu17i_BFu15s");
    set_bf_and_test(lv, v2, 2, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu17i_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu15s(Test_BFu0s_BFu17i_BFu15s, "BFu0s_BFu17i_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu16i");
    static BFu0s_BFu17i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu16i");
    set_bf_and_test(lv, v2, 2, 1, 16, 1, "BFu0s_BFu17i_BFu16i");
    set_bf_and_test(lv, v2, 2, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu17i_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu16i(Test_BFu0s_BFu17i_BFu16i, "BFu0s_BFu17i_BFu16i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu16ll");
    static BFu0s_BFu17i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 1, 16, 1, "BFu0s_BFu17i_BFu16ll");
    set_bf_and_test(lv, v2, 2, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu17i_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu16ll(Test_BFu0s_BFu17i_BFu16ll, "BFu0s_BFu17i_BFu16ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu16s");
    static BFu0s_BFu17i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu16s");
    set_bf_and_test(lv, v2, 2, 1, 16, 1, "BFu0s_BFu17i_BFu16s");
    set_bf_and_test(lv, v2, 2, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu17i_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu16s(Test_BFu0s_BFu17i_BFu16s, "BFu0s_BFu17i_BFu16s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu17i");
    static BFu0s_BFu17i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFu0s_BFu17i_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu17i(Test_BFu0s_BFu17i_BFu17i, "BFu0s_BFu17i_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu17ll");
    static BFu0s_BFu17i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFu0s_BFu17i_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu17ll(Test_BFu0s_BFu17i_BFu17ll, "BFu0s_BFu17i_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu1c");
    static BFu0s_BFu17i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu1c");
    set_bf_and_test(lv, v2, 2, 1, 1, 1, "BFu0s_BFu17i_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu1c(Test_BFu0s_BFu17i_BFu1c, "BFu0s_BFu17i_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu1i");
    static BFu0s_BFu17i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu1i");
    set_bf_and_test(lv, v2, 2, 1, 1, 1, "BFu0s_BFu17i_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu1i(Test_BFu0s_BFu17i_BFu1i, "BFu0s_BFu17i_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu1ll");
    static BFu0s_BFu17i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu1ll");
    set_bf_and_test(lv, v2, 2, 1, 1, 1, "BFu0s_BFu17i_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu1ll(Test_BFu0s_BFu17i_BFu1ll, "BFu0s_BFu17i_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu1s");
    static BFu0s_BFu17i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu1s");
    set_bf_and_test(lv, v2, 2, 1, 1, 1, "BFu0s_BFu17i_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu1s(Test_BFu0s_BFu17i_BFu1s, "BFu0s_BFu17i_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu31i");
    static BFu0s_BFu17i_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu17i_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu31i");
    set_bf_and_test(lv, v2, 2, 1, 31, 1, "BFu0s_BFu17i_BFu31i");
    set_bf_and_test(lv, v2, 2, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu17i_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu31i(Test_BFu0s_BFu17i_BFu31i, "BFu0s_BFu17i_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu31ll");
    static BFu0s_BFu17i_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu17i_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu31ll");
    set_bf_and_test(lv, v2, 2, 1, 31, 1, "BFu0s_BFu17i_BFu31ll");
    set_bf_and_test(lv, v2, 2, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu17i_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu31ll(Test_BFu0s_BFu17i_BFu31ll, "BFu0s_BFu17i_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu32i");
    static BFu0s_BFu17i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17i_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu32i");
    set_bf_and_test(lv, v2, 2, 1, 32, 1, "BFu0s_BFu17i_BFu32i");
    set_bf_and_test(lv, v2, 2, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu17i_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu32i(Test_BFu0s_BFu17i_BFu32i, "BFu0s_BFu17i_BFu32i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu32ll");
    static BFu0s_BFu17i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17i_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu32ll");
    set_bf_and_test(lv, v2, 2, 1, 32, 1, "BFu0s_BFu17i_BFu32ll");
    set_bf_and_test(lv, v2, 2, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu17i_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu32ll(Test_BFu0s_BFu17i_BFu32ll, "BFu0s_BFu17i_BFu32ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu33()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu33");
    static BFu0s_BFu17i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17i_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu33");
    set_bf_and_test(lv, v2, 2, 1, 33, 1, "BFu0s_BFu17i_BFu33");
    set_bf_and_test(lv, v2, 2, 1, 33, hide_ull(1LL<<32), "BFu0s_BFu17i_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu33(Test_BFu0s_BFu17i_BFu33, "BFu0s_BFu17i_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu7c");
    static BFu0s_BFu17i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17i_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu7c");
    set_bf_and_test(lv, v2, 2, 1, 7, 1, "BFu0s_BFu17i_BFu7c");
    set_bf_and_test(lv, v2, 2, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu17i_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu7c(Test_BFu0s_BFu17i_BFu7c, "BFu0s_BFu17i_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu7i");
    static BFu0s_BFu17i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17i_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu7i");
    set_bf_and_test(lv, v2, 2, 1, 7, 1, "BFu0s_BFu17i_BFu7i");
    set_bf_and_test(lv, v2, 2, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu17i_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu7i(Test_BFu0s_BFu17i_BFu7i, "BFu0s_BFu17i_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu7ll");
    static BFu0s_BFu17i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17i_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu7ll");
    set_bf_and_test(lv, v2, 2, 1, 7, 1, "BFu0s_BFu17i_BFu7ll");
    set_bf_and_test(lv, v2, 2, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu17i_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu7ll(Test_BFu0s_BFu17i_BFu7ll, "BFu0s_BFu17i_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu7s");
    static BFu0s_BFu17i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17i_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu7s");
    set_bf_and_test(lv, v2, 2, 1, 7, 1, "BFu0s_BFu17i_BFu7s");
    set_bf_and_test(lv, v2, 2, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu17i_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu7s(Test_BFu0s_BFu17i_BFu7s, "BFu0s_BFu17i_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu8c");
    static BFu0s_BFu17i_BFu8c lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu8c");
    set_bf_and_test(lv, v2, 2, 1, 8, 1, "BFu0s_BFu17i_BFu8c");
    set_bf_and_test(lv, v2, 2, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu17i_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu8c(Test_BFu0s_BFu17i_BFu8c, "BFu0s_BFu17i_BFu8c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu8i");
    static BFu0s_BFu17i_BFu8i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu8i");
    set_bf_and_test(lv, v2, 2, 1, 8, 1, "BFu0s_BFu17i_BFu8i");
    set_bf_and_test(lv, v2, 2, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu17i_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu8i(Test_BFu0s_BFu17i_BFu8i, "BFu0s_BFu17i_BFu8i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu8ll");
    static BFu0s_BFu17i_BFu8ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu8ll");
    set_bf_and_test(lv, v2, 2, 1, 8, 1, "BFu0s_BFu17i_BFu8ll");
    set_bf_and_test(lv, v2, 2, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu17i_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu8ll(Test_BFu0s_BFu17i_BFu8ll, "BFu0s_BFu17i_BFu8ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu8s");
    static BFu0s_BFu17i_BFu8s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu8s");
    set_bf_and_test(lv, v2, 2, 1, 8, 1, "BFu0s_BFu17i_BFu8s");
    set_bf_and_test(lv, v2, 2, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu17i_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu8s(Test_BFu0s_BFu17i_BFu8s, "BFu0s_BFu17i_BFu8s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu9i");
    static BFu0s_BFu17i_BFu9i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu9i");
    set_bf_and_test(lv, v2, 2, 1, 9, 1, "BFu0s_BFu17i_BFu9i");
    set_bf_and_test(lv, v2, 2, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu17i_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu9i(Test_BFu0s_BFu17i_BFu9i, "BFu0s_BFu17i_BFu9i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu9ll");
    static BFu0s_BFu17i_BFu9ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu9ll");
    set_bf_and_test(lv, v2, 2, 1, 9, 1, "BFu0s_BFu17i_BFu9ll");
    set_bf_and_test(lv, v2, 2, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu17i_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu9ll(Test_BFu0s_BFu17i_BFu9ll, "BFu0s_BFu17i_BFu9ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu17i_BFu9s");
    static BFu0s_BFu17i_BFu9s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_BFu9s");
    set_bf_and_test(lv, v2, 2, 1, 9, 1, "BFu0s_BFu17i_BFu9s");
    set_bf_and_test(lv, v2, 2, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu17i_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_BFu9s(Test_BFu0s_BFu17i_BFu9s, "BFu0s_BFu17i_BFu9s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_C()
{
  {
    init_simple_test("BFu0s_BFu17i_C");
    static BFu0s_BFu17i_C lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_C)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_C");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_C");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_C(Test_BFu0s_BFu17i_C, "BFu0s_BFu17i_C", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_D()
{
  {
    init_simple_test("BFu0s_BFu17i_D");
    static BFu0s_BFu17i_D lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_BFu17i_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_D)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_D");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_D");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_D(Test_BFu0s_BFu17i_D, "BFu0s_BFu17i_D", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_F()
{
  {
    init_simple_test("BFu0s_BFu17i_F");
    static BFu0s_BFu17i_F lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17i_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_F)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_F");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_F");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_F(Test_BFu0s_BFu17i_F, "BFu0s_BFu17i_F", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_I()
{
  {
    init_simple_test("BFu0s_BFu17i_I");
    static BFu0s_BFu17i_I lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17i_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_I)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_I");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_I");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_I(Test_BFu0s_BFu17i_I, "BFu0s_BFu17i_I", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_Ip()
{
  {
    init_simple_test("BFu0s_BFu17i_Ip");
    static BFu0s_BFu17i_Ip lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu0s_BFu17i_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_Ip");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_Ip(Test_BFu0s_BFu17i_Ip, "BFu0s_BFu17i_Ip", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_L()
{
  {
    init_simple_test("BFu0s_BFu17i_L");
    static BFu0s_BFu17i_L lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_BFu17i_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_L)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_L");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_L");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_L(Test_BFu0s_BFu17i_L, "BFu0s_BFu17i_L", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_S()
{
  {
    init_simple_test("BFu0s_BFu17i_S");
    static BFu0s_BFu17i_S lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17i_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_S)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_S");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_S");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_S(Test_BFu0s_BFu17i_S, "BFu0s_BFu17i_S", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_Uc()
{
  {
    init_simple_test("BFu0s_BFu17i_Uc");
    static BFu0s_BFu17i_Uc lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17i_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_Uc");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_Uc(Test_BFu0s_BFu17i_Uc, "BFu0s_BFu17i_Uc", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_Ui()
{
  {
    init_simple_test("BFu0s_BFu17i_Ui");
    static BFu0s_BFu17i_Ui lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17i_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_Ui");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_Ui(Test_BFu0s_BFu17i_Ui, "BFu0s_BFu17i_Ui", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_Ul()
{
  {
    init_simple_test("BFu0s_BFu17i_Ul");
    static BFu0s_BFu17i_Ul lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_BFu17i_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_Ul");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_Ul(Test_BFu0s_BFu17i_Ul, "BFu0s_BFu17i_Ul", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_Us()
{
  {
    init_simple_test("BFu0s_BFu17i_Us");
    static BFu0s_BFu17i_Us lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17i_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_Us");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_Us");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_Us(Test_BFu0s_BFu17i_Us, "BFu0s_BFu17i_Us", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17i_Vp()
{
  {
    init_simple_test("BFu0s_BFu17i_Vp");
    static BFu0s_BFu17i_Vp lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu0s_BFu17i_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17i_Vp");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17i_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17i_Vp(Test_BFu0s_BFu17i_Vp, "BFu0s_BFu17i_Vp", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu17ll");
    static BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll(Test_BFu0s_BFu17ll, "BFu0s_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu0c");
    static BFu0s_BFu17ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu0c(Test_BFu0s_BFu17ll_BFu0c, "BFu0s_BFu17ll_BFu0c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu0i");
    static BFu0s_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu17ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu0i(Test_BFu0s_BFu17ll_BFu0i, "BFu0s_BFu17ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu0ll");
    static BFu0s_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu0ll(Test_BFu0s_BFu17ll_BFu0ll, "BFu0s_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu0s");
    static BFu0s_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu17ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu0s(Test_BFu0s_BFu17ll_BFu0s, "BFu0s_BFu17ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu15i");
    static BFu0s_BFu17ll_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 1, 15, 1, "BFu0s_BFu17ll_BFu15i");
    set_bf_and_test(lv, v2, 2, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu17ll_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu15i(Test_BFu0s_BFu17ll_BFu15i, "BFu0s_BFu17ll_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu15ll");
    static BFu0s_BFu17ll_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 1, 15, 1, "BFu0s_BFu17ll_BFu15ll");
    set_bf_and_test(lv, v2, 2, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu17ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu15ll(Test_BFu0s_BFu17ll_BFu15ll, "BFu0s_BFu17ll_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu15s");
    static BFu0s_BFu17ll_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 1, 15, 1, "BFu0s_BFu17ll_BFu15s");
    set_bf_and_test(lv, v2, 2, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu17ll_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu15s(Test_BFu0s_BFu17ll_BFu15s, "BFu0s_BFu17ll_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu16i");
    static BFu0s_BFu17ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 1, 16, 1, "BFu0s_BFu17ll_BFu16i");
    set_bf_and_test(lv, v2, 2, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu17ll_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu16i(Test_BFu0s_BFu17ll_BFu16i, "BFu0s_BFu17ll_BFu16i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu16ll");
    static BFu0s_BFu17ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 1, 16, 1, "BFu0s_BFu17ll_BFu16ll");
    set_bf_and_test(lv, v2, 2, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu17ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu16ll(Test_BFu0s_BFu17ll_BFu16ll, "BFu0s_BFu17ll_BFu16ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu16s");
    static BFu0s_BFu17ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 1, 16, 1, "BFu0s_BFu17ll_BFu16s");
    set_bf_and_test(lv, v2, 2, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu17ll_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu16s(Test_BFu0s_BFu17ll_BFu16s, "BFu0s_BFu17ll_BFu16s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu17i");
    static BFu0s_BFu17ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFu0s_BFu17ll_BFu17i");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu17i(Test_BFu0s_BFu17ll_BFu17i, "BFu0s_BFu17ll_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu17ll");
    static BFu0s_BFu17ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, 1, "BFu0s_BFu17ll_BFu17ll");
    set_bf_and_test(lv, v2, 2, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu17ll(Test_BFu0s_BFu17ll_BFu17ll, "BFu0s_BFu17ll_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu1c");
    static BFu0s_BFu17ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu1c");
    set_bf_and_test(lv, v2, 2, 1, 1, 1, "BFu0s_BFu17ll_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu1c(Test_BFu0s_BFu17ll_BFu1c, "BFu0s_BFu17ll_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu1i");
    static BFu0s_BFu17ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu1i");
    set_bf_and_test(lv, v2, 2, 1, 1, 1, "BFu0s_BFu17ll_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu1i(Test_BFu0s_BFu17ll_BFu1i, "BFu0s_BFu17ll_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu1ll");
    static BFu0s_BFu17ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu1ll");
    set_bf_and_test(lv, v2, 2, 1, 1, 1, "BFu0s_BFu17ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu1ll(Test_BFu0s_BFu17ll_BFu1ll, "BFu0s_BFu17ll_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu1s");
    static BFu0s_BFu17ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu1s");
    set_bf_and_test(lv, v2, 2, 1, 1, 1, "BFu0s_BFu17ll_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu1s(Test_BFu0s_BFu17ll_BFu1s, "BFu0s_BFu17ll_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu31i");
    static BFu0s_BFu17ll_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu17ll_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu31i");
    set_bf_and_test(lv, v2, 2, 1, 31, 1, "BFu0s_BFu17ll_BFu31i");
    set_bf_and_test(lv, v2, 2, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu17ll_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu31i(Test_BFu0s_BFu17ll_BFu31i, "BFu0s_BFu17ll_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu31ll");
    static BFu0s_BFu17ll_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu17ll_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu31ll");
    set_bf_and_test(lv, v2, 2, 1, 31, 1, "BFu0s_BFu17ll_BFu31ll");
    set_bf_and_test(lv, v2, 2, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu17ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu31ll(Test_BFu0s_BFu17ll_BFu31ll, "BFu0s_BFu17ll_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu32i");
    static BFu0s_BFu17ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17ll_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu32i");
    set_bf_and_test(lv, v2, 2, 1, 32, 1, "BFu0s_BFu17ll_BFu32i");
    set_bf_and_test(lv, v2, 2, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu17ll_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu32i(Test_BFu0s_BFu17ll_BFu32i, "BFu0s_BFu17ll_BFu32i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu32ll");
    static BFu0s_BFu17ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17ll_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu32ll");
    set_bf_and_test(lv, v2, 2, 1, 32, 1, "BFu0s_BFu17ll_BFu32ll");
    set_bf_and_test(lv, v2, 2, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu17ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu32ll(Test_BFu0s_BFu17ll_BFu32ll, "BFu0s_BFu17ll_BFu32ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu33()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu33");
    static BFu0s_BFu17ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17ll_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu33");
    set_bf_and_test(lv, v2, 2, 1, 33, 1, "BFu0s_BFu17ll_BFu33");
    set_bf_and_test(lv, v2, 2, 1, 33, hide_ull(1LL<<32), "BFu0s_BFu17ll_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu33(Test_BFu0s_BFu17ll_BFu33, "BFu0s_BFu17ll_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu7c");
    static BFu0s_BFu17ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17ll_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu7c");
    set_bf_and_test(lv, v2, 2, 1, 7, 1, "BFu0s_BFu17ll_BFu7c");
    set_bf_and_test(lv, v2, 2, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu17ll_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu7c(Test_BFu0s_BFu17ll_BFu7c, "BFu0s_BFu17ll_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu7i");
    static BFu0s_BFu17ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17ll_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu7i");
    set_bf_and_test(lv, v2, 2, 1, 7, 1, "BFu0s_BFu17ll_BFu7i");
    set_bf_and_test(lv, v2, 2, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu17ll_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu7i(Test_BFu0s_BFu17ll_BFu7i, "BFu0s_BFu17ll_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu7ll");
    static BFu0s_BFu17ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17ll_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu7ll");
    set_bf_and_test(lv, v2, 2, 1, 7, 1, "BFu0s_BFu17ll_BFu7ll");
    set_bf_and_test(lv, v2, 2, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu17ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu7ll(Test_BFu0s_BFu17ll_BFu7ll, "BFu0s_BFu17ll_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu7s");
    static BFu0s_BFu17ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu17ll_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu7s");
    set_bf_and_test(lv, v2, 2, 1, 7, 1, "BFu0s_BFu17ll_BFu7s");
    set_bf_and_test(lv, v2, 2, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu17ll_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu7s(Test_BFu0s_BFu17ll_BFu7s, "BFu0s_BFu17ll_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu8c");
    static BFu0s_BFu17ll_BFu8c lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu8c");
    set_bf_and_test(lv, v2, 2, 1, 8, 1, "BFu0s_BFu17ll_BFu8c");
    set_bf_and_test(lv, v2, 2, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu17ll_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu8c(Test_BFu0s_BFu17ll_BFu8c, "BFu0s_BFu17ll_BFu8c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu8i");
    static BFu0s_BFu17ll_BFu8i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu8i");
    set_bf_and_test(lv, v2, 2, 1, 8, 1, "BFu0s_BFu17ll_BFu8i");
    set_bf_and_test(lv, v2, 2, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu17ll_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu8i(Test_BFu0s_BFu17ll_BFu8i, "BFu0s_BFu17ll_BFu8i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu8ll");
    static BFu0s_BFu17ll_BFu8ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu8ll");
    set_bf_and_test(lv, v2, 2, 1, 8, 1, "BFu0s_BFu17ll_BFu8ll");
    set_bf_and_test(lv, v2, 2, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu17ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu8ll(Test_BFu0s_BFu17ll_BFu8ll, "BFu0s_BFu17ll_BFu8ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu8s");
    static BFu0s_BFu17ll_BFu8s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu8s");
    set_bf_and_test(lv, v2, 2, 1, 8, 1, "BFu0s_BFu17ll_BFu8s");
    set_bf_and_test(lv, v2, 2, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu17ll_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu8s(Test_BFu0s_BFu17ll_BFu8s, "BFu0s_BFu17ll_BFu8s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu9i");
    static BFu0s_BFu17ll_BFu9i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu9i");
    set_bf_and_test(lv, v2, 2, 1, 9, 1, "BFu0s_BFu17ll_BFu9i");
    set_bf_and_test(lv, v2, 2, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu17ll_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu9i(Test_BFu0s_BFu17ll_BFu9i, "BFu0s_BFu17ll_BFu9i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu9ll");
    static BFu0s_BFu17ll_BFu9ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu9ll");
    set_bf_and_test(lv, v2, 2, 1, 9, 1, "BFu0s_BFu17ll_BFu9ll");
    set_bf_and_test(lv, v2, 2, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu17ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu9ll(Test_BFu0s_BFu17ll_BFu9ll, "BFu0s_BFu17ll_BFu9ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu17ll_BFu9s");
    static BFu0s_BFu17ll_BFu9s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_BFu9s");
    set_bf_and_test(lv, v2, 2, 1, 9, 1, "BFu0s_BFu17ll_BFu9s");
    set_bf_and_test(lv, v2, 2, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu17ll_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_BFu9s(Test_BFu0s_BFu17ll_BFu9s, "BFu0s_BFu17ll_BFu9s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_C()
{
  {
    init_simple_test("BFu0s_BFu17ll_C");
    static BFu0s_BFu17ll_C lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_C");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_C");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_C(Test_BFu0s_BFu17ll_C, "BFu0s_BFu17ll_C", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_D()
{
  {
    init_simple_test("BFu0s_BFu17ll_D");
    static BFu0s_BFu17ll_D lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_BFu17ll_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_D");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_D");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_D(Test_BFu0s_BFu17ll_D, "BFu0s_BFu17ll_D", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_F()
{
  {
    init_simple_test("BFu0s_BFu17ll_F");
    static BFu0s_BFu17ll_F lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17ll_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_F");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_F");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_F(Test_BFu0s_BFu17ll_F, "BFu0s_BFu17ll_F", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_I()
{
  {
    init_simple_test("BFu0s_BFu17ll_I");
    static BFu0s_BFu17ll_I lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17ll_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_I");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_I");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_I(Test_BFu0s_BFu17ll_I, "BFu0s_BFu17ll_I", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_Ip()
{
  {
    init_simple_test("BFu0s_BFu17ll_Ip");
    static BFu0s_BFu17ll_Ip lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu0s_BFu17ll_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_Ip");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_Ip(Test_BFu0s_BFu17ll_Ip, "BFu0s_BFu17ll_Ip", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_L()
{
  {
    init_simple_test("BFu0s_BFu17ll_L");
    static BFu0s_BFu17ll_L lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_BFu17ll_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_L");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_L");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_L(Test_BFu0s_BFu17ll_L, "BFu0s_BFu17ll_L", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_S()
{
  {
    init_simple_test("BFu0s_BFu17ll_S");
    static BFu0s_BFu17ll_S lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17ll_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_S");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_S");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_S(Test_BFu0s_BFu17ll_S, "BFu0s_BFu17ll_S", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_Uc()
{
  {
    init_simple_test("BFu0s_BFu17ll_Uc");
    static BFu0s_BFu17ll_Uc lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu17ll_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_Uc");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_Uc(Test_BFu0s_BFu17ll_Uc, "BFu0s_BFu17ll_Uc", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_Ui()
{
  {
    init_simple_test("BFu0s_BFu17ll_Ui");
    static BFu0s_BFu17ll_Ui lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu17ll_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_Ui");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_Ui(Test_BFu0s_BFu17ll_Ui, "BFu0s_BFu17ll_Ui", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_Ul()
{
  {
    init_simple_test("BFu0s_BFu17ll_Ul");
    static BFu0s_BFu17ll_Ul lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_BFu17ll_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_Ul");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_Ul(Test_BFu0s_BFu17ll_Ul, "BFu0s_BFu17ll_Ul", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_Us()
{
  {
    init_simple_test("BFu0s_BFu17ll_Us");
    static BFu0s_BFu17ll_Us lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu17ll_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_Us");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_Us(Test_BFu0s_BFu17ll_Us, "BFu0s_BFu17ll_Us", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu17ll_Vp()
{
  {
    init_simple_test("BFu0s_BFu17ll_Vp");
    static BFu0s_BFu17ll_Vp lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu0s_BFu17ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu17ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 17, 1, "BFu0s_BFu17ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu17ll_Vp");
    check_field_offset(lv, v2, 3, "BFu0s_BFu17ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu17ll_Vp(Test_BFu0s_BFu17ll_Vp, "BFu0s_BFu17ll_Vp", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu1c");
    static BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c(Test_BFu0s_BFu1c, "BFu0s_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu0c");
    static BFu0s_BFu1c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu0c(Test_BFu0s_BFu1c_BFu0c, "BFu0s_BFu1c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu0i");
    static BFu0s_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu1c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu0i(Test_BFu0s_BFu1c_BFu0i, "BFu0s_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu0ll");
    static BFu0s_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu1c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu0ll(Test_BFu0s_BFu1c_BFu0ll, "BFu0s_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu0s");
    static BFu0s_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu1c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu0s(Test_BFu0s_BFu1c_BFu0s, "BFu0s_BFu1c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu15i");
    static BFu0s_BFu1c_BFu15i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu15i");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1c_BFu15i");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1c_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu15i(Test_BFu0s_BFu1c_BFu15i, "BFu0s_BFu1c_BFu15i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu15ll");
    static BFu0s_BFu1c_BFu15ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu15ll");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1c_BFu15ll");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1c_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu15ll(Test_BFu0s_BFu1c_BFu15ll, "BFu0s_BFu1c_BFu15ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu15s");
    static BFu0s_BFu1c_BFu15s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu15s");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1c_BFu15s");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1c_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu15s(Test_BFu0s_BFu1c_BFu15s, "BFu0s_BFu1c_BFu15s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu16i");
    static BFu0s_BFu1c_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1c_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu16i");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1c_BFu16i");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1c_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu16i(Test_BFu0s_BFu1c_BFu16i, "BFu0s_BFu1c_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu16ll");
    static BFu0s_BFu1c_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1c_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu16ll");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1c_BFu16ll");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1c_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu16ll(Test_BFu0s_BFu1c_BFu16ll, "BFu0s_BFu1c_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu16s");
    static BFu0s_BFu1c_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1c_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu16s");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1c_BFu16s");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1c_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu16s(Test_BFu0s_BFu1c_BFu16s, "BFu0s_BFu1c_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu17i");
    static BFu0s_BFu1c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1c_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu17i");
    set_bf_and_test(lv, v2, 0, 1, 17, 1, "BFu0s_BFu1c_BFu17i");
    set_bf_and_test(lv, v2, 0, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu1c_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu17i(Test_BFu0s_BFu1c_BFu17i, "BFu0s_BFu1c_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu17ll");
    static BFu0s_BFu1c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1c_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu17ll");
    set_bf_and_test(lv, v2, 0, 1, 17, 1, "BFu0s_BFu1c_BFu17ll");
    set_bf_and_test(lv, v2, 0, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu1c_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu17ll(Test_BFu0s_BFu1c_BFu17ll, "BFu0s_BFu1c_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu1c");
    static BFu0s_BFu1c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1c_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu1c(Test_BFu0s_BFu1c_BFu1c, "BFu0s_BFu1c_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu1i");
    static BFu0s_BFu1c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1c_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu1i(Test_BFu0s_BFu1c_BFu1i, "BFu0s_BFu1c_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu1ll");
    static BFu0s_BFu1c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1c_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu1ll(Test_BFu0s_BFu1c_BFu1ll, "BFu0s_BFu1c_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu1s");
    static BFu0s_BFu1c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1c_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu1s(Test_BFu0s_BFu1c_BFu1s, "BFu0s_BFu1c_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu31i");
    static BFu0s_BFu1c_BFu31i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu1c_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu31i");
    set_bf_and_test(lv, v2, 0, 1, 31, 1, "BFu0s_BFu1c_BFu31i");
    set_bf_and_test(lv, v2, 0, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu1c_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu31i(Test_BFu0s_BFu1c_BFu31i, "BFu0s_BFu1c_BFu31i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu31ll");
    static BFu0s_BFu1c_BFu31ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu1c_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu31ll");
    set_bf_and_test(lv, v2, 0, 1, 31, 1, "BFu0s_BFu1c_BFu31ll");
    set_bf_and_test(lv, v2, 0, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu1c_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu31ll(Test_BFu0s_BFu1c_BFu31ll, "BFu0s_BFu1c_BFu31ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu32i");
    static BFu0s_BFu1c_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1c_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu32i");
    set_bf_and_test(lv, v2, 0, 1, 32, 1, "BFu0s_BFu1c_BFu32i");
    set_bf_and_test(lv, v2, 0, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu1c_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu32i(Test_BFu0s_BFu1c_BFu32i, "BFu0s_BFu1c_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu32ll");
    static BFu0s_BFu1c_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1c_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu32ll");
    set_bf_and_test(lv, v2, 0, 1, 32, 1, "BFu0s_BFu1c_BFu32ll");
    set_bf_and_test(lv, v2, 0, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu1c_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu32ll(Test_BFu0s_BFu1c_BFu32ll, "BFu0s_BFu1c_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu33()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu33");
    static BFu0s_BFu1c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1c_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu33");
    set_bf_and_test(lv, v2, 0, 1, 33, 1, "BFu0s_BFu1c_BFu33");
    set_bf_and_test(lv, v2, 0, 1, 33, hide_ull(1LL<<32), "BFu0s_BFu1c_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu33(Test_BFu0s_BFu1c_BFu33, "BFu0s_BFu1c_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu7c");
    static BFu0s_BFu1c_BFu7c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1c_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu7c");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1c_BFu7c");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1c_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu7c(Test_BFu0s_BFu1c_BFu7c, "BFu0s_BFu1c_BFu7c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu7i");
    static BFu0s_BFu1c_BFu7i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1c_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu7i");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1c_BFu7i");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1c_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu7i(Test_BFu0s_BFu1c_BFu7i, "BFu0s_BFu1c_BFu7i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu7ll");
    static BFu0s_BFu1c_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1c_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu7ll");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1c_BFu7ll");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1c_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu7ll(Test_BFu0s_BFu1c_BFu7ll, "BFu0s_BFu1c_BFu7ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu7s");
    static BFu0s_BFu1c_BFu7s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1c_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu7s");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1c_BFu7s");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1c_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu7s(Test_BFu0s_BFu1c_BFu7s, "BFu0s_BFu1c_BFu7s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu8c");
    static BFu0s_BFu1c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu8c");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1c_BFu8c");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1c_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu8c(Test_BFu0s_BFu1c_BFu8c, "BFu0s_BFu1c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu8i");
    static BFu0s_BFu1c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu8i");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1c_BFu8i");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1c_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu8i(Test_BFu0s_BFu1c_BFu8i, "BFu0s_BFu1c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu8ll");
    static BFu0s_BFu1c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu8ll");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1c_BFu8ll");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1c_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu8ll(Test_BFu0s_BFu1c_BFu8ll, "BFu0s_BFu1c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu8s");
    static BFu0s_BFu1c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu8s");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1c_BFu8s");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1c_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu8s(Test_BFu0s_BFu1c_BFu8s, "BFu0s_BFu1c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu9i");
    static BFu0s_BFu1c_BFu9i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu9i");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1c_BFu9i");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1c_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu9i(Test_BFu0s_BFu1c_BFu9i, "BFu0s_BFu1c_BFu9i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu9ll");
    static BFu0s_BFu1c_BFu9ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu9ll");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1c_BFu9ll");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1c_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu9ll(Test_BFu0s_BFu1c_BFu9ll, "BFu0s_BFu1c_BFu9ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu1c_BFu9s");
    static BFu0s_BFu1c_BFu9s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_BFu9s");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1c_BFu9s");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1c_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_BFu9s(Test_BFu0s_BFu1c_BFu9s, "BFu0s_BFu1c_BFu9s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_C()
{
  {
    init_simple_test("BFu0s_BFu1c_C");
    static BFu0s_BFu1c_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_C)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_C(Test_BFu0s_BFu1c_C, "BFu0s_BFu1c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_D()
{
  {
    init_simple_test("BFu0s_BFu1c_D");
    static BFu0s_BFu1c_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1c_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_D)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_D(Test_BFu0s_BFu1c_D, "BFu0s_BFu1c_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_F()
{
  {
    init_simple_test("BFu0s_BFu1c_F");
    static BFu0s_BFu1c_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1c_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_F)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_F(Test_BFu0s_BFu1c_F, "BFu0s_BFu1c_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_I()
{
  {
    init_simple_test("BFu0s_BFu1c_I");
    static BFu0s_BFu1c_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1c_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_I)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_I(Test_BFu0s_BFu1c_I, "BFu0s_BFu1c_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_Ip()
{
  {
    init_simple_test("BFu0s_BFu1c_Ip");
    static BFu0s_BFu1c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu1c_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_Ip(Test_BFu0s_BFu1c_Ip, "BFu0s_BFu1c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_L()
{
  {
    init_simple_test("BFu0s_BFu1c_L");
    static BFu0s_BFu1c_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1c_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_L)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_L(Test_BFu0s_BFu1c_L, "BFu0s_BFu1c_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_S()
{
  {
    init_simple_test("BFu0s_BFu1c_S");
    static BFu0s_BFu1c_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1c_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_S)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_S(Test_BFu0s_BFu1c_S, "BFu0s_BFu1c_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_Uc()
{
  {
    init_simple_test("BFu0s_BFu1c_Uc");
    static BFu0s_BFu1c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1c_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_Uc(Test_BFu0s_BFu1c_Uc, "BFu0s_BFu1c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_Ui()
{
  {
    init_simple_test("BFu0s_BFu1c_Ui");
    static BFu0s_BFu1c_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1c_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_Ui(Test_BFu0s_BFu1c_Ui, "BFu0s_BFu1c_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_Ul()
{
  {
    init_simple_test("BFu0s_BFu1c_Ul");
    static BFu0s_BFu1c_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1c_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_Ul(Test_BFu0s_BFu1c_Ul, "BFu0s_BFu1c_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_Us()
{
  {
    init_simple_test("BFu0s_BFu1c_Us");
    static BFu0s_BFu1c_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1c_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_Us(Test_BFu0s_BFu1c_Us, "BFu0s_BFu1c_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1c_Vp()
{
  {
    init_simple_test("BFu0s_BFu1c_Vp");
    static BFu0s_BFu1c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu1c_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1c_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1c_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1c_Vp(Test_BFu0s_BFu1c_Vp, "BFu0s_BFu1c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu1i");
    static BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i(Test_BFu0s_BFu1i, "BFu0s_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu0c");
    static BFu0s_BFu1i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu0c(Test_BFu0s_BFu1i_BFu0c, "BFu0s_BFu1i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu0i");
    static BFu0s_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu1i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu0i(Test_BFu0s_BFu1i_BFu0i, "BFu0s_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu0ll");
    static BFu0s_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu1i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu0ll(Test_BFu0s_BFu1i_BFu0ll, "BFu0s_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu0s");
    static BFu0s_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu1i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu0s(Test_BFu0s_BFu1i_BFu0s, "BFu0s_BFu1i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu15i");
    static BFu0s_BFu1i_BFu15i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu15i");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1i_BFu15i");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1i_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu15i(Test_BFu0s_BFu1i_BFu15i, "BFu0s_BFu1i_BFu15i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu15ll");
    static BFu0s_BFu1i_BFu15ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu15ll");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1i_BFu15ll");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1i_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu15ll(Test_BFu0s_BFu1i_BFu15ll, "BFu0s_BFu1i_BFu15ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu15s");
    static BFu0s_BFu1i_BFu15s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu15s");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1i_BFu15s");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1i_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu15s(Test_BFu0s_BFu1i_BFu15s, "BFu0s_BFu1i_BFu15s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu16i");
    static BFu0s_BFu1i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu16i");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1i_BFu16i");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1i_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu16i(Test_BFu0s_BFu1i_BFu16i, "BFu0s_BFu1i_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu16ll");
    static BFu0s_BFu1i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu16ll");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1i_BFu16ll");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1i_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu16ll(Test_BFu0s_BFu1i_BFu16ll, "BFu0s_BFu1i_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu16s");
    static BFu0s_BFu1i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu16s");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1i_BFu16s");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1i_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu16s(Test_BFu0s_BFu1i_BFu16s, "BFu0s_BFu1i_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu17i");
    static BFu0s_BFu1i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu17i");
    set_bf_and_test(lv, v2, 0, 1, 17, 1, "BFu0s_BFu1i_BFu17i");
    set_bf_and_test(lv, v2, 0, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu1i_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu17i(Test_BFu0s_BFu1i_BFu17i, "BFu0s_BFu1i_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu17ll");
    static BFu0s_BFu1i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu17ll");
    set_bf_and_test(lv, v2, 0, 1, 17, 1, "BFu0s_BFu1i_BFu17ll");
    set_bf_and_test(lv, v2, 0, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu1i_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu17ll(Test_BFu0s_BFu1i_BFu17ll, "BFu0s_BFu1i_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu1c");
    static BFu0s_BFu1i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1i_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu1c(Test_BFu0s_BFu1i_BFu1c, "BFu0s_BFu1i_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu1i");
    static BFu0s_BFu1i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1i_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu1i(Test_BFu0s_BFu1i_BFu1i, "BFu0s_BFu1i_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu1ll");
    static BFu0s_BFu1i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1i_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu1ll(Test_BFu0s_BFu1i_BFu1ll, "BFu0s_BFu1i_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu1s");
    static BFu0s_BFu1i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1i_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu1s(Test_BFu0s_BFu1i_BFu1s, "BFu0s_BFu1i_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu31i");
    static BFu0s_BFu1i_BFu31i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu1i_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu31i");
    set_bf_and_test(lv, v2, 0, 1, 31, 1, "BFu0s_BFu1i_BFu31i");
    set_bf_and_test(lv, v2, 0, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu1i_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu31i(Test_BFu0s_BFu1i_BFu31i, "BFu0s_BFu1i_BFu31i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu31ll");
    static BFu0s_BFu1i_BFu31ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu1i_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu31ll");
    set_bf_and_test(lv, v2, 0, 1, 31, 1, "BFu0s_BFu1i_BFu31ll");
    set_bf_and_test(lv, v2, 0, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu1i_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu31ll(Test_BFu0s_BFu1i_BFu31ll, "BFu0s_BFu1i_BFu31ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu32i");
    static BFu0s_BFu1i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1i_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu32i");
    set_bf_and_test(lv, v2, 0, 1, 32, 1, "BFu0s_BFu1i_BFu32i");
    set_bf_and_test(lv, v2, 0, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu1i_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu32i(Test_BFu0s_BFu1i_BFu32i, "BFu0s_BFu1i_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu32ll");
    static BFu0s_BFu1i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1i_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu32ll");
    set_bf_and_test(lv, v2, 0, 1, 32, 1, "BFu0s_BFu1i_BFu32ll");
    set_bf_and_test(lv, v2, 0, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu1i_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu32ll(Test_BFu0s_BFu1i_BFu32ll, "BFu0s_BFu1i_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu33()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu33");
    static BFu0s_BFu1i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1i_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu33");
    set_bf_and_test(lv, v2, 0, 1, 33, 1, "BFu0s_BFu1i_BFu33");
    set_bf_and_test(lv, v2, 0, 1, 33, hide_ull(1LL<<32), "BFu0s_BFu1i_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu33(Test_BFu0s_BFu1i_BFu33, "BFu0s_BFu1i_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu7c");
    static BFu0s_BFu1i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1i_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu7c");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1i_BFu7c");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1i_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu7c(Test_BFu0s_BFu1i_BFu7c, "BFu0s_BFu1i_BFu7c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu7i");
    static BFu0s_BFu1i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1i_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu7i");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1i_BFu7i");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1i_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu7i(Test_BFu0s_BFu1i_BFu7i, "BFu0s_BFu1i_BFu7i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu7ll");
    static BFu0s_BFu1i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1i_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu7ll");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1i_BFu7ll");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1i_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu7ll(Test_BFu0s_BFu1i_BFu7ll, "BFu0s_BFu1i_BFu7ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu7s");
    static BFu0s_BFu1i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1i_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu7s");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1i_BFu7s");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1i_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu7s(Test_BFu0s_BFu1i_BFu7s, "BFu0s_BFu1i_BFu7s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu8c");
    static BFu0s_BFu1i_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu8c");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1i_BFu8c");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1i_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu8c(Test_BFu0s_BFu1i_BFu8c, "BFu0s_BFu1i_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu8i");
    static BFu0s_BFu1i_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu8i");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1i_BFu8i");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1i_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu8i(Test_BFu0s_BFu1i_BFu8i, "BFu0s_BFu1i_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu8ll");
    static BFu0s_BFu1i_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu8ll");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1i_BFu8ll");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1i_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu8ll(Test_BFu0s_BFu1i_BFu8ll, "BFu0s_BFu1i_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu8s");
    static BFu0s_BFu1i_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu8s");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1i_BFu8s");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1i_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu8s(Test_BFu0s_BFu1i_BFu8s, "BFu0s_BFu1i_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu9i");
    static BFu0s_BFu1i_BFu9i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu9i");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1i_BFu9i");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1i_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu9i(Test_BFu0s_BFu1i_BFu9i, "BFu0s_BFu1i_BFu9i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu9ll");
    static BFu0s_BFu1i_BFu9ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu9ll");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1i_BFu9ll");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1i_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu9ll(Test_BFu0s_BFu1i_BFu9ll, "BFu0s_BFu1i_BFu9ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu1i_BFu9s");
    static BFu0s_BFu1i_BFu9s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_BFu9s");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1i_BFu9s");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1i_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_BFu9s(Test_BFu0s_BFu1i_BFu9s, "BFu0s_BFu1i_BFu9s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_C()
{
  {
    init_simple_test("BFu0s_BFu1i_C");
    static BFu0s_BFu1i_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_C)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_C(Test_BFu0s_BFu1i_C, "BFu0s_BFu1i_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_D()
{
  {
    init_simple_test("BFu0s_BFu1i_D");
    static BFu0s_BFu1i_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1i_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_D)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_D(Test_BFu0s_BFu1i_D, "BFu0s_BFu1i_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_F()
{
  {
    init_simple_test("BFu0s_BFu1i_F");
    static BFu0s_BFu1i_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1i_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_F)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_F(Test_BFu0s_BFu1i_F, "BFu0s_BFu1i_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_I()
{
  {
    init_simple_test("BFu0s_BFu1i_I");
    static BFu0s_BFu1i_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1i_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_I)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_I(Test_BFu0s_BFu1i_I, "BFu0s_BFu1i_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_Ip()
{
  {
    init_simple_test("BFu0s_BFu1i_Ip");
    static BFu0s_BFu1i_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu1i_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_Ip(Test_BFu0s_BFu1i_Ip, "BFu0s_BFu1i_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_L()
{
  {
    init_simple_test("BFu0s_BFu1i_L");
    static BFu0s_BFu1i_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1i_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_L)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_L(Test_BFu0s_BFu1i_L, "BFu0s_BFu1i_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_S()
{
  {
    init_simple_test("BFu0s_BFu1i_S");
    static BFu0s_BFu1i_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1i_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_S)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_S(Test_BFu0s_BFu1i_S, "BFu0s_BFu1i_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_Uc()
{
  {
    init_simple_test("BFu0s_BFu1i_Uc");
    static BFu0s_BFu1i_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1i_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_Uc(Test_BFu0s_BFu1i_Uc, "BFu0s_BFu1i_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_Ui()
{
  {
    init_simple_test("BFu0s_BFu1i_Ui");
    static BFu0s_BFu1i_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1i_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_Ui(Test_BFu0s_BFu1i_Ui, "BFu0s_BFu1i_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_Ul()
{
  {
    init_simple_test("BFu0s_BFu1i_Ul");
    static BFu0s_BFu1i_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1i_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_Ul(Test_BFu0s_BFu1i_Ul, "BFu0s_BFu1i_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_Us()
{
  {
    init_simple_test("BFu0s_BFu1i_Us");
    static BFu0s_BFu1i_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1i_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_Us(Test_BFu0s_BFu1i_Us, "BFu0s_BFu1i_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1i_Vp()
{
  {
    init_simple_test("BFu0s_BFu1i_Vp");
    static BFu0s_BFu1i_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu1i_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1i_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1i_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1i_Vp(Test_BFu0s_BFu1i_Vp, "BFu0s_BFu1i_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu1ll");
    static BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll(Test_BFu0s_BFu1ll, "BFu0s_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu0c");
    static BFu0s_BFu1ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu0c(Test_BFu0s_BFu1ll_BFu0c, "BFu0s_BFu1ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu0i");
    static BFu0s_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu1ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu0i(Test_BFu0s_BFu1ll_BFu0i, "BFu0s_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu0ll");
    static BFu0s_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu0ll(Test_BFu0s_BFu1ll_BFu0ll, "BFu0s_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu0s");
    static BFu0s_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu1ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu0s(Test_BFu0s_BFu1ll_BFu0s, "BFu0s_BFu1ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu15i");
    static BFu0s_BFu1ll_BFu15i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu15i");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1ll_BFu15i");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1ll_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu15i(Test_BFu0s_BFu1ll_BFu15i, "BFu0s_BFu1ll_BFu15i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu15ll");
    static BFu0s_BFu1ll_BFu15ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu15ll");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1ll_BFu15ll");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu15ll(Test_BFu0s_BFu1ll_BFu15ll, "BFu0s_BFu1ll_BFu15ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu15s");
    static BFu0s_BFu1ll_BFu15s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu15s");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1ll_BFu15s");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1ll_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu15s(Test_BFu0s_BFu1ll_BFu15s, "BFu0s_BFu1ll_BFu15s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu16i");
    static BFu0s_BFu1ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu16i");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1ll_BFu16i");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1ll_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu16i(Test_BFu0s_BFu1ll_BFu16i, "BFu0s_BFu1ll_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu16ll");
    static BFu0s_BFu1ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu16ll");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1ll_BFu16ll");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu16ll(Test_BFu0s_BFu1ll_BFu16ll, "BFu0s_BFu1ll_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu16s");
    static BFu0s_BFu1ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu16s");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1ll_BFu16s");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1ll_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu16s(Test_BFu0s_BFu1ll_BFu16s, "BFu0s_BFu1ll_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu17i");
    static BFu0s_BFu1ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu17i");
    set_bf_and_test(lv, v2, 0, 1, 17, 1, "BFu0s_BFu1ll_BFu17i");
    set_bf_and_test(lv, v2, 0, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu1ll_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu17i(Test_BFu0s_BFu1ll_BFu17i, "BFu0s_BFu1ll_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu17ll");
    static BFu0s_BFu1ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu17ll");
    set_bf_and_test(lv, v2, 0, 1, 17, 1, "BFu0s_BFu1ll_BFu17ll");
    set_bf_and_test(lv, v2, 0, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu1ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu17ll(Test_BFu0s_BFu1ll_BFu17ll, "BFu0s_BFu1ll_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu1c");
    static BFu0s_BFu1ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1ll_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu1c(Test_BFu0s_BFu1ll_BFu1c, "BFu0s_BFu1ll_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu1i");
    static BFu0s_BFu1ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1ll_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu1i(Test_BFu0s_BFu1ll_BFu1i, "BFu0s_BFu1ll_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu1ll");
    static BFu0s_BFu1ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu1ll(Test_BFu0s_BFu1ll_BFu1ll, "BFu0s_BFu1ll_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu1s");
    static BFu0s_BFu1ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1ll_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu1s(Test_BFu0s_BFu1ll_BFu1s, "BFu0s_BFu1ll_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu31i");
    static BFu0s_BFu1ll_BFu31i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu1ll_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu31i");
    set_bf_and_test(lv, v2, 0, 1, 31, 1, "BFu0s_BFu1ll_BFu31i");
    set_bf_and_test(lv, v2, 0, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu1ll_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu31i(Test_BFu0s_BFu1ll_BFu31i, "BFu0s_BFu1ll_BFu31i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu31ll");
    static BFu0s_BFu1ll_BFu31ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu1ll_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu31ll");
    set_bf_and_test(lv, v2, 0, 1, 31, 1, "BFu0s_BFu1ll_BFu31ll");
    set_bf_and_test(lv, v2, 0, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu1ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu31ll(Test_BFu0s_BFu1ll_BFu31ll, "BFu0s_BFu1ll_BFu31ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu32i");
    static BFu0s_BFu1ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1ll_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu32i");
    set_bf_and_test(lv, v2, 0, 1, 32, 1, "BFu0s_BFu1ll_BFu32i");
    set_bf_and_test(lv, v2, 0, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu1ll_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu32i(Test_BFu0s_BFu1ll_BFu32i, "BFu0s_BFu1ll_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu32ll");
    static BFu0s_BFu1ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1ll_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu32ll");
    set_bf_and_test(lv, v2, 0, 1, 32, 1, "BFu0s_BFu1ll_BFu32ll");
    set_bf_and_test(lv, v2, 0, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu1ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu32ll(Test_BFu0s_BFu1ll_BFu32ll, "BFu0s_BFu1ll_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu33()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu33");
    static BFu0s_BFu1ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1ll_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu33");
    set_bf_and_test(lv, v2, 0, 1, 33, 1, "BFu0s_BFu1ll_BFu33");
    set_bf_and_test(lv, v2, 0, 1, 33, hide_ull(1LL<<32), "BFu0s_BFu1ll_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu33(Test_BFu0s_BFu1ll_BFu33, "BFu0s_BFu1ll_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu7c");
    static BFu0s_BFu1ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1ll_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu7c");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1ll_BFu7c");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1ll_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu7c(Test_BFu0s_BFu1ll_BFu7c, "BFu0s_BFu1ll_BFu7c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu7i");
    static BFu0s_BFu1ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1ll_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu7i");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1ll_BFu7i");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1ll_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu7i(Test_BFu0s_BFu1ll_BFu7i, "BFu0s_BFu1ll_BFu7i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu7ll");
    static BFu0s_BFu1ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1ll_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu7ll");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1ll_BFu7ll");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu7ll(Test_BFu0s_BFu1ll_BFu7ll, "BFu0s_BFu1ll_BFu7ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu7s");
    static BFu0s_BFu1ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1ll_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu7s");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1ll_BFu7s");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1ll_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu7s(Test_BFu0s_BFu1ll_BFu7s, "BFu0s_BFu1ll_BFu7s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu8c");
    static BFu0s_BFu1ll_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu8c");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1ll_BFu8c");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1ll_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu8c(Test_BFu0s_BFu1ll_BFu8c, "BFu0s_BFu1ll_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu8i");
    static BFu0s_BFu1ll_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu8i");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1ll_BFu8i");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1ll_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu8i(Test_BFu0s_BFu1ll_BFu8i, "BFu0s_BFu1ll_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu8ll");
    static BFu0s_BFu1ll_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu8ll");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1ll_BFu8ll");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu8ll(Test_BFu0s_BFu1ll_BFu8ll, "BFu0s_BFu1ll_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu8s");
    static BFu0s_BFu1ll_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu8s");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1ll_BFu8s");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1ll_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu8s(Test_BFu0s_BFu1ll_BFu8s, "BFu0s_BFu1ll_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu9i");
    static BFu0s_BFu1ll_BFu9i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu9i");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1ll_BFu9i");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1ll_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu9i(Test_BFu0s_BFu1ll_BFu9i, "BFu0s_BFu1ll_BFu9i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu9ll");
    static BFu0s_BFu1ll_BFu9ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu9ll");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1ll_BFu9ll");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu9ll(Test_BFu0s_BFu1ll_BFu9ll, "BFu0s_BFu1ll_BFu9ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu1ll_BFu9s");
    static BFu0s_BFu1ll_BFu9s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_BFu9s");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1ll_BFu9s");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1ll_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_BFu9s(Test_BFu0s_BFu1ll_BFu9s, "BFu0s_BFu1ll_BFu9s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_C()
{
  {
    init_simple_test("BFu0s_BFu1ll_C");
    static BFu0s_BFu1ll_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_C(Test_BFu0s_BFu1ll_C, "BFu0s_BFu1ll_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_D()
{
  {
    init_simple_test("BFu0s_BFu1ll_D");
    static BFu0s_BFu1ll_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1ll_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_D(Test_BFu0s_BFu1ll_D, "BFu0s_BFu1ll_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_F()
{
  {
    init_simple_test("BFu0s_BFu1ll_F");
    static BFu0s_BFu1ll_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1ll_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_F(Test_BFu0s_BFu1ll_F, "BFu0s_BFu1ll_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_I()
{
  {
    init_simple_test("BFu0s_BFu1ll_I");
    static BFu0s_BFu1ll_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1ll_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_I(Test_BFu0s_BFu1ll_I, "BFu0s_BFu1ll_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_Ip()
{
  {
    init_simple_test("BFu0s_BFu1ll_Ip");
    static BFu0s_BFu1ll_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu1ll_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_Ip(Test_BFu0s_BFu1ll_Ip, "BFu0s_BFu1ll_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_L()
{
  {
    init_simple_test("BFu0s_BFu1ll_L");
    static BFu0s_BFu1ll_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1ll_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_L(Test_BFu0s_BFu1ll_L, "BFu0s_BFu1ll_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_S()
{
  {
    init_simple_test("BFu0s_BFu1ll_S");
    static BFu0s_BFu1ll_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1ll_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_S(Test_BFu0s_BFu1ll_S, "BFu0s_BFu1ll_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_Uc()
{
  {
    init_simple_test("BFu0s_BFu1ll_Uc");
    static BFu0s_BFu1ll_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1ll_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_Uc(Test_BFu0s_BFu1ll_Uc, "BFu0s_BFu1ll_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_Ui()
{
  {
    init_simple_test("BFu0s_BFu1ll_Ui");
    static BFu0s_BFu1ll_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1ll_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_Ui(Test_BFu0s_BFu1ll_Ui, "BFu0s_BFu1ll_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_Ul()
{
  {
    init_simple_test("BFu0s_BFu1ll_Ul");
    static BFu0s_BFu1ll_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1ll_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_Ul(Test_BFu0s_BFu1ll_Ul, "BFu0s_BFu1ll_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_Us()
{
  {
    init_simple_test("BFu0s_BFu1ll_Us");
    static BFu0s_BFu1ll_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1ll_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_Us(Test_BFu0s_BFu1ll_Us, "BFu0s_BFu1ll_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1ll_Vp()
{
  {
    init_simple_test("BFu0s_BFu1ll_Vp");
    static BFu0s_BFu1ll_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu1ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1ll_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1ll_Vp(Test_BFu0s_BFu1ll_Vp, "BFu0s_BFu1ll_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu1s");
    static BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s(Test_BFu0s_BFu1s, "BFu0s_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu0c");
    static BFu0s_BFu1s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu0c(Test_BFu0s_BFu1s_BFu0c, "BFu0s_BFu1s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu0i");
    static BFu0s_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu1s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu0i(Test_BFu0s_BFu1s_BFu0i, "BFu0s_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu0ll");
    static BFu0s_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu1s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu0ll(Test_BFu0s_BFu1s_BFu0ll, "BFu0s_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu0s");
    static BFu0s_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu1s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu0s(Test_BFu0s_BFu1s_BFu0s, "BFu0s_BFu1s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu15i");
    static BFu0s_BFu1s_BFu15i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu15i");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1s_BFu15i");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1s_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu15i(Test_BFu0s_BFu1s_BFu15i, "BFu0s_BFu1s_BFu15i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu15ll");
    static BFu0s_BFu1s_BFu15ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu15ll");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1s_BFu15ll");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1s_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu15ll(Test_BFu0s_BFu1s_BFu15ll, "BFu0s_BFu1s_BFu15ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu15s");
    static BFu0s_BFu1s_BFu15s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu15s");
    set_bf_and_test(lv, v2, 0, 1, 15, 1, "BFu0s_BFu1s_BFu15s");
    set_bf_and_test(lv, v2, 0, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu1s_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu15s(Test_BFu0s_BFu1s_BFu15s, "BFu0s_BFu1s_BFu15s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu16i");
    static BFu0s_BFu1s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu16i");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1s_BFu16i");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1s_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu16i(Test_BFu0s_BFu1s_BFu16i, "BFu0s_BFu1s_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu16ll");
    static BFu0s_BFu1s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu16ll");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1s_BFu16ll");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1s_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu16ll(Test_BFu0s_BFu1s_BFu16ll, "BFu0s_BFu1s_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu16s");
    static BFu0s_BFu1s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu16s");
    set_bf_and_test(lv, v2, 0, 1, 16, 1, "BFu0s_BFu1s_BFu16s");
    set_bf_and_test(lv, v2, 0, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu1s_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu16s(Test_BFu0s_BFu1s_BFu16s, "BFu0s_BFu1s_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu17i");
    static BFu0s_BFu1s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1s_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu17i");
    set_bf_and_test(lv, v2, 0, 1, 17, 1, "BFu0s_BFu1s_BFu17i");
    set_bf_and_test(lv, v2, 0, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu1s_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu17i(Test_BFu0s_BFu1s_BFu17i, "BFu0s_BFu1s_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu17ll");
    static BFu0s_BFu1s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1s_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu17ll");
    set_bf_and_test(lv, v2, 0, 1, 17, 1, "BFu0s_BFu1s_BFu17ll");
    set_bf_and_test(lv, v2, 0, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu1s_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu17ll(Test_BFu0s_BFu1s_BFu17ll, "BFu0s_BFu1s_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu1c");
    static BFu0s_BFu1s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu1c");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1s_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu1c(Test_BFu0s_BFu1s_BFu1c, "BFu0s_BFu1s_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu1i");
    static BFu0s_BFu1s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu1i");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1s_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu1i(Test_BFu0s_BFu1s_BFu1i, "BFu0s_BFu1s_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu1ll");
    static BFu0s_BFu1s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1s_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu1ll(Test_BFu0s_BFu1s_BFu1ll, "BFu0s_BFu1s_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu1s");
    static BFu0s_BFu1s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu1s");
    set_bf_and_test(lv, v2, 0, 1, 1, 1, "BFu0s_BFu1s_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu1s(Test_BFu0s_BFu1s_BFu1s, "BFu0s_BFu1s_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu31i");
    static BFu0s_BFu1s_BFu31i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu1s_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu31i");
    set_bf_and_test(lv, v2, 0, 1, 31, 1, "BFu0s_BFu1s_BFu31i");
    set_bf_and_test(lv, v2, 0, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu1s_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu31i(Test_BFu0s_BFu1s_BFu31i, "BFu0s_BFu1s_BFu31i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu31ll");
    static BFu0s_BFu1s_BFu31ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu1s_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu31ll");
    set_bf_and_test(lv, v2, 0, 1, 31, 1, "BFu0s_BFu1s_BFu31ll");
    set_bf_and_test(lv, v2, 0, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu1s_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu31ll(Test_BFu0s_BFu1s_BFu31ll, "BFu0s_BFu1s_BFu31ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu32i");
    static BFu0s_BFu1s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1s_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu32i");
    set_bf_and_test(lv, v2, 0, 1, 32, 1, "BFu0s_BFu1s_BFu32i");
    set_bf_and_test(lv, v2, 0, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu1s_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu32i(Test_BFu0s_BFu1s_BFu32i, "BFu0s_BFu1s_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu32ll");
    static BFu0s_BFu1s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1s_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu32ll");
    set_bf_and_test(lv, v2, 0, 1, 32, 1, "BFu0s_BFu1s_BFu32ll");
    set_bf_and_test(lv, v2, 0, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu1s_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu32ll(Test_BFu0s_BFu1s_BFu32ll, "BFu0s_BFu1s_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu33()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu33");
    static BFu0s_BFu1s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1s_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu33");
    set_bf_and_test(lv, v2, 0, 1, 33, 1, "BFu0s_BFu1s_BFu33");
    set_bf_and_test(lv, v2, 0, 1, 33, hide_ull(1LL<<32), "BFu0s_BFu1s_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu33(Test_BFu0s_BFu1s_BFu33, "BFu0s_BFu1s_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu7c");
    static BFu0s_BFu1s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1s_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu7c");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1s_BFu7c");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1s_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu7c(Test_BFu0s_BFu1s_BFu7c, "BFu0s_BFu1s_BFu7c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu7i");
    static BFu0s_BFu1s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1s_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu7i");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1s_BFu7i");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1s_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu7i(Test_BFu0s_BFu1s_BFu7i, "BFu0s_BFu1s_BFu7i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu7ll");
    static BFu0s_BFu1s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1s_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu7ll");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1s_BFu7ll");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1s_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu7ll(Test_BFu0s_BFu1s_BFu7ll, "BFu0s_BFu1s_BFu7ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu7s");
    static BFu0s_BFu1s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu1s_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu7s");
    set_bf_and_test(lv, v2, 0, 1, 7, 1, "BFu0s_BFu1s_BFu7s");
    set_bf_and_test(lv, v2, 0, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu1s_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu7s(Test_BFu0s_BFu1s_BFu7s, "BFu0s_BFu1s_BFu7s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu8c");
    static BFu0s_BFu1s_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu8c");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1s_BFu8c");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1s_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu8c(Test_BFu0s_BFu1s_BFu8c, "BFu0s_BFu1s_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu8i");
    static BFu0s_BFu1s_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu8i");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1s_BFu8i");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1s_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu8i(Test_BFu0s_BFu1s_BFu8i, "BFu0s_BFu1s_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu8ll");
    static BFu0s_BFu1s_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu8ll");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1s_BFu8ll");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1s_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu8ll(Test_BFu0s_BFu1s_BFu8ll, "BFu0s_BFu1s_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu8s");
    static BFu0s_BFu1s_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu8s");
    set_bf_and_test(lv, v2, 0, 1, 8, 1, "BFu0s_BFu1s_BFu8s");
    set_bf_and_test(lv, v2, 0, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu1s_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu8s(Test_BFu0s_BFu1s_BFu8s, "BFu0s_BFu1s_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu9i");
    static BFu0s_BFu1s_BFu9i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu9i");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1s_BFu9i");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1s_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu9i(Test_BFu0s_BFu1s_BFu9i, "BFu0s_BFu1s_BFu9i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu9ll");
    static BFu0s_BFu1s_BFu9ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu9ll");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1s_BFu9ll");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1s_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu9ll(Test_BFu0s_BFu1s_BFu9ll, "BFu0s_BFu1s_BFu9ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu1s_BFu9s");
    static BFu0s_BFu1s_BFu9s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_BFu9s");
    set_bf_and_test(lv, v2, 0, 1, 9, 1, "BFu0s_BFu1s_BFu9s");
    set_bf_and_test(lv, v2, 0, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu1s_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_BFu9s(Test_BFu0s_BFu1s_BFu9s, "BFu0s_BFu1s_BFu9s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_C()
{
  {
    init_simple_test("BFu0s_BFu1s_C");
    static BFu0s_BFu1s_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_C)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_C(Test_BFu0s_BFu1s_C, "BFu0s_BFu1s_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_D()
{
  {
    init_simple_test("BFu0s_BFu1s_D");
    static BFu0s_BFu1s_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1s_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_D)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_D(Test_BFu0s_BFu1s_D, "BFu0s_BFu1s_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_F()
{
  {
    init_simple_test("BFu0s_BFu1s_F");
    static BFu0s_BFu1s_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1s_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_F)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_F(Test_BFu0s_BFu1s_F, "BFu0s_BFu1s_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_I()
{
  {
    init_simple_test("BFu0s_BFu1s_I");
    static BFu0s_BFu1s_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1s_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_I)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_I(Test_BFu0s_BFu1s_I, "BFu0s_BFu1s_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_Ip()
{
  {
    init_simple_test("BFu0s_BFu1s_Ip");
    static BFu0s_BFu1s_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu1s_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_Ip(Test_BFu0s_BFu1s_Ip, "BFu0s_BFu1s_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_L()
{
  {
    init_simple_test("BFu0s_BFu1s_L");
    static BFu0s_BFu1s_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1s_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_L)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_L(Test_BFu0s_BFu1s_L, "BFu0s_BFu1s_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_S()
{
  {
    init_simple_test("BFu0s_BFu1s_S");
    static BFu0s_BFu1s_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1s_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_S)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_S(Test_BFu0s_BFu1s_S, "BFu0s_BFu1s_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_Uc()
{
  {
    init_simple_test("BFu0s_BFu1s_Uc");
    static BFu0s_BFu1s_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu1s_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_Uc(Test_BFu0s_BFu1s_Uc, "BFu0s_BFu1s_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_Ui()
{
  {
    init_simple_test("BFu0s_BFu1s_Ui");
    static BFu0s_BFu1s_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu1s_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_Ui(Test_BFu0s_BFu1s_Ui, "BFu0s_BFu1s_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_Ul()
{
  {
    init_simple_test("BFu0s_BFu1s_Ul");
    static BFu0s_BFu1s_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu1s_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_Ul(Test_BFu0s_BFu1s_Ul, "BFu0s_BFu1s_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_Us()
{
  {
    init_simple_test("BFu0s_BFu1s_Us");
    static BFu0s_BFu1s_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu1s_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_Us(Test_BFu0s_BFu1s_Us, "BFu0s_BFu1s_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu1s_Vp()
{
  {
    init_simple_test("BFu0s_BFu1s_Vp");
    static BFu0s_BFu1s_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu1s_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu1s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 1, 1, "BFu0s_BFu1s_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu1s_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu1s_Vp(Test_BFu0s_BFu1s_Vp, "BFu0s_BFu1s_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu31i");
    static BFu0s_BFu31i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i(Test_BFu0s_BFu31i, "BFu0s_BFu31i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu0c");
    static BFu0s_BFu31i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu0c(Test_BFu0s_BFu31i_BFu0c, "BFu0s_BFu31i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu0i");
    static BFu0s_BFu31i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu0i(Test_BFu0s_BFu31i_BFu0i, "BFu0s_BFu31i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu0ll");
    static BFu0s_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu31i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu0ll(Test_BFu0s_BFu31i_BFu0ll, "BFu0s_BFu31i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu0s");
    static BFu0s_BFu31i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu0s(Test_BFu0s_BFu31i_BFu0s, "BFu0s_BFu31i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu15i");
    static BFu0s_BFu31i_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu15i");
    set_bf_and_test(lv, v2, 3, 7, 15, 1, "BFu0s_BFu31i_BFu15i");
    set_bf_and_test(lv, v2, 3, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu31i_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu15i(Test_BFu0s_BFu31i_BFu15i, "BFu0s_BFu31i_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu15ll");
    static BFu0s_BFu31i_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu15ll");
    set_bf_and_test(lv, v2, 3, 7, 15, 1, "BFu0s_BFu31i_BFu15ll");
    set_bf_and_test(lv, v2, 3, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu31i_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu15ll(Test_BFu0s_BFu31i_BFu15ll, "BFu0s_BFu31i_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu15s");
    static BFu0s_BFu31i_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu15s");
    set_bf_and_test(lv, v2, 3, 7, 15, 1, "BFu0s_BFu31i_BFu15s");
    set_bf_and_test(lv, v2, 3, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu31i_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu15s(Test_BFu0s_BFu31i_BFu15s, "BFu0s_BFu31i_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu16i");
    static BFu0s_BFu31i_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu16i");
    set_bf_and_test(lv, v2, 3, 7, 16, 1, "BFu0s_BFu31i_BFu16i");
    set_bf_and_test(lv, v2, 3, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu31i_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu16i(Test_BFu0s_BFu31i_BFu16i, "BFu0s_BFu31i_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu16ll");
    static BFu0s_BFu31i_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu16ll");
    set_bf_and_test(lv, v2, 3, 7, 16, 1, "BFu0s_BFu31i_BFu16ll");
    set_bf_and_test(lv, v2, 3, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu31i_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu16ll(Test_BFu0s_BFu31i_BFu16ll, "BFu0s_BFu31i_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu16s");
    static BFu0s_BFu31i_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu16s");
    set_bf_and_test(lv, v2, 3, 7, 16, 1, "BFu0s_BFu31i_BFu16s");
    set_bf_and_test(lv, v2, 3, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu31i_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu16s(Test_BFu0s_BFu31i_BFu16s, "BFu0s_BFu31i_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu17i");
    static BFu0s_BFu31i_BFu17i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu17i");
    set_bf_and_test(lv, v2, 3, 7, 17, 1, "BFu0s_BFu31i_BFu17i");
    set_bf_and_test(lv, v2, 3, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu31i_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu17i(Test_BFu0s_BFu31i_BFu17i, "BFu0s_BFu31i_BFu17i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu17ll");
    static BFu0s_BFu31i_BFu17ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu17ll");
    set_bf_and_test(lv, v2, 3, 7, 17, 1, "BFu0s_BFu31i_BFu17ll");
    set_bf_and_test(lv, v2, 3, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu31i_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu17ll(Test_BFu0s_BFu31i_BFu17ll, "BFu0s_BFu31i_BFu17ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu1c");
    static BFu0s_BFu31i_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu1c");
    set_bf_and_test(lv, v2, 3, 7, 1, 1, "BFu0s_BFu31i_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu1c(Test_BFu0s_BFu31i_BFu1c, "BFu0s_BFu31i_BFu1c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu1i");
    static BFu0s_BFu31i_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu1i");
    set_bf_and_test(lv, v2, 3, 7, 1, 1, "BFu0s_BFu31i_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu1i(Test_BFu0s_BFu31i_BFu1i, "BFu0s_BFu31i_BFu1i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu1ll");
    static BFu0s_BFu31i_BFu1ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu1ll");
    set_bf_and_test(lv, v2, 3, 7, 1, 1, "BFu0s_BFu31i_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu1ll(Test_BFu0s_BFu31i_BFu1ll, "BFu0s_BFu31i_BFu1ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu1s");
    static BFu0s_BFu31i_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu1s");
    set_bf_and_test(lv, v2, 3, 7, 1, 1, "BFu0s_BFu31i_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu1s(Test_BFu0s_BFu31i_BFu1s, "BFu0s_BFu31i_BFu1s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu31i");
    static BFu0s_BFu31i_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31i_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu31i");
    set_bf_and_test(lv, v2, 3, 7, 31, 1, "BFu0s_BFu31i_BFu31i");
    set_bf_and_test(lv, v2, 3, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu31i(Test_BFu0s_BFu31i_BFu31i, "BFu0s_BFu31i_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu31ll");
    static BFu0s_BFu31i_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31i_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu31ll");
    set_bf_and_test(lv, v2, 3, 7, 31, 1, "BFu0s_BFu31i_BFu31ll");
    set_bf_and_test(lv, v2, 3, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu31ll(Test_BFu0s_BFu31i_BFu31ll, "BFu0s_BFu31i_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu32i");
    static BFu0s_BFu31i_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31i_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu32i");
    set_bf_and_test(lv, v2, 3, 7, 32, 1, "BFu0s_BFu31i_BFu32i");
    set_bf_and_test(lv, v2, 3, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu31i_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu32i(Test_BFu0s_BFu31i_BFu32i, "BFu0s_BFu31i_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu32ll");
    static BFu0s_BFu31i_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31i_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu32ll");
    set_bf_and_test(lv, v2, 3, 7, 32, 1, "BFu0s_BFu31i_BFu32ll");
    set_bf_and_test(lv, v2, 3, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu31i_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu32ll(Test_BFu0s_BFu31i_BFu32ll, "BFu0s_BFu31i_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu33()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu33");
    static BFu0s_BFu31i_BFu33 lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31i_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu33");
    set_bf_and_test(lv, v2, 3, 7, 33, 1, "BFu0s_BFu31i_BFu33");
    set_bf_and_test(lv, v2, 3, 7, 33, hide_ull(1LL<<32), "BFu0s_BFu31i_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu33(Test_BFu0s_BFu31i_BFu33, "BFu0s_BFu31i_BFu33", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu7c");
    static BFu0s_BFu31i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu7c");
    set_bf_and_test(lv, v2, 3, 7, 7, 1, "BFu0s_BFu31i_BFu7c");
    set_bf_and_test(lv, v2, 3, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu31i_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu7c(Test_BFu0s_BFu31i_BFu7c, "BFu0s_BFu31i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu7i");
    static BFu0s_BFu31i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu7i");
    set_bf_and_test(lv, v2, 3, 7, 7, 1, "BFu0s_BFu31i_BFu7i");
    set_bf_and_test(lv, v2, 3, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu31i_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu7i(Test_BFu0s_BFu31i_BFu7i, "BFu0s_BFu31i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu7ll");
    static BFu0s_BFu31i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu7ll");
    set_bf_and_test(lv, v2, 3, 7, 7, 1, "BFu0s_BFu31i_BFu7ll");
    set_bf_and_test(lv, v2, 3, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu31i_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu7ll(Test_BFu0s_BFu31i_BFu7ll, "BFu0s_BFu31i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu7s");
    static BFu0s_BFu31i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu7s");
    set_bf_and_test(lv, v2, 3, 7, 7, 1, "BFu0s_BFu31i_BFu7s");
    set_bf_and_test(lv, v2, 3, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu31i_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu7s(Test_BFu0s_BFu31i_BFu7s, "BFu0s_BFu31i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu8c");
    static BFu0s_BFu31i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu8c");
    set_bf_and_test(lv, v2, 3, 7, 8, 1, "BFu0s_BFu31i_BFu8c");
    set_bf_and_test(lv, v2, 3, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu31i_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu8c(Test_BFu0s_BFu31i_BFu8c, "BFu0s_BFu31i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu8i");
    static BFu0s_BFu31i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu8i");
    set_bf_and_test(lv, v2, 3, 7, 8, 1, "BFu0s_BFu31i_BFu8i");
    set_bf_and_test(lv, v2, 3, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu31i_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu8i(Test_BFu0s_BFu31i_BFu8i, "BFu0s_BFu31i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu8ll");
    static BFu0s_BFu31i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu8ll");
    set_bf_and_test(lv, v2, 3, 7, 8, 1, "BFu0s_BFu31i_BFu8ll");
    set_bf_and_test(lv, v2, 3, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu31i_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu8ll(Test_BFu0s_BFu31i_BFu8ll, "BFu0s_BFu31i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu8s");
    static BFu0s_BFu31i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu8s");
    set_bf_and_test(lv, v2, 3, 7, 8, 1, "BFu0s_BFu31i_BFu8s");
    set_bf_and_test(lv, v2, 3, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu31i_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu8s(Test_BFu0s_BFu31i_BFu8s, "BFu0s_BFu31i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu9i");
    static BFu0s_BFu31i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu9i");
    set_bf_and_test(lv, v2, 3, 7, 9, 1, "BFu0s_BFu31i_BFu9i");
    set_bf_and_test(lv, v2, 3, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu31i_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu9i(Test_BFu0s_BFu31i_BFu9i, "BFu0s_BFu31i_BFu9i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu9ll");
    static BFu0s_BFu31i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu9ll");
    set_bf_and_test(lv, v2, 3, 7, 9, 1, "BFu0s_BFu31i_BFu9ll");
    set_bf_and_test(lv, v2, 3, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu31i_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu9ll(Test_BFu0s_BFu31i_BFu9ll, "BFu0s_BFu31i_BFu9ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu31i_BFu9s");
    static BFu0s_BFu31i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_BFu9s");
    set_bf_and_test(lv, v2, 3, 7, 9, 1, "BFu0s_BFu31i_BFu9s");
    set_bf_and_test(lv, v2, 3, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu31i_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_BFu9s(Test_BFu0s_BFu31i_BFu9s, "BFu0s_BFu31i_BFu9s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_C()
{
  {
    init_simple_test("BFu0s_BFu31i_C");
    static BFu0s_BFu31i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_C)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_C");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_C");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_C(Test_BFu0s_BFu31i_C, "BFu0s_BFu31i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_D()
{
  {
    init_simple_test("BFu0s_BFu31i_D");
    static BFu0s_BFu31i_D lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu31i_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_D)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_D");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_D");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_D(Test_BFu0s_BFu31i_D, "BFu0s_BFu31i_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_F()
{
  {
    init_simple_test("BFu0s_BFu31i_F");
    static BFu0s_BFu31i_F lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31i_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_F)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_F");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_F");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_F(Test_BFu0s_BFu31i_F, "BFu0s_BFu31i_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_I()
{
  {
    init_simple_test("BFu0s_BFu31i_I");
    static BFu0s_BFu31i_I lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31i_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_I)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_I");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_I");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_I(Test_BFu0s_BFu31i_I, "BFu0s_BFu31i_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_Ip()
{
  {
    init_simple_test("BFu0s_BFu31i_Ip");
    static BFu0s_BFu31i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_BFu31i_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_Ip");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_Ip(Test_BFu0s_BFu31i_Ip, "BFu0s_BFu31i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_L()
{
  {
    init_simple_test("BFu0s_BFu31i_L");
    static BFu0s_BFu31i_L lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu31i_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_L)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_L");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_L");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_L(Test_BFu0s_BFu31i_L, "BFu0s_BFu31i_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_S()
{
  {
    init_simple_test("BFu0s_BFu31i_S");
    static BFu0s_BFu31i_S lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31i_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_S)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_S");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_S");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_S(Test_BFu0s_BFu31i_S, "BFu0s_BFu31i_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_Uc()
{
  {
    init_simple_test("BFu0s_BFu31i_Uc");
    static BFu0s_BFu31i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31i_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_Uc");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_Uc(Test_BFu0s_BFu31i_Uc, "BFu0s_BFu31i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_Ui()
{
  {
    init_simple_test("BFu0s_BFu31i_Ui");
    static BFu0s_BFu31i_Ui lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31i_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_Ui");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_Ui(Test_BFu0s_BFu31i_Ui, "BFu0s_BFu31i_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_Ul()
{
  {
    init_simple_test("BFu0s_BFu31i_Ul");
    static BFu0s_BFu31i_Ul lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu31i_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_Ul");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_Ul(Test_BFu0s_BFu31i_Ul, "BFu0s_BFu31i_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_Us()
{
  {
    init_simple_test("BFu0s_BFu31i_Us");
    static BFu0s_BFu31i_Us lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31i_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_Us");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_Us");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_Us(Test_BFu0s_BFu31i_Us, "BFu0s_BFu31i_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31i_Vp()
{
  {
    init_simple_test("BFu0s_BFu31i_Vp");
    static BFu0s_BFu31i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_BFu31i_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31i_Vp");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31i_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31i_Vp(Test_BFu0s_BFu31i_Vp, "BFu0s_BFu31i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu31ll");
    static BFu0s_BFu31ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll(Test_BFu0s_BFu31ll, "BFu0s_BFu31ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu0c");
    static BFu0s_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu0c(Test_BFu0s_BFu31ll_BFu0c, "BFu0s_BFu31ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu0i");
    static BFu0s_BFu31ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu0i(Test_BFu0s_BFu31ll_BFu0i, "BFu0s_BFu31ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu0ll");
    static BFu0s_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu0ll(Test_BFu0s_BFu31ll_BFu0ll, "BFu0s_BFu31ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu0s");
    static BFu0s_BFu31ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu0s(Test_BFu0s_BFu31ll_BFu0s, "BFu0s_BFu31ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu15i");
    static BFu0s_BFu31ll_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu15i");
    set_bf_and_test(lv, v2, 3, 7, 15, 1, "BFu0s_BFu31ll_BFu15i");
    set_bf_and_test(lv, v2, 3, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu31ll_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu15i(Test_BFu0s_BFu31ll_BFu15i, "BFu0s_BFu31ll_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu15ll");
    static BFu0s_BFu31ll_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu15ll");
    set_bf_and_test(lv, v2, 3, 7, 15, 1, "BFu0s_BFu31ll_BFu15ll");
    set_bf_and_test(lv, v2, 3, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu31ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu15ll(Test_BFu0s_BFu31ll_BFu15ll, "BFu0s_BFu31ll_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu15s");
    static BFu0s_BFu31ll_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu15s");
    set_bf_and_test(lv, v2, 3, 7, 15, 1, "BFu0s_BFu31ll_BFu15s");
    set_bf_and_test(lv, v2, 3, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu31ll_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu15s(Test_BFu0s_BFu31ll_BFu15s, "BFu0s_BFu31ll_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu16i");
    static BFu0s_BFu31ll_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu16i");
    set_bf_and_test(lv, v2, 3, 7, 16, 1, "BFu0s_BFu31ll_BFu16i");
    set_bf_and_test(lv, v2, 3, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu31ll_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu16i(Test_BFu0s_BFu31ll_BFu16i, "BFu0s_BFu31ll_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu16ll");
    static BFu0s_BFu31ll_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu16ll");
    set_bf_and_test(lv, v2, 3, 7, 16, 1, "BFu0s_BFu31ll_BFu16ll");
    set_bf_and_test(lv, v2, 3, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu31ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu16ll(Test_BFu0s_BFu31ll_BFu16ll, "BFu0s_BFu31ll_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu16s");
    static BFu0s_BFu31ll_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu16s");
    set_bf_and_test(lv, v2, 3, 7, 16, 1, "BFu0s_BFu31ll_BFu16s");
    set_bf_and_test(lv, v2, 3, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu31ll_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu16s(Test_BFu0s_BFu31ll_BFu16s, "BFu0s_BFu31ll_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu17i");
    static BFu0s_BFu31ll_BFu17i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu17i");
    set_bf_and_test(lv, v2, 3, 7, 17, 1, "BFu0s_BFu31ll_BFu17i");
    set_bf_and_test(lv, v2, 3, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu31ll_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu17i(Test_BFu0s_BFu31ll_BFu17i, "BFu0s_BFu31ll_BFu17i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu17ll");
    static BFu0s_BFu31ll_BFu17ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu17ll");
    set_bf_and_test(lv, v2, 3, 7, 17, 1, "BFu0s_BFu31ll_BFu17ll");
    set_bf_and_test(lv, v2, 3, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu31ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu17ll(Test_BFu0s_BFu31ll_BFu17ll, "BFu0s_BFu31ll_BFu17ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu1c");
    static BFu0s_BFu31ll_BFu1c lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu1c");
    set_bf_and_test(lv, v2, 3, 7, 1, 1, "BFu0s_BFu31ll_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu1c(Test_BFu0s_BFu31ll_BFu1c, "BFu0s_BFu31ll_BFu1c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu1i");
    static BFu0s_BFu31ll_BFu1i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu1i");
    set_bf_and_test(lv, v2, 3, 7, 1, 1, "BFu0s_BFu31ll_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu1i(Test_BFu0s_BFu31ll_BFu1i, "BFu0s_BFu31ll_BFu1i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu1ll");
    static BFu0s_BFu31ll_BFu1ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu1ll");
    set_bf_and_test(lv, v2, 3, 7, 1, 1, "BFu0s_BFu31ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu1ll(Test_BFu0s_BFu31ll_BFu1ll, "BFu0s_BFu31ll_BFu1ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu1s");
    static BFu0s_BFu31ll_BFu1s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu31ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu1s");
    set_bf_and_test(lv, v2, 3, 7, 1, 1, "BFu0s_BFu31ll_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu1s(Test_BFu0s_BFu31ll_BFu1s, "BFu0s_BFu31ll_BFu1s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu31i");
    static BFu0s_BFu31ll_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31ll_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu31i");
    set_bf_and_test(lv, v2, 3, 7, 31, 1, "BFu0s_BFu31ll_BFu31i");
    set_bf_and_test(lv, v2, 3, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu31i(Test_BFu0s_BFu31ll_BFu31i, "BFu0s_BFu31ll_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu31ll");
    static BFu0s_BFu31ll_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31ll_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu31ll");
    set_bf_and_test(lv, v2, 3, 7, 31, 1, "BFu0s_BFu31ll_BFu31ll");
    set_bf_and_test(lv, v2, 3, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu31ll(Test_BFu0s_BFu31ll_BFu31ll, "BFu0s_BFu31ll_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu32i");
    static BFu0s_BFu31ll_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31ll_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu32i");
    set_bf_and_test(lv, v2, 3, 7, 32, 1, "BFu0s_BFu31ll_BFu32i");
    set_bf_and_test(lv, v2, 3, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu31ll_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu32i(Test_BFu0s_BFu31ll_BFu32i, "BFu0s_BFu31ll_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu32ll");
    static BFu0s_BFu31ll_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31ll_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu32ll");
    set_bf_and_test(lv, v2, 3, 7, 32, 1, "BFu0s_BFu31ll_BFu32ll");
    set_bf_and_test(lv, v2, 3, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu31ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu32ll(Test_BFu0s_BFu31ll_BFu32ll, "BFu0s_BFu31ll_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu33()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu33");
    static BFu0s_BFu31ll_BFu33 lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31ll_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu33");
    set_bf_and_test(lv, v2, 3, 7, 33, 1, "BFu0s_BFu31ll_BFu33");
    set_bf_and_test(lv, v2, 3, 7, 33, hide_ull(1LL<<32), "BFu0s_BFu31ll_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu33(Test_BFu0s_BFu31ll_BFu33, "BFu0s_BFu31ll_BFu33", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu7c");
    static BFu0s_BFu31ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu7c");
    set_bf_and_test(lv, v2, 3, 7, 7, 1, "BFu0s_BFu31ll_BFu7c");
    set_bf_and_test(lv, v2, 3, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu31ll_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu7c(Test_BFu0s_BFu31ll_BFu7c, "BFu0s_BFu31ll_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu7i");
    static BFu0s_BFu31ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu7i");
    set_bf_and_test(lv, v2, 3, 7, 7, 1, "BFu0s_BFu31ll_BFu7i");
    set_bf_and_test(lv, v2, 3, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu31ll_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu7i(Test_BFu0s_BFu31ll_BFu7i, "BFu0s_BFu31ll_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu7ll");
    static BFu0s_BFu31ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu7ll");
    set_bf_and_test(lv, v2, 3, 7, 7, 1, "BFu0s_BFu31ll_BFu7ll");
    set_bf_and_test(lv, v2, 3, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu31ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu7ll(Test_BFu0s_BFu31ll_BFu7ll, "BFu0s_BFu31ll_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu7s");
    static BFu0s_BFu31ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu7s");
    set_bf_and_test(lv, v2, 3, 7, 7, 1, "BFu0s_BFu31ll_BFu7s");
    set_bf_and_test(lv, v2, 3, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu31ll_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu7s(Test_BFu0s_BFu31ll_BFu7s, "BFu0s_BFu31ll_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu8c");
    static BFu0s_BFu31ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu8c");
    set_bf_and_test(lv, v2, 3, 7, 8, 1, "BFu0s_BFu31ll_BFu8c");
    set_bf_and_test(lv, v2, 3, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu31ll_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu8c(Test_BFu0s_BFu31ll_BFu8c, "BFu0s_BFu31ll_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu8i");
    static BFu0s_BFu31ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu8i");
    set_bf_and_test(lv, v2, 3, 7, 8, 1, "BFu0s_BFu31ll_BFu8i");
    set_bf_and_test(lv, v2, 3, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu31ll_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu8i(Test_BFu0s_BFu31ll_BFu8i, "BFu0s_BFu31ll_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu8ll");
    static BFu0s_BFu31ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu8ll");
    set_bf_and_test(lv, v2, 3, 7, 8, 1, "BFu0s_BFu31ll_BFu8ll");
    set_bf_and_test(lv, v2, 3, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu31ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu8ll(Test_BFu0s_BFu31ll_BFu8ll, "BFu0s_BFu31ll_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu8s");
    static BFu0s_BFu31ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu8s");
    set_bf_and_test(lv, v2, 3, 7, 8, 1, "BFu0s_BFu31ll_BFu8s");
    set_bf_and_test(lv, v2, 3, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu31ll_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu8s(Test_BFu0s_BFu31ll_BFu8s, "BFu0s_BFu31ll_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu9i");
    static BFu0s_BFu31ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu9i");
    set_bf_and_test(lv, v2, 3, 7, 9, 1, "BFu0s_BFu31ll_BFu9i");
    set_bf_and_test(lv, v2, 3, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu31ll_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu9i(Test_BFu0s_BFu31ll_BFu9i, "BFu0s_BFu31ll_BFu9i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu9ll");
    static BFu0s_BFu31ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu9ll");
    set_bf_and_test(lv, v2, 3, 7, 9, 1, "BFu0s_BFu31ll_BFu9ll");
    set_bf_and_test(lv, v2, 3, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu31ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu9ll(Test_BFu0s_BFu31ll_BFu9ll, "BFu0s_BFu31ll_BFu9ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu31ll_BFu9s");
    static BFu0s_BFu31ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_BFu9s");
    set_bf_and_test(lv, v2, 3, 7, 9, 1, "BFu0s_BFu31ll_BFu9s");
    set_bf_and_test(lv, v2, 3, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu31ll_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_BFu9s(Test_BFu0s_BFu31ll_BFu9s, "BFu0s_BFu31ll_BFu9s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_C()
{
  {
    init_simple_test("BFu0s_BFu31ll_C");
    static BFu0s_BFu31ll_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_C");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_C");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_C(Test_BFu0s_BFu31ll_C, "BFu0s_BFu31ll_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_D()
{
  {
    init_simple_test("BFu0s_BFu31ll_D");
    static BFu0s_BFu31ll_D lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu31ll_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_D");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_D");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_D(Test_BFu0s_BFu31ll_D, "BFu0s_BFu31ll_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_F()
{
  {
    init_simple_test("BFu0s_BFu31ll_F");
    static BFu0s_BFu31ll_F lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31ll_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_F");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_F");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_F(Test_BFu0s_BFu31ll_F, "BFu0s_BFu31ll_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_I()
{
  {
    init_simple_test("BFu0s_BFu31ll_I");
    static BFu0s_BFu31ll_I lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31ll_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_I");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_I");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_I(Test_BFu0s_BFu31ll_I, "BFu0s_BFu31ll_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_Ip()
{
  {
    init_simple_test("BFu0s_BFu31ll_Ip");
    static BFu0s_BFu31ll_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_BFu31ll_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_Ip");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_Ip(Test_BFu0s_BFu31ll_Ip, "BFu0s_BFu31ll_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_L()
{
  {
    init_simple_test("BFu0s_BFu31ll_L");
    static BFu0s_BFu31ll_L lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu31ll_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_L");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_L");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_L(Test_BFu0s_BFu31ll_L, "BFu0s_BFu31ll_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_S()
{
  {
    init_simple_test("BFu0s_BFu31ll_S");
    static BFu0s_BFu31ll_S lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31ll_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_S");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_S");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_S(Test_BFu0s_BFu31ll_S, "BFu0s_BFu31ll_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_Uc()
{
  {
    init_simple_test("BFu0s_BFu31ll_Uc");
    static BFu0s_BFu31ll_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu31ll_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_Uc");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_Uc(Test_BFu0s_BFu31ll_Uc, "BFu0s_BFu31ll_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_Ui()
{
  {
    init_simple_test("BFu0s_BFu31ll_Ui");
    static BFu0s_BFu31ll_Ui lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu31ll_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_Ui");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_Ui(Test_BFu0s_BFu31ll_Ui, "BFu0s_BFu31ll_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_Ul()
{
  {
    init_simple_test("BFu0s_BFu31ll_Ul");
    static BFu0s_BFu31ll_Ul lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu31ll_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_Ul");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_Ul(Test_BFu0s_BFu31ll_Ul, "BFu0s_BFu31ll_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_Us()
{
  {
    init_simple_test("BFu0s_BFu31ll_Us");
    static BFu0s_BFu31ll_Us lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu31ll_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_Us");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_Us(Test_BFu0s_BFu31ll_Us, "BFu0s_BFu31ll_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu31ll_Vp()
{
  {
    init_simple_test("BFu0s_BFu31ll_Vp");
    static BFu0s_BFu31ll_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_BFu31ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu31ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 31, 1, "BFu0s_BFu31ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu31ll_Vp");
    check_field_offset(lv, v2, 4, "BFu0s_BFu31ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu31ll_Vp(Test_BFu0s_BFu31ll_Vp, "BFu0s_BFu31ll_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu32i");
    static BFu0s_BFu32i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i(Test_BFu0s_BFu32i, "BFu0s_BFu32i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu0c");
    static BFu0s_BFu32i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu32i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu0c(Test_BFu0s_BFu32i_BFu0c, "BFu0s_BFu32i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu0i");
    static BFu0s_BFu32i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu32i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu0i(Test_BFu0s_BFu32i_BFu0i, "BFu0s_BFu32i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu0ll");
    static BFu0s_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu32i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu0ll(Test_BFu0s_BFu32i_BFu0ll, "BFu0s_BFu32i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu0s");
    static BFu0s_BFu32i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu32i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu0s(Test_BFu0s_BFu32i_BFu0s, "BFu0s_BFu32i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu15i");
    static BFu0s_BFu32i_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_BFu32i_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu32i_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu15i(Test_BFu0s_BFu32i_BFu15i, "BFu0s_BFu32i_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu15ll");
    static BFu0s_BFu32i_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_BFu32i_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu32i_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu15ll(Test_BFu0s_BFu32i_BFu15ll, "BFu0s_BFu32i_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu15s");
    static BFu0s_BFu32i_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_BFu32i_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu32i_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu15s(Test_BFu0s_BFu32i_BFu15s, "BFu0s_BFu32i_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu16i");
    static BFu0s_BFu32i_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_BFu32i_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu32i_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu16i(Test_BFu0s_BFu32i_BFu16i, "BFu0s_BFu32i_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu16ll");
    static BFu0s_BFu32i_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_BFu32i_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu32i_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu16ll(Test_BFu0s_BFu32i_BFu16ll, "BFu0s_BFu32i_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu16s");
    static BFu0s_BFu32i_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_BFu32i_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu32i_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu16s(Test_BFu0s_BFu32i_BFu16s, "BFu0s_BFu32i_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu17i");
    static BFu0s_BFu32i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu32i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFu0s_BFu32i_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu32i_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu17i(Test_BFu0s_BFu32i_BFu17i, "BFu0s_BFu32i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu17ll");
    static BFu0s_BFu32i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu32i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFu0s_BFu32i_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu32i_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu17ll(Test_BFu0s_BFu32i_BFu17ll, "BFu0s_BFu32i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu1c");
    static BFu0s_BFu32i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu1c");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_BFu32i_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu1c(Test_BFu0s_BFu32i_BFu1c, "BFu0s_BFu32i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu1i");
    static BFu0s_BFu32i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu1i");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_BFu32i_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu1i(Test_BFu0s_BFu32i_BFu1i, "BFu0s_BFu32i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu1ll");
    static BFu0s_BFu32i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu1ll");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_BFu32i_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu1ll(Test_BFu0s_BFu32i_BFu1ll, "BFu0s_BFu32i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu1s");
    static BFu0s_BFu32i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu1s");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_BFu32i_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu1s(Test_BFu0s_BFu32i_BFu1s, "BFu0s_BFu32i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu31i");
    static BFu0s_BFu32i_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32i_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "BFu0s_BFu32i_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu32i_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu31i(Test_BFu0s_BFu32i_BFu31i, "BFu0s_BFu32i_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu31ll");
    static BFu0s_BFu32i_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32i_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "BFu0s_BFu32i_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu32i_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu31ll(Test_BFu0s_BFu32i_BFu31ll, "BFu0s_BFu32i_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu32i");
    static BFu0s_BFu32i_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32i_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "BFu0s_BFu32i_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu32i(Test_BFu0s_BFu32i_BFu32i, "BFu0s_BFu32i_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu32ll");
    static BFu0s_BFu32i_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32i_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "BFu0s_BFu32i_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu32ll(Test_BFu0s_BFu32i_BFu32ll, "BFu0s_BFu32i_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu33()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu33");
    static BFu0s_BFu32i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu32i_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "BFu0s_BFu32i_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu32i_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu33(Test_BFu0s_BFu32i_BFu33, "BFu0s_BFu32i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu7c");
    static BFu0s_BFu32i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_BFu32i_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu32i_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu7c(Test_BFu0s_BFu32i_BFu7c, "BFu0s_BFu32i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu7i");
    static BFu0s_BFu32i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_BFu32i_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu32i_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu7i(Test_BFu0s_BFu32i_BFu7i, "BFu0s_BFu32i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu7ll");
    static BFu0s_BFu32i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_BFu32i_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu32i_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu7ll(Test_BFu0s_BFu32i_BFu7ll, "BFu0s_BFu32i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu7s");
    static BFu0s_BFu32i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_BFu32i_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu32i_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu7s(Test_BFu0s_BFu32i_BFu7s, "BFu0s_BFu32i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu8c");
    static BFu0s_BFu32i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_BFu32i_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu32i_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu8c(Test_BFu0s_BFu32i_BFu8c, "BFu0s_BFu32i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu8i");
    static BFu0s_BFu32i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_BFu32i_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu32i_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu8i(Test_BFu0s_BFu32i_BFu8i, "BFu0s_BFu32i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu8ll");
    static BFu0s_BFu32i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_BFu32i_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu32i_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu8ll(Test_BFu0s_BFu32i_BFu8ll, "BFu0s_BFu32i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu8s");
    static BFu0s_BFu32i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_BFu32i_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu32i_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu8s(Test_BFu0s_BFu32i_BFu8s, "BFu0s_BFu32i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu9i");
    static BFu0s_BFu32i_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32i_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_BFu32i_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu32i_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu9i(Test_BFu0s_BFu32i_BFu9i, "BFu0s_BFu32i_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu9ll");
    static BFu0s_BFu32i_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32i_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_BFu32i_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu32i_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu9ll(Test_BFu0s_BFu32i_BFu9ll, "BFu0s_BFu32i_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu32i_BFu9s");
    static BFu0s_BFu32i_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32i_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_BFu32i_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu32i_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_BFu9s(Test_BFu0s_BFu32i_BFu9s, "BFu0s_BFu32i_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_C()
{
  {
    init_simple_test("BFu0s_BFu32i_C");
    static BFu0s_BFu32i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_C)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_C");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_C");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_C(Test_BFu0s_BFu32i_C, "BFu0s_BFu32i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_D()
{
  {
    init_simple_test("BFu0s_BFu32i_D");
    static BFu0s_BFu32i_D lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu32i_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_D)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_D");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_D");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_D(Test_BFu0s_BFu32i_D, "BFu0s_BFu32i_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_F()
{
  {
    init_simple_test("BFu0s_BFu32i_F");
    static BFu0s_BFu32i_F lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32i_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_F)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_F");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_F");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_F(Test_BFu0s_BFu32i_F, "BFu0s_BFu32i_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_I()
{
  {
    init_simple_test("BFu0s_BFu32i_I");
    static BFu0s_BFu32i_I lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32i_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_I)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_I");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_I");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_I(Test_BFu0s_BFu32i_I, "BFu0s_BFu32i_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_Ip()
{
  {
    init_simple_test("BFu0s_BFu32i_Ip");
    static BFu0s_BFu32i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_BFu32i_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_Ip");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_Ip(Test_BFu0s_BFu32i_Ip, "BFu0s_BFu32i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_L()
{
  {
    init_simple_test("BFu0s_BFu32i_L");
    static BFu0s_BFu32i_L lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu32i_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_L)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_L");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_L");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_L(Test_BFu0s_BFu32i_L, "BFu0s_BFu32i_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_S()
{
  {
    init_simple_test("BFu0s_BFu32i_S");
    static BFu0s_BFu32i_S lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32i_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_S)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_S");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_S");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_S(Test_BFu0s_BFu32i_S, "BFu0s_BFu32i_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_Uc()
{
  {
    init_simple_test("BFu0s_BFu32i_Uc");
    static BFu0s_BFu32i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32i_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_Uc");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_Uc(Test_BFu0s_BFu32i_Uc, "BFu0s_BFu32i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_Ui()
{
  {
    init_simple_test("BFu0s_BFu32i_Ui");
    static BFu0s_BFu32i_Ui lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32i_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_Ui");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_Ui(Test_BFu0s_BFu32i_Ui, "BFu0s_BFu32i_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_Ul()
{
  {
    init_simple_test("BFu0s_BFu32i_Ul");
    static BFu0s_BFu32i_Ul lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu32i_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_Ul");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_Ul(Test_BFu0s_BFu32i_Ul, "BFu0s_BFu32i_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_Us()
{
  {
    init_simple_test("BFu0s_BFu32i_Us");
    static BFu0s_BFu32i_Us lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32i_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_Us");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_Us");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_Us(Test_BFu0s_BFu32i_Us, "BFu0s_BFu32i_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32i_Vp()
{
  {
    init_simple_test("BFu0s_BFu32i_Vp");
    static BFu0s_BFu32i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_BFu32i_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32i_Vp");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32i_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32i_Vp(Test_BFu0s_BFu32i_Vp, "BFu0s_BFu32i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu32ll");
    static BFu0s_BFu32ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll(Test_BFu0s_BFu32ll, "BFu0s_BFu32ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu0c");
    static BFu0s_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu32ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu0c(Test_BFu0s_BFu32ll_BFu0c, "BFu0s_BFu32ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu0i");
    static BFu0s_BFu32ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu32ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu0i(Test_BFu0s_BFu32ll_BFu0i, "BFu0s_BFu32ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu0ll");
    static BFu0s_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu0ll(Test_BFu0s_BFu32ll_BFu0ll, "BFu0s_BFu32ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu0s");
    static BFu0s_BFu32ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu32ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu0s(Test_BFu0s_BFu32ll_BFu0s, "BFu0s_BFu32ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu15i");
    static BFu0s_BFu32ll_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_BFu32ll_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu32ll_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu15i(Test_BFu0s_BFu32ll_BFu15i, "BFu0s_BFu32ll_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu15ll");
    static BFu0s_BFu32ll_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_BFu32ll_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu32ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu15ll(Test_BFu0s_BFu32ll_BFu15ll, "BFu0s_BFu32ll_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu15s");
    static BFu0s_BFu32ll_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_BFu32ll_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu32ll_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu15s(Test_BFu0s_BFu32ll_BFu15s, "BFu0s_BFu32ll_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu16i");
    static BFu0s_BFu32ll_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_BFu32ll_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu32ll_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu16i(Test_BFu0s_BFu32ll_BFu16i, "BFu0s_BFu32ll_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu16ll");
    static BFu0s_BFu32ll_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_BFu32ll_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu32ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu16ll(Test_BFu0s_BFu32ll_BFu16ll, "BFu0s_BFu32ll_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu16s");
    static BFu0s_BFu32ll_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_BFu32ll_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu32ll_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu16s(Test_BFu0s_BFu32ll_BFu16s, "BFu0s_BFu32ll_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu17i");
    static BFu0s_BFu32ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu32ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFu0s_BFu32ll_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu32ll_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu17i(Test_BFu0s_BFu32ll_BFu17i, "BFu0s_BFu32ll_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu17ll");
    static BFu0s_BFu32ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu32ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFu0s_BFu32ll_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu32ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu17ll(Test_BFu0s_BFu32ll_BFu17ll, "BFu0s_BFu32ll_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu1c");
    static BFu0s_BFu32ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu1c");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_BFu32ll_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu1c(Test_BFu0s_BFu32ll_BFu1c, "BFu0s_BFu32ll_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu1i");
    static BFu0s_BFu32ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu1i");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_BFu32ll_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu1i(Test_BFu0s_BFu32ll_BFu1i, "BFu0s_BFu32ll_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu1ll");
    static BFu0s_BFu32ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu1ll");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_BFu32ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu1ll(Test_BFu0s_BFu32ll_BFu1ll, "BFu0s_BFu32ll_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu1s");
    static BFu0s_BFu32ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu1s");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_BFu32ll_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu1s(Test_BFu0s_BFu32ll_BFu1s, "BFu0s_BFu32ll_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu31i");
    static BFu0s_BFu32ll_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32ll_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "BFu0s_BFu32ll_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu32ll_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu31i(Test_BFu0s_BFu32ll_BFu31i, "BFu0s_BFu32ll_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu31ll");
    static BFu0s_BFu32ll_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32ll_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "BFu0s_BFu32ll_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu32ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu31ll(Test_BFu0s_BFu32ll_BFu31ll, "BFu0s_BFu32ll_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu32i");
    static BFu0s_BFu32ll_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32ll_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "BFu0s_BFu32ll_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu32i(Test_BFu0s_BFu32ll_BFu32i, "BFu0s_BFu32ll_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu32ll");
    static BFu0s_BFu32ll_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32ll_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "BFu0s_BFu32ll_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu32ll(Test_BFu0s_BFu32ll_BFu32ll, "BFu0s_BFu32ll_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu33()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu33");
    static BFu0s_BFu32ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu32ll_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "BFu0s_BFu32ll_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu32ll_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu33(Test_BFu0s_BFu32ll_BFu33, "BFu0s_BFu32ll_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu7c");
    static BFu0s_BFu32ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_BFu32ll_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu32ll_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu7c(Test_BFu0s_BFu32ll_BFu7c, "BFu0s_BFu32ll_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu7i");
    static BFu0s_BFu32ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_BFu32ll_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu32ll_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu7i(Test_BFu0s_BFu32ll_BFu7i, "BFu0s_BFu32ll_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu7ll");
    static BFu0s_BFu32ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_BFu32ll_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu32ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu7ll(Test_BFu0s_BFu32ll_BFu7ll, "BFu0s_BFu32ll_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu7s");
    static BFu0s_BFu32ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_BFu32ll_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu32ll_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu7s(Test_BFu0s_BFu32ll_BFu7s, "BFu0s_BFu32ll_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu8c");
    static BFu0s_BFu32ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_BFu32ll_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu32ll_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu8c(Test_BFu0s_BFu32ll_BFu8c, "BFu0s_BFu32ll_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu8i");
    static BFu0s_BFu32ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_BFu32ll_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu32ll_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu8i(Test_BFu0s_BFu32ll_BFu8i, "BFu0s_BFu32ll_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu8ll");
    static BFu0s_BFu32ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_BFu32ll_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu32ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu8ll(Test_BFu0s_BFu32ll_BFu8ll, "BFu0s_BFu32ll_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu8s");
    static BFu0s_BFu32ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_BFu32ll_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu32ll_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu8s(Test_BFu0s_BFu32ll_BFu8s, "BFu0s_BFu32ll_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu9i");
    static BFu0s_BFu32ll_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32ll_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_BFu32ll_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu32ll_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu9i(Test_BFu0s_BFu32ll_BFu9i, "BFu0s_BFu32ll_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu9ll");
    static BFu0s_BFu32ll_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32ll_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_BFu32ll_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu32ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu9ll(Test_BFu0s_BFu32ll_BFu9ll, "BFu0s_BFu32ll_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu32ll_BFu9s");
    static BFu0s_BFu32ll_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32ll_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_BFu32ll_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu32ll_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_BFu9s(Test_BFu0s_BFu32ll_BFu9s, "BFu0s_BFu32ll_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_C()
{
  {
    init_simple_test("BFu0s_BFu32ll_C");
    static BFu0s_BFu32ll_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_C");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_C");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_C(Test_BFu0s_BFu32ll_C, "BFu0s_BFu32ll_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_D()
{
  {
    init_simple_test("BFu0s_BFu32ll_D");
    static BFu0s_BFu32ll_D lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu32ll_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_D");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_D");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_D(Test_BFu0s_BFu32ll_D, "BFu0s_BFu32ll_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_F()
{
  {
    init_simple_test("BFu0s_BFu32ll_F");
    static BFu0s_BFu32ll_F lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32ll_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_F");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_F");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_F(Test_BFu0s_BFu32ll_F, "BFu0s_BFu32ll_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_I()
{
  {
    init_simple_test("BFu0s_BFu32ll_I");
    static BFu0s_BFu32ll_I lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32ll_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_I");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_I");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_I(Test_BFu0s_BFu32ll_I, "BFu0s_BFu32ll_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_Ip()
{
  {
    init_simple_test("BFu0s_BFu32ll_Ip");
    static BFu0s_BFu32ll_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_BFu32ll_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_Ip");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_Ip(Test_BFu0s_BFu32ll_Ip, "BFu0s_BFu32ll_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_L()
{
  {
    init_simple_test("BFu0s_BFu32ll_L");
    static BFu0s_BFu32ll_L lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu32ll_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_L");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_L");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_L(Test_BFu0s_BFu32ll_L, "BFu0s_BFu32ll_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_S()
{
  {
    init_simple_test("BFu0s_BFu32ll_S");
    static BFu0s_BFu32ll_S lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32ll_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_S");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_S");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_S(Test_BFu0s_BFu32ll_S, "BFu0s_BFu32ll_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_Uc()
{
  {
    init_simple_test("BFu0s_BFu32ll_Uc");
    static BFu0s_BFu32ll_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu32ll_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_Uc");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_Uc(Test_BFu0s_BFu32ll_Uc, "BFu0s_BFu32ll_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_Ui()
{
  {
    init_simple_test("BFu0s_BFu32ll_Ui");
    static BFu0s_BFu32ll_Ui lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu32ll_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_Ui");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_Ui(Test_BFu0s_BFu32ll_Ui, "BFu0s_BFu32ll_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_Ul()
{
  {
    init_simple_test("BFu0s_BFu32ll_Ul");
    static BFu0s_BFu32ll_Ul lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_BFu32ll_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_Ul");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_Ul(Test_BFu0s_BFu32ll_Ul, "BFu0s_BFu32ll_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_Us()
{
  {
    init_simple_test("BFu0s_BFu32ll_Us");
    static BFu0s_BFu32ll_Us lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu32ll_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_Us");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_Us(Test_BFu0s_BFu32ll_Us, "BFu0s_BFu32ll_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu32ll_Vp()
{
  {
    init_simple_test("BFu0s_BFu32ll_Vp");
    static BFu0s_BFu32ll_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_BFu32ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu32ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 32, 1, "BFu0s_BFu32ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu32ll_Vp");
    check_field_offset(lv, v2, 4, "BFu0s_BFu32ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu32ll_Vp(Test_BFu0s_BFu32ll_Vp, "BFu0s_BFu32ll_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33()
{
  {
    init_simple_test("BFu0s_BFu33");
    static BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33(Test_BFu0s_BFu33, "BFu0s_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu33_BFu0c");
    static BFu0s_BFu33_BFu0c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu33_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu0c(Test_BFu0s_BFu33_BFu0c, "BFu0s_BFu33_BFu0c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu33_BFu0i");
    static BFu0s_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu0s_BFu33_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu0i(Test_BFu0s_BFu33_BFu0i, "BFu0s_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu33_BFu0ll");
    static BFu0s_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu0s_BFu33_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu0ll(Test_BFu0s_BFu33_BFu0ll, "BFu0s_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu33_BFu0s");
    static BFu0s_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu0s_BFu33_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu0s(Test_BFu0s_BFu33_BFu0s, "BFu0s_BFu33_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu33_BFu15i");
    static BFu0s_BFu33_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu15i");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "BFu0s_BFu33_BFu15i");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu33_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu15i(Test_BFu0s_BFu33_BFu15i, "BFu0s_BFu33_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu33_BFu15ll");
    static BFu0s_BFu33_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu15ll");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "BFu0s_BFu33_BFu15ll");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu33_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu15ll(Test_BFu0s_BFu33_BFu15ll, "BFu0s_BFu33_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu33_BFu15s");
    static BFu0s_BFu33_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu15s");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "BFu0s_BFu33_BFu15s");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu33_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu15s(Test_BFu0s_BFu33_BFu15s, "BFu0s_BFu33_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu33_BFu16i");
    static BFu0s_BFu33_BFu16i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu33_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu16i");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "BFu0s_BFu33_BFu16i");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu33_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu16i(Test_BFu0s_BFu33_BFu16i, "BFu0s_BFu33_BFu16i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu33_BFu16ll");
    static BFu0s_BFu33_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu33_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu16ll");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "BFu0s_BFu33_BFu16ll");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu33_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu16ll(Test_BFu0s_BFu33_BFu16ll, "BFu0s_BFu33_BFu16ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu33_BFu16s");
    static BFu0s_BFu33_BFu16s lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu33_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu16s");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "BFu0s_BFu33_BFu16s");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu33_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu16s(Test_BFu0s_BFu33_BFu16s, "BFu0s_BFu33_BFu16s", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu33_BFu17i");
    static BFu0s_BFu33_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu33_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu17i");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "BFu0s_BFu33_BFu17i");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu33_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu17i(Test_BFu0s_BFu33_BFu17i, "BFu0s_BFu33_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu33_BFu17ll");
    static BFu0s_BFu33_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu33_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu17ll");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "BFu0s_BFu33_BFu17ll");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu33_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu17ll(Test_BFu0s_BFu33_BFu17ll, "BFu0s_BFu33_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu33_BFu1c");
    static BFu0s_BFu33_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu33_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu1c");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "BFu0s_BFu33_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu1c(Test_BFu0s_BFu33_BFu1c, "BFu0s_BFu33_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu33_BFu1i");
    static BFu0s_BFu33_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu33_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu1i");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "BFu0s_BFu33_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu1i(Test_BFu0s_BFu33_BFu1i, "BFu0s_BFu33_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu33_BFu1ll");
    static BFu0s_BFu33_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu33_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu1ll");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "BFu0s_BFu33_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu1ll(Test_BFu0s_BFu33_BFu1ll, "BFu0s_BFu33_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu33_BFu1s");
    static BFu0s_BFu33_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu33_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu1s");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "BFu0s_BFu33_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu1s(Test_BFu0s_BFu33_BFu1s, "BFu0s_BFu33_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu33_BFu31i");
    static BFu0s_BFu33_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu33_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu31i");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "BFu0s_BFu33_BFu31i");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu33_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu31i(Test_BFu0s_BFu33_BFu31i, "BFu0s_BFu33_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu33_BFu31ll");
    static BFu0s_BFu33_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_BFu33_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu31ll");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "BFu0s_BFu33_BFu31ll");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu33_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu31ll(Test_BFu0s_BFu33_BFu31ll, "BFu0s_BFu33_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu33_BFu32i");
    static BFu0s_BFu33_BFu32i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu33_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu32i");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "BFu0s_BFu33_BFu32i");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu33_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu32i(Test_BFu0s_BFu33_BFu32i, "BFu0s_BFu33_BFu32i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu33_BFu32ll");
    static BFu0s_BFu33_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu33_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu32ll");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "BFu0s_BFu33_BFu32ll");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu33_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu32ll(Test_BFu0s_BFu33_BFu32ll, "BFu0s_BFu33_BFu32ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu33()
{
  {
    init_simple_test("BFu0s_BFu33_BFu33");
    static BFu0s_BFu33_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu33_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu33");
    set_bf_and_test(lv, v2, 4, 1, 33, 1, "BFu0s_BFu33_BFu33");
    set_bf_and_test(lv, v2, 4, 1, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu33(Test_BFu0s_BFu33_BFu33, "BFu0s_BFu33_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu33_BFu7c");
    static BFu0s_BFu33_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu33_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu7c");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "BFu0s_BFu33_BFu7c");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu33_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu7c(Test_BFu0s_BFu33_BFu7c, "BFu0s_BFu33_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu33_BFu7i");
    static BFu0s_BFu33_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu33_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu7i");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "BFu0s_BFu33_BFu7i");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu33_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu7i(Test_BFu0s_BFu33_BFu7i, "BFu0s_BFu33_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu33_BFu7ll");
    static BFu0s_BFu33_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu33_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu7ll");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "BFu0s_BFu33_BFu7ll");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu33_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu7ll(Test_BFu0s_BFu33_BFu7ll, "BFu0s_BFu33_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu33_BFu7s");
    static BFu0s_BFu33_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu33_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu7s");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "BFu0s_BFu33_BFu7s");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu33_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu7s(Test_BFu0s_BFu33_BFu7s, "BFu0s_BFu33_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu33_BFu8c");
    static BFu0s_BFu33_BFu8c lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu8c");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "BFu0s_BFu33_BFu8c");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu33_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu8c(Test_BFu0s_BFu33_BFu8c, "BFu0s_BFu33_BFu8c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu33_BFu8i");
    static BFu0s_BFu33_BFu8i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu8i");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "BFu0s_BFu33_BFu8i");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu33_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu8i(Test_BFu0s_BFu33_BFu8i, "BFu0s_BFu33_BFu8i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu33_BFu8ll");
    static BFu0s_BFu33_BFu8ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu8ll");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "BFu0s_BFu33_BFu8ll");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu33_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu8ll(Test_BFu0s_BFu33_BFu8ll, "BFu0s_BFu33_BFu8ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu33_BFu8s");
    static BFu0s_BFu33_BFu8s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu8s");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "BFu0s_BFu33_BFu8s");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu33_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu8s(Test_BFu0s_BFu33_BFu8s, "BFu0s_BFu33_BFu8s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu33_BFu9i");
    static BFu0s_BFu33_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu9i");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "BFu0s_BFu33_BFu9i");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu33_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu9i(Test_BFu0s_BFu33_BFu9i, "BFu0s_BFu33_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu33_BFu9ll");
    static BFu0s_BFu33_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu9ll");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "BFu0s_BFu33_BFu9ll");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu33_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu9ll(Test_BFu0s_BFu33_BFu9ll, "BFu0s_BFu33_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu33_BFu9s");
    static BFu0s_BFu33_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_BFu9s");
    set_bf_and_test(lv, v2, 4, 1, 9, 1, "BFu0s_BFu33_BFu9s");
    set_bf_and_test(lv, v2, 4, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu33_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_BFu9s(Test_BFu0s_BFu33_BFu9s, "BFu0s_BFu33_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_C()
{
  {
    init_simple_test("BFu0s_BFu33_C");
    static BFu0s_BFu33_C lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_C)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_C");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_C");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_C(Test_BFu0s_BFu33_C, "BFu0s_BFu33_C", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_D()
{
  {
    init_simple_test("BFu0s_BFu33_D");
    static BFu0s_BFu33_D lv;
    check2(sizeof(lv), ABISELECT(13,13), "sizeof(BFu0s_BFu33_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_D)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_D");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_D");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_D(Test_BFu0s_BFu33_D, "BFu0s_BFu33_D", ABISELECT(13,13));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_F()
{
  {
    init_simple_test("BFu0s_BFu33_F");
    static BFu0s_BFu33_F lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu33_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_F)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_F");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_F");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_F(Test_BFu0s_BFu33_F, "BFu0s_BFu33_F", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_I()
{
  {
    init_simple_test("BFu0s_BFu33_I");
    static BFu0s_BFu33_I lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu33_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_I)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_I");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_I");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_I(Test_BFu0s_BFu33_I, "BFu0s_BFu33_I", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_Ip()
{
  {
    init_simple_test("BFu0s_BFu33_Ip");
    static BFu0s_BFu33_Ip lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(BFu0s_BFu33_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_Ip");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_Ip");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_Ip(Test_BFu0s_BFu33_Ip, "BFu0s_BFu33_Ip", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_L()
{
  {
    init_simple_test("BFu0s_BFu33_L");
    static BFu0s_BFu33_L lv;
    check2(sizeof(lv), ABISELECT(13,13), "sizeof(BFu0s_BFu33_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_L)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_L");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_L");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_L(Test_BFu0s_BFu33_L, "BFu0s_BFu33_L", ABISELECT(13,13));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_S()
{
  {
    init_simple_test("BFu0s_BFu33_S");
    static BFu0s_BFu33_S lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu33_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_S)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_S");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_S");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_S(Test_BFu0s_BFu33_S, "BFu0s_BFu33_S", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_Uc()
{
  {
    init_simple_test("BFu0s_BFu33_Uc");
    static BFu0s_BFu33_Uc lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu33_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_Uc");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_Uc");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_Uc(Test_BFu0s_BFu33_Uc, "BFu0s_BFu33_Uc", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_Ui()
{
  {
    init_simple_test("BFu0s_BFu33_Ui");
    static BFu0s_BFu33_Ui lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu33_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_Ui");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_Ui");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_Ui(Test_BFu0s_BFu33_Ui, "BFu0s_BFu33_Ui", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_Ul()
{
  {
    init_simple_test("BFu0s_BFu33_Ul");
    static BFu0s_BFu33_Ul lv;
    check2(sizeof(lv), ABISELECT(13,13), "sizeof(BFu0s_BFu33_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_Ul");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_Ul");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_Ul(Test_BFu0s_BFu33_Ul, "BFu0s_BFu33_Ul", ABISELECT(13,13));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_Us()
{
  {
    init_simple_test("BFu0s_BFu33_Us");
    static BFu0s_BFu33_Us lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_BFu33_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_Us)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_Us");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_Us");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_Us(Test_BFu0s_BFu33_Us, "BFu0s_BFu33_Us", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu33_Vp()
{
  {
    init_simple_test("BFu0s_BFu33_Vp");
    static BFu0s_BFu33_Vp lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(BFu0s_BFu33_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu33_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "BFu0s_BFu33_Vp");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu33_Vp");
    check_field_offset(lv, v2, 5, "BFu0s_BFu33_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu33_Vp(Test_BFu0s_BFu33_Vp, "BFu0s_BFu33_Vp", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu7c");
    static BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c(Test_BFu0s_BFu7c, "BFu0s_BFu7c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu0c");
    static BFu0s_BFu7c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu0c(Test_BFu0s_BFu7c_BFu0c, "BFu0s_BFu7c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu0i");
    static BFu0s_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu7c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu0i(Test_BFu0s_BFu7c_BFu0i, "BFu0s_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu0ll");
    static BFu0s_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu7c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu0ll(Test_BFu0s_BFu7c_BFu0ll, "BFu0s_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu0s");
    static BFu0s_BFu7c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu7c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu0s(Test_BFu0s_BFu7c_BFu0s, "BFu0s_BFu7c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu15i");
    static BFu0s_BFu7c_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7c_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu15i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7c_BFu15i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7c_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu15i(Test_BFu0s_BFu7c_BFu15i, "BFu0s_BFu7c_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu15ll");
    static BFu0s_BFu7c_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7c_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu15ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7c_BFu15ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7c_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu15ll(Test_BFu0s_BFu7c_BFu15ll, "BFu0s_BFu7c_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu15s");
    static BFu0s_BFu7c_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7c_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu15s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7c_BFu15s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7c_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu15s(Test_BFu0s_BFu7c_BFu15s, "BFu0s_BFu7c_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu16i");
    static BFu0s_BFu7c_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7c_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu16i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7c_BFu16i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7c_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu16i(Test_BFu0s_BFu7c_BFu16i, "BFu0s_BFu7c_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu16ll");
    static BFu0s_BFu7c_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7c_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu16ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7c_BFu16ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7c_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu16ll(Test_BFu0s_BFu7c_BFu16ll, "BFu0s_BFu7c_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu16s");
    static BFu0s_BFu7c_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7c_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu16s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7c_BFu16s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7c_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu16s(Test_BFu0s_BFu7c_BFu16s, "BFu0s_BFu7c_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu17i");
    static BFu0s_BFu7c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7c_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu17i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "BFu0s_BFu7c_BFu17i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu7c_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu17i(Test_BFu0s_BFu7c_BFu17i, "BFu0s_BFu7c_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu17ll");
    static BFu0s_BFu7c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7c_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu17ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "BFu0s_BFu7c_BFu17ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu7c_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu17ll(Test_BFu0s_BFu7c_BFu17ll, "BFu0s_BFu7c_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu1c");
    static BFu0s_BFu7c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu1c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7c_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu1c(Test_BFu0s_BFu7c_BFu1c, "BFu0s_BFu7c_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu1i");
    static BFu0s_BFu7c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu1i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7c_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu1i(Test_BFu0s_BFu7c_BFu1i, "BFu0s_BFu7c_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu1ll");
    static BFu0s_BFu7c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu1ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7c_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu1ll(Test_BFu0s_BFu7c_BFu1ll, "BFu0s_BFu7c_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu1s");
    static BFu0s_BFu7c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu1s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7c_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu1s(Test_BFu0s_BFu7c_BFu1s, "BFu0s_BFu7c_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu31i");
    static BFu0s_BFu7c_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7c_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu31i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "BFu0s_BFu7c_BFu31i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu7c_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu31i(Test_BFu0s_BFu7c_BFu31i, "BFu0s_BFu7c_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu31ll");
    static BFu0s_BFu7c_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7c_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu31ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "BFu0s_BFu7c_BFu31ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu7c_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu31ll(Test_BFu0s_BFu7c_BFu31ll, "BFu0s_BFu7c_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu32i");
    static BFu0s_BFu7c_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7c_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu32i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "BFu0s_BFu7c_BFu32i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu7c_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu32i(Test_BFu0s_BFu7c_BFu32i, "BFu0s_BFu7c_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu32ll");
    static BFu0s_BFu7c_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7c_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu32ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "BFu0s_BFu7c_BFu32ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu7c_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu32ll(Test_BFu0s_BFu7c_BFu32ll, "BFu0s_BFu7c_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu33()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu33");
    static BFu0s_BFu7c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7c_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu33");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "BFu0s_BFu7c_BFu33");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "BFu0s_BFu7c_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu33(Test_BFu0s_BFu7c_BFu33, "BFu0s_BFu7c_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu7c");
    static BFu0s_BFu7c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu7c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7c_BFu7c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu7c(Test_BFu0s_BFu7c_BFu7c, "BFu0s_BFu7c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu7i");
    static BFu0s_BFu7c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu7i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7c_BFu7i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu7i(Test_BFu0s_BFu7c_BFu7i, "BFu0s_BFu7c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu7ll");
    static BFu0s_BFu7c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu7ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7c_BFu7ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu7ll(Test_BFu0s_BFu7c_BFu7ll, "BFu0s_BFu7c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu7s");
    static BFu0s_BFu7c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu7s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7c_BFu7s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu7s(Test_BFu0s_BFu7c_BFu7s, "BFu0s_BFu7c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu8c");
    static BFu0s_BFu7c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu8c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7c_BFu8c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7c_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu8c(Test_BFu0s_BFu7c_BFu8c, "BFu0s_BFu7c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu8i");
    static BFu0s_BFu7c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu8i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7c_BFu8i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7c_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu8i(Test_BFu0s_BFu7c_BFu8i, "BFu0s_BFu7c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu8ll");
    static BFu0s_BFu7c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu8ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7c_BFu8ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7c_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu8ll(Test_BFu0s_BFu7c_BFu8ll, "BFu0s_BFu7c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu8s");
    static BFu0s_BFu7c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu8s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7c_BFu8s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7c_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu8s(Test_BFu0s_BFu7c_BFu8s, "BFu0s_BFu7c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu9i");
    static BFu0s_BFu7c_BFu9i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu9i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7c_BFu9i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7c_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu9i(Test_BFu0s_BFu7c_BFu9i, "BFu0s_BFu7c_BFu9i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu9ll");
    static BFu0s_BFu7c_BFu9ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu9ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7c_BFu9ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7c_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu9ll(Test_BFu0s_BFu7c_BFu9ll, "BFu0s_BFu7c_BFu9ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu7c_BFu9s");
    static BFu0s_BFu7c_BFu9s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_BFu9s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7c_BFu9s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7c_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_BFu9s(Test_BFu0s_BFu7c_BFu9s, "BFu0s_BFu7c_BFu9s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_C()
{
  {
    init_simple_test("BFu0s_BFu7c_C");
    static BFu0s_BFu7c_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_C(Test_BFu0s_BFu7c_C, "BFu0s_BFu7c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_D()
{
  {
    init_simple_test("BFu0s_BFu7c_D");
    static BFu0s_BFu7c_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7c_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_D(Test_BFu0s_BFu7c_D, "BFu0s_BFu7c_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_F()
{
  {
    init_simple_test("BFu0s_BFu7c_F");
    static BFu0s_BFu7c_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7c_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_F(Test_BFu0s_BFu7c_F, "BFu0s_BFu7c_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_I()
{
  {
    init_simple_test("BFu0s_BFu7c_I");
    static BFu0s_BFu7c_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7c_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_I(Test_BFu0s_BFu7c_I, "BFu0s_BFu7c_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_Ip()
{
  {
    init_simple_test("BFu0s_BFu7c_Ip");
    static BFu0s_BFu7c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu7c_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_Ip(Test_BFu0s_BFu7c_Ip, "BFu0s_BFu7c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_L()
{
  {
    init_simple_test("BFu0s_BFu7c_L");
    static BFu0s_BFu7c_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7c_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_L(Test_BFu0s_BFu7c_L, "BFu0s_BFu7c_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_S()
{
  {
    init_simple_test("BFu0s_BFu7c_S");
    static BFu0s_BFu7c_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7c_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_S(Test_BFu0s_BFu7c_S, "BFu0s_BFu7c_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_Uc()
{
  {
    init_simple_test("BFu0s_BFu7c_Uc");
    static BFu0s_BFu7c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7c_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_Uc(Test_BFu0s_BFu7c_Uc, "BFu0s_BFu7c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_Ui()
{
  {
    init_simple_test("BFu0s_BFu7c_Ui");
    static BFu0s_BFu7c_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7c_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_Ui(Test_BFu0s_BFu7c_Ui, "BFu0s_BFu7c_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_Ul()
{
  {
    init_simple_test("BFu0s_BFu7c_Ul");
    static BFu0s_BFu7c_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7c_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_Ul(Test_BFu0s_BFu7c_Ul, "BFu0s_BFu7c_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_Us()
{
  {
    init_simple_test("BFu0s_BFu7c_Us");
    static BFu0s_BFu7c_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7c_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_Us(Test_BFu0s_BFu7c_Us, "BFu0s_BFu7c_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7c_Vp()
{
  {
    init_simple_test("BFu0s_BFu7c_Vp");
    static BFu0s_BFu7c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu7c_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7c_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7c_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7c_Vp(Test_BFu0s_BFu7c_Vp, "BFu0s_BFu7c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu7i");
    static BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i(Test_BFu0s_BFu7i, "BFu0s_BFu7i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu0c");
    static BFu0s_BFu7i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu0c(Test_BFu0s_BFu7i_BFu0c, "BFu0s_BFu7i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu0i");
    static BFu0s_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu7i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu0i(Test_BFu0s_BFu7i_BFu0i, "BFu0s_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu0ll");
    static BFu0s_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu7i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu0ll(Test_BFu0s_BFu7i_BFu0ll, "BFu0s_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu0s");
    static BFu0s_BFu7i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu7i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu0s(Test_BFu0s_BFu7i_BFu0s, "BFu0s_BFu7i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu15i");
    static BFu0s_BFu7i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu15i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7i_BFu15i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7i_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu15i(Test_BFu0s_BFu7i_BFu15i, "BFu0s_BFu7i_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu15ll");
    static BFu0s_BFu7i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu15ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7i_BFu15ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7i_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu15ll(Test_BFu0s_BFu7i_BFu15ll, "BFu0s_BFu7i_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu15s");
    static BFu0s_BFu7i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu15s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7i_BFu15s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7i_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu15s(Test_BFu0s_BFu7i_BFu15s, "BFu0s_BFu7i_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu16i");
    static BFu0s_BFu7i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu16i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7i_BFu16i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7i_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu16i(Test_BFu0s_BFu7i_BFu16i, "BFu0s_BFu7i_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu16ll");
    static BFu0s_BFu7i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu16ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7i_BFu16ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7i_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu16ll(Test_BFu0s_BFu7i_BFu16ll, "BFu0s_BFu7i_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu16s");
    static BFu0s_BFu7i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu16s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7i_BFu16s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7i_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu16s(Test_BFu0s_BFu7i_BFu16s, "BFu0s_BFu7i_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu17i");
    static BFu0s_BFu7i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu17i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "BFu0s_BFu7i_BFu17i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu7i_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu17i(Test_BFu0s_BFu7i_BFu17i, "BFu0s_BFu7i_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu17ll");
    static BFu0s_BFu7i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu17ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "BFu0s_BFu7i_BFu17ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu7i_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu17ll(Test_BFu0s_BFu7i_BFu17ll, "BFu0s_BFu7i_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu1c");
    static BFu0s_BFu7i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu1c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7i_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu1c(Test_BFu0s_BFu7i_BFu1c, "BFu0s_BFu7i_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu1i");
    static BFu0s_BFu7i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu1i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7i_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu1i(Test_BFu0s_BFu7i_BFu1i, "BFu0s_BFu7i_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu1ll");
    static BFu0s_BFu7i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu1ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7i_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu1ll(Test_BFu0s_BFu7i_BFu1ll, "BFu0s_BFu7i_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu1s");
    static BFu0s_BFu7i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu1s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7i_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu1s(Test_BFu0s_BFu7i_BFu1s, "BFu0s_BFu7i_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu31i");
    static BFu0s_BFu7i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7i_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu31i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "BFu0s_BFu7i_BFu31i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu7i_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu31i(Test_BFu0s_BFu7i_BFu31i, "BFu0s_BFu7i_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu31ll");
    static BFu0s_BFu7i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7i_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu31ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "BFu0s_BFu7i_BFu31ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu7i_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu31ll(Test_BFu0s_BFu7i_BFu31ll, "BFu0s_BFu7i_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu32i");
    static BFu0s_BFu7i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7i_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu32i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "BFu0s_BFu7i_BFu32i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu7i_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu32i(Test_BFu0s_BFu7i_BFu32i, "BFu0s_BFu7i_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu32ll");
    static BFu0s_BFu7i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7i_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu32ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "BFu0s_BFu7i_BFu32ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu7i_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu32ll(Test_BFu0s_BFu7i_BFu32ll, "BFu0s_BFu7i_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu33()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu33");
    static BFu0s_BFu7i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7i_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu33");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "BFu0s_BFu7i_BFu33");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "BFu0s_BFu7i_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu33(Test_BFu0s_BFu7i_BFu33, "BFu0s_BFu7i_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu7c");
    static BFu0s_BFu7i_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu7c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7i_BFu7c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu7c(Test_BFu0s_BFu7i_BFu7c, "BFu0s_BFu7i_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu7i");
    static BFu0s_BFu7i_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu7i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7i_BFu7i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu7i(Test_BFu0s_BFu7i_BFu7i, "BFu0s_BFu7i_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu7ll");
    static BFu0s_BFu7i_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu7ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7i_BFu7ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu7ll(Test_BFu0s_BFu7i_BFu7ll, "BFu0s_BFu7i_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu7s");
    static BFu0s_BFu7i_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu7s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7i_BFu7s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu7s(Test_BFu0s_BFu7i_BFu7s, "BFu0s_BFu7i_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu8c");
    static BFu0s_BFu7i_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu8c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7i_BFu8c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7i_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu8c(Test_BFu0s_BFu7i_BFu8c, "BFu0s_BFu7i_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu8i");
    static BFu0s_BFu7i_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu8i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7i_BFu8i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7i_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu8i(Test_BFu0s_BFu7i_BFu8i, "BFu0s_BFu7i_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu8ll");
    static BFu0s_BFu7i_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu8ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7i_BFu8ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7i_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu8ll(Test_BFu0s_BFu7i_BFu8ll, "BFu0s_BFu7i_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu8s");
    static BFu0s_BFu7i_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu8s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7i_BFu8s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7i_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu8s(Test_BFu0s_BFu7i_BFu8s, "BFu0s_BFu7i_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu9i");
    static BFu0s_BFu7i_BFu9i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu9i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7i_BFu9i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7i_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu9i(Test_BFu0s_BFu7i_BFu9i, "BFu0s_BFu7i_BFu9i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu9ll");
    static BFu0s_BFu7i_BFu9ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu9ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7i_BFu9ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7i_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu9ll(Test_BFu0s_BFu7i_BFu9ll, "BFu0s_BFu7i_BFu9ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu7i_BFu9s");
    static BFu0s_BFu7i_BFu9s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_BFu9s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7i_BFu9s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7i_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_BFu9s(Test_BFu0s_BFu7i_BFu9s, "BFu0s_BFu7i_BFu9s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_C()
{
  {
    init_simple_test("BFu0s_BFu7i_C");
    static BFu0s_BFu7i_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_C(Test_BFu0s_BFu7i_C, "BFu0s_BFu7i_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_D()
{
  {
    init_simple_test("BFu0s_BFu7i_D");
    static BFu0s_BFu7i_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7i_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_D(Test_BFu0s_BFu7i_D, "BFu0s_BFu7i_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_F()
{
  {
    init_simple_test("BFu0s_BFu7i_F");
    static BFu0s_BFu7i_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7i_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_F(Test_BFu0s_BFu7i_F, "BFu0s_BFu7i_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_I()
{
  {
    init_simple_test("BFu0s_BFu7i_I");
    static BFu0s_BFu7i_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7i_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_I(Test_BFu0s_BFu7i_I, "BFu0s_BFu7i_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_Ip()
{
  {
    init_simple_test("BFu0s_BFu7i_Ip");
    static BFu0s_BFu7i_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu7i_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_Ip(Test_BFu0s_BFu7i_Ip, "BFu0s_BFu7i_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_L()
{
  {
    init_simple_test("BFu0s_BFu7i_L");
    static BFu0s_BFu7i_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7i_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_L(Test_BFu0s_BFu7i_L, "BFu0s_BFu7i_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_S()
{
  {
    init_simple_test("BFu0s_BFu7i_S");
    static BFu0s_BFu7i_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7i_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_S(Test_BFu0s_BFu7i_S, "BFu0s_BFu7i_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_Uc()
{
  {
    init_simple_test("BFu0s_BFu7i_Uc");
    static BFu0s_BFu7i_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7i_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_Uc(Test_BFu0s_BFu7i_Uc, "BFu0s_BFu7i_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_Ui()
{
  {
    init_simple_test("BFu0s_BFu7i_Ui");
    static BFu0s_BFu7i_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7i_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_Ui(Test_BFu0s_BFu7i_Ui, "BFu0s_BFu7i_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_Ul()
{
  {
    init_simple_test("BFu0s_BFu7i_Ul");
    static BFu0s_BFu7i_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7i_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_Ul(Test_BFu0s_BFu7i_Ul, "BFu0s_BFu7i_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_Us()
{
  {
    init_simple_test("BFu0s_BFu7i_Us");
    static BFu0s_BFu7i_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7i_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_Us(Test_BFu0s_BFu7i_Us, "BFu0s_BFu7i_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7i_Vp()
{
  {
    init_simple_test("BFu0s_BFu7i_Vp");
    static BFu0s_BFu7i_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu7i_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7i_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7i_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7i_Vp(Test_BFu0s_BFu7i_Vp, "BFu0s_BFu7i_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu7ll");
    static BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll(Test_BFu0s_BFu7ll, "BFu0s_BFu7ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu0c");
    static BFu0s_BFu7ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu0c(Test_BFu0s_BFu7ll_BFu0c, "BFu0s_BFu7ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu0i");
    static BFu0s_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu7ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu0i(Test_BFu0s_BFu7ll_BFu0i, "BFu0s_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu0ll");
    static BFu0s_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu0ll(Test_BFu0s_BFu7ll_BFu0ll, "BFu0s_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu0s");
    static BFu0s_BFu7ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu7ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu0s(Test_BFu0s_BFu7ll_BFu0s, "BFu0s_BFu7ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu15i");
    static BFu0s_BFu7ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu15i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7ll_BFu15i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7ll_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu15i(Test_BFu0s_BFu7ll_BFu15i, "BFu0s_BFu7ll_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu15ll");
    static BFu0s_BFu7ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu15ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7ll_BFu15ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu15ll(Test_BFu0s_BFu7ll_BFu15ll, "BFu0s_BFu7ll_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu15s");
    static BFu0s_BFu7ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu15s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7ll_BFu15s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7ll_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu15s(Test_BFu0s_BFu7ll_BFu15s, "BFu0s_BFu7ll_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu16i");
    static BFu0s_BFu7ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu16i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7ll_BFu16i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7ll_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu16i(Test_BFu0s_BFu7ll_BFu16i, "BFu0s_BFu7ll_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu16ll");
    static BFu0s_BFu7ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu16ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7ll_BFu16ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu16ll(Test_BFu0s_BFu7ll_BFu16ll, "BFu0s_BFu7ll_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu16s");
    static BFu0s_BFu7ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu16s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7ll_BFu16s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7ll_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu16s(Test_BFu0s_BFu7ll_BFu16s, "BFu0s_BFu7ll_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu17i");
    static BFu0s_BFu7ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu17i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "BFu0s_BFu7ll_BFu17i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu7ll_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu17i(Test_BFu0s_BFu7ll_BFu17i, "BFu0s_BFu7ll_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu17ll");
    static BFu0s_BFu7ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu17ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "BFu0s_BFu7ll_BFu17ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu7ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu17ll(Test_BFu0s_BFu7ll_BFu17ll, "BFu0s_BFu7ll_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu1c");
    static BFu0s_BFu7ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu1c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7ll_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu1c(Test_BFu0s_BFu7ll_BFu1c, "BFu0s_BFu7ll_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu1i");
    static BFu0s_BFu7ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu1i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7ll_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu1i(Test_BFu0s_BFu7ll_BFu1i, "BFu0s_BFu7ll_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu1ll");
    static BFu0s_BFu7ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu1ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu1ll(Test_BFu0s_BFu7ll_BFu1ll, "BFu0s_BFu7ll_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu1s");
    static BFu0s_BFu7ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu1s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7ll_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu1s(Test_BFu0s_BFu7ll_BFu1s, "BFu0s_BFu7ll_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu31i");
    static BFu0s_BFu7ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7ll_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu31i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "BFu0s_BFu7ll_BFu31i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu7ll_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu31i(Test_BFu0s_BFu7ll_BFu31i, "BFu0s_BFu7ll_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu31ll");
    static BFu0s_BFu7ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7ll_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu31ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "BFu0s_BFu7ll_BFu31ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu7ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu31ll(Test_BFu0s_BFu7ll_BFu31ll, "BFu0s_BFu7ll_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu32i");
    static BFu0s_BFu7ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7ll_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu32i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "BFu0s_BFu7ll_BFu32i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu7ll_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu32i(Test_BFu0s_BFu7ll_BFu32i, "BFu0s_BFu7ll_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu32ll");
    static BFu0s_BFu7ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7ll_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu32ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "BFu0s_BFu7ll_BFu32ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu7ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu32ll(Test_BFu0s_BFu7ll_BFu32ll, "BFu0s_BFu7ll_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu33()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu33");
    static BFu0s_BFu7ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7ll_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu33");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "BFu0s_BFu7ll_BFu33");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "BFu0s_BFu7ll_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu33(Test_BFu0s_BFu7ll_BFu33, "BFu0s_BFu7ll_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu7c");
    static BFu0s_BFu7ll_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu7c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7ll_BFu7c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu7c(Test_BFu0s_BFu7ll_BFu7c, "BFu0s_BFu7ll_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu7i");
    static BFu0s_BFu7ll_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu7i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7ll_BFu7i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu7i(Test_BFu0s_BFu7ll_BFu7i, "BFu0s_BFu7ll_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu7ll");
    static BFu0s_BFu7ll_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu7ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7ll_BFu7ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu7ll(Test_BFu0s_BFu7ll_BFu7ll, "BFu0s_BFu7ll_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu7s");
    static BFu0s_BFu7ll_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu7s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7ll_BFu7s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu7s(Test_BFu0s_BFu7ll_BFu7s, "BFu0s_BFu7ll_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu8c");
    static BFu0s_BFu7ll_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu8c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7ll_BFu8c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7ll_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu8c(Test_BFu0s_BFu7ll_BFu8c, "BFu0s_BFu7ll_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu8i");
    static BFu0s_BFu7ll_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu8i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7ll_BFu8i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7ll_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu8i(Test_BFu0s_BFu7ll_BFu8i, "BFu0s_BFu7ll_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu8ll");
    static BFu0s_BFu7ll_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu8ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7ll_BFu8ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu8ll(Test_BFu0s_BFu7ll_BFu8ll, "BFu0s_BFu7ll_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu8s");
    static BFu0s_BFu7ll_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu8s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7ll_BFu8s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7ll_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu8s(Test_BFu0s_BFu7ll_BFu8s, "BFu0s_BFu7ll_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu9i");
    static BFu0s_BFu7ll_BFu9i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu9i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7ll_BFu9i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7ll_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu9i(Test_BFu0s_BFu7ll_BFu9i, "BFu0s_BFu7ll_BFu9i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu9ll");
    static BFu0s_BFu7ll_BFu9ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu9ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7ll_BFu9ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu9ll(Test_BFu0s_BFu7ll_BFu9ll, "BFu0s_BFu7ll_BFu9ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu7ll_BFu9s");
    static BFu0s_BFu7ll_BFu9s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_BFu9s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7ll_BFu9s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7ll_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_BFu9s(Test_BFu0s_BFu7ll_BFu9s, "BFu0s_BFu7ll_BFu9s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_C()
{
  {
    init_simple_test("BFu0s_BFu7ll_C");
    static BFu0s_BFu7ll_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_C(Test_BFu0s_BFu7ll_C, "BFu0s_BFu7ll_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_D()
{
  {
    init_simple_test("BFu0s_BFu7ll_D");
    static BFu0s_BFu7ll_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7ll_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_D(Test_BFu0s_BFu7ll_D, "BFu0s_BFu7ll_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_F()
{
  {
    init_simple_test("BFu0s_BFu7ll_F");
    static BFu0s_BFu7ll_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7ll_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_F(Test_BFu0s_BFu7ll_F, "BFu0s_BFu7ll_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_I()
{
  {
    init_simple_test("BFu0s_BFu7ll_I");
    static BFu0s_BFu7ll_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7ll_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_I(Test_BFu0s_BFu7ll_I, "BFu0s_BFu7ll_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_Ip()
{
  {
    init_simple_test("BFu0s_BFu7ll_Ip");
    static BFu0s_BFu7ll_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu7ll_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_Ip(Test_BFu0s_BFu7ll_Ip, "BFu0s_BFu7ll_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_L()
{
  {
    init_simple_test("BFu0s_BFu7ll_L");
    static BFu0s_BFu7ll_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7ll_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_L(Test_BFu0s_BFu7ll_L, "BFu0s_BFu7ll_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_S()
{
  {
    init_simple_test("BFu0s_BFu7ll_S");
    static BFu0s_BFu7ll_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7ll_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_S(Test_BFu0s_BFu7ll_S, "BFu0s_BFu7ll_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_Uc()
{
  {
    init_simple_test("BFu0s_BFu7ll_Uc");
    static BFu0s_BFu7ll_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7ll_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_Uc(Test_BFu0s_BFu7ll_Uc, "BFu0s_BFu7ll_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_Ui()
{
  {
    init_simple_test("BFu0s_BFu7ll_Ui");
    static BFu0s_BFu7ll_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7ll_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_Ui(Test_BFu0s_BFu7ll_Ui, "BFu0s_BFu7ll_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_Ul()
{
  {
    init_simple_test("BFu0s_BFu7ll_Ul");
    static BFu0s_BFu7ll_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7ll_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_Ul(Test_BFu0s_BFu7ll_Ul, "BFu0s_BFu7ll_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_Us()
{
  {
    init_simple_test("BFu0s_BFu7ll_Us");
    static BFu0s_BFu7ll_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7ll_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_Us(Test_BFu0s_BFu7ll_Us, "BFu0s_BFu7ll_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7ll_Vp()
{
  {
    init_simple_test("BFu0s_BFu7ll_Vp");
    static BFu0s_BFu7ll_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu7ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7ll_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7ll_Vp(Test_BFu0s_BFu7ll_Vp, "BFu0s_BFu7ll_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu7s");
    static BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s(Test_BFu0s_BFu7s, "BFu0s_BFu7s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu0c");
    static BFu0s_BFu7s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu0c(Test_BFu0s_BFu7s_BFu0c, "BFu0s_BFu7s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu0i");
    static BFu0s_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu7s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu0i(Test_BFu0s_BFu7s_BFu0i, "BFu0s_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu0ll");
    static BFu0s_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu7s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu0ll(Test_BFu0s_BFu7s_BFu0ll, "BFu0s_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu0s");
    static BFu0s_BFu7s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu7s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu0s(Test_BFu0s_BFu7s_BFu0s, "BFu0s_BFu7s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu15i");
    static BFu0s_BFu7s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu15i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7s_BFu15i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7s_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu15i(Test_BFu0s_BFu7s_BFu15i, "BFu0s_BFu7s_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu15ll");
    static BFu0s_BFu7s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu15ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7s_BFu15ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7s_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu15ll(Test_BFu0s_BFu7s_BFu15ll, "BFu0s_BFu7s_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu15s");
    static BFu0s_BFu7s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu15s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "BFu0s_BFu7s_BFu15s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "BFu0s_BFu7s_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu15s(Test_BFu0s_BFu7s_BFu15s, "BFu0s_BFu7s_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu16i");
    static BFu0s_BFu7s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu16i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7s_BFu16i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7s_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu16i(Test_BFu0s_BFu7s_BFu16i, "BFu0s_BFu7s_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu16ll");
    static BFu0s_BFu7s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu16ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7s_BFu16ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7s_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu16ll(Test_BFu0s_BFu7s_BFu16ll, "BFu0s_BFu7s_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu16s");
    static BFu0s_BFu7s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu16s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "BFu0s_BFu7s_BFu16s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "BFu0s_BFu7s_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu16s(Test_BFu0s_BFu7s_BFu16s, "BFu0s_BFu7s_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu17i");
    static BFu0s_BFu7s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7s_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu17i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "BFu0s_BFu7s_BFu17i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu7s_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu17i(Test_BFu0s_BFu7s_BFu17i, "BFu0s_BFu7s_BFu17i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu17ll");
    static BFu0s_BFu7s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7s_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu17ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "BFu0s_BFu7s_BFu17ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "BFu0s_BFu7s_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu17ll(Test_BFu0s_BFu7s_BFu17ll, "BFu0s_BFu7s_BFu17ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu1c");
    static BFu0s_BFu7s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu1c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7s_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu1c(Test_BFu0s_BFu7s_BFu1c, "BFu0s_BFu7s_BFu1c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu1i");
    static BFu0s_BFu7s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu1i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7s_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu1i(Test_BFu0s_BFu7s_BFu1i, "BFu0s_BFu7s_BFu1i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu1ll");
    static BFu0s_BFu7s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu1ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7s_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu1ll(Test_BFu0s_BFu7s_BFu1ll, "BFu0s_BFu7s_BFu1ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu1s");
    static BFu0s_BFu7s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu7s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu1s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "BFu0s_BFu7s_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu1s(Test_BFu0s_BFu7s_BFu1s, "BFu0s_BFu7s_BFu1s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu31i");
    static BFu0s_BFu7s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7s_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu31i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "BFu0s_BFu7s_BFu31i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu7s_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu31i(Test_BFu0s_BFu7s_BFu31i, "BFu0s_BFu7s_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu31ll");
    static BFu0s_BFu7s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7s_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu31ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "BFu0s_BFu7s_BFu31ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "BFu0s_BFu7s_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu31ll(Test_BFu0s_BFu7s_BFu31ll, "BFu0s_BFu7s_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu32i");
    static BFu0s_BFu7s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7s_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu32i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "BFu0s_BFu7s_BFu32i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu7s_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu32i(Test_BFu0s_BFu7s_BFu32i, "BFu0s_BFu7s_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu32ll");
    static BFu0s_BFu7s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7s_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu32ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "BFu0s_BFu7s_BFu32ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "BFu0s_BFu7s_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu32ll(Test_BFu0s_BFu7s_BFu32ll, "BFu0s_BFu7s_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu33()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu33");
    static BFu0s_BFu7s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7s_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu33");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "BFu0s_BFu7s_BFu33");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "BFu0s_BFu7s_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu33(Test_BFu0s_BFu7s_BFu33, "BFu0s_BFu7s_BFu33", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu7c");
    static BFu0s_BFu7s_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu7c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7s_BFu7c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu7c(Test_BFu0s_BFu7s_BFu7c, "BFu0s_BFu7s_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu7i");
    static BFu0s_BFu7s_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu7i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7s_BFu7i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu7i(Test_BFu0s_BFu7s_BFu7i, "BFu0s_BFu7s_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu7ll");
    static BFu0s_BFu7s_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu7ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7s_BFu7ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu7ll(Test_BFu0s_BFu7s_BFu7ll, "BFu0s_BFu7s_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu7s");
    static BFu0s_BFu7s_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu7s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "BFu0s_BFu7s_BFu7s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu7s(Test_BFu0s_BFu7s_BFu7s, "BFu0s_BFu7s_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu8c");
    static BFu0s_BFu7s_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu8c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7s_BFu8c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7s_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu8c(Test_BFu0s_BFu7s_BFu8c, "BFu0s_BFu7s_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu8i");
    static BFu0s_BFu7s_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu8i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7s_BFu8i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7s_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu8i(Test_BFu0s_BFu7s_BFu8i, "BFu0s_BFu7s_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu8ll");
    static BFu0s_BFu7s_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu8ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7s_BFu8ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7s_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu8ll(Test_BFu0s_BFu7s_BFu8ll, "BFu0s_BFu7s_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu8s");
    static BFu0s_BFu7s_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu8s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "BFu0s_BFu7s_BFu8s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "BFu0s_BFu7s_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu8s(Test_BFu0s_BFu7s_BFu8s, "BFu0s_BFu7s_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu9i");
    static BFu0s_BFu7s_BFu9i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu9i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7s_BFu9i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7s_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu9i(Test_BFu0s_BFu7s_BFu9i, "BFu0s_BFu7s_BFu9i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu9ll");
    static BFu0s_BFu7s_BFu9ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu9ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7s_BFu9ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7s_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu9ll(Test_BFu0s_BFu7s_BFu9ll, "BFu0s_BFu7s_BFu9ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu7s_BFu9s");
    static BFu0s_BFu7s_BFu9s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_BFu9s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "BFu0s_BFu7s_BFu9s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "BFu0s_BFu7s_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_BFu9s(Test_BFu0s_BFu7s_BFu9s, "BFu0s_BFu7s_BFu9s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_C()
{
  {
    init_simple_test("BFu0s_BFu7s_C");
    static BFu0s_BFu7s_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_C(Test_BFu0s_BFu7s_C, "BFu0s_BFu7s_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_D()
{
  {
    init_simple_test("BFu0s_BFu7s_D");
    static BFu0s_BFu7s_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7s_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_D(Test_BFu0s_BFu7s_D, "BFu0s_BFu7s_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_F()
{
  {
    init_simple_test("BFu0s_BFu7s_F");
    static BFu0s_BFu7s_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7s_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_F(Test_BFu0s_BFu7s_F, "BFu0s_BFu7s_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_I()
{
  {
    init_simple_test("BFu0s_BFu7s_I");
    static BFu0s_BFu7s_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7s_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_I(Test_BFu0s_BFu7s_I, "BFu0s_BFu7s_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_Ip()
{
  {
    init_simple_test("BFu0s_BFu7s_Ip");
    static BFu0s_BFu7s_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu7s_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_Ip(Test_BFu0s_BFu7s_Ip, "BFu0s_BFu7s_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_L()
{
  {
    init_simple_test("BFu0s_BFu7s_L");
    static BFu0s_BFu7s_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7s_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_L(Test_BFu0s_BFu7s_L, "BFu0s_BFu7s_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_S()
{
  {
    init_simple_test("BFu0s_BFu7s_S");
    static BFu0s_BFu7s_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7s_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_S(Test_BFu0s_BFu7s_S, "BFu0s_BFu7s_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_Uc()
{
  {
    init_simple_test("BFu0s_BFu7s_Uc");
    static BFu0s_BFu7s_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu7s_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_Uc(Test_BFu0s_BFu7s_Uc, "BFu0s_BFu7s_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_Ui()
{
  {
    init_simple_test("BFu0s_BFu7s_Ui");
    static BFu0s_BFu7s_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu7s_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_Ui(Test_BFu0s_BFu7s_Ui, "BFu0s_BFu7s_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_Ul()
{
  {
    init_simple_test("BFu0s_BFu7s_Ul");
    static BFu0s_BFu7s_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu7s_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_Ul(Test_BFu0s_BFu7s_Ul, "BFu0s_BFu7s_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_Us()
{
  {
    init_simple_test("BFu0s_BFu7s_Us");
    static BFu0s_BFu7s_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu7s_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_Us(Test_BFu0s_BFu7s_Us, "BFu0s_BFu7s_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu7s_Vp()
{
  {
    init_simple_test("BFu0s_BFu7s_Vp");
    static BFu0s_BFu7s_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu7s_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu7s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "BFu0s_BFu7s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu7s_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu7s_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu7s_Vp(Test_BFu0s_BFu7s_Vp, "BFu0s_BFu7s_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu8c");
    static BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c(Test_BFu0s_BFu8c, "BFu0s_BFu8c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu0c");
    static BFu0s_BFu8c_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu8c_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu0c(Test_BFu0s_BFu8c_BFu0c, "BFu0s_BFu8c_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu0i");
    static BFu0s_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu8c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu0i(Test_BFu0s_BFu8c_BFu0i, "BFu0s_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu0ll");
    static BFu0s_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu8c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu0ll(Test_BFu0s_BFu8c_BFu0ll, "BFu0s_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu0s");
    static BFu0s_BFu8c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu8c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu0s(Test_BFu0s_BFu8c_BFu0s, "BFu0s_BFu8c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu15i");
    static BFu0s_BFu8c_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8c_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8c_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu15i(Test_BFu0s_BFu8c_BFu15i, "BFu0s_BFu8c_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu15ll");
    static BFu0s_BFu8c_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8c_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8c_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu15ll(Test_BFu0s_BFu8c_BFu15ll, "BFu0s_BFu8c_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu15s");
    static BFu0s_BFu8c_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8c_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8c_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu15s(Test_BFu0s_BFu8c_BFu15s, "BFu0s_BFu8c_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu16i");
    static BFu0s_BFu8c_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8c_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8c_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu16i(Test_BFu0s_BFu8c_BFu16i, "BFu0s_BFu8c_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu16ll");
    static BFu0s_BFu8c_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8c_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8c_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu16ll(Test_BFu0s_BFu8c_BFu16ll, "BFu0s_BFu8c_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu16s");
    static BFu0s_BFu8c_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8c_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8c_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu16s(Test_BFu0s_BFu8c_BFu16s, "BFu0s_BFu8c_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu17i");
    static BFu0s_BFu8c_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu8c_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_BFu8c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu8c_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu17i(Test_BFu0s_BFu8c_BFu17i, "BFu0s_BFu8c_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu17ll");
    static BFu0s_BFu8c_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu8c_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_BFu8c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu8c_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu17ll(Test_BFu0s_BFu8c_BFu17ll, "BFu0s_BFu8c_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu1c");
    static BFu0s_BFu8c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8c_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu1c(Test_BFu0s_BFu8c_BFu1c, "BFu0s_BFu8c_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu1i");
    static BFu0s_BFu8c_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8c_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu1i(Test_BFu0s_BFu8c_BFu1i, "BFu0s_BFu8c_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu1ll");
    static BFu0s_BFu8c_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8c_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu1ll(Test_BFu0s_BFu8c_BFu1ll, "BFu0s_BFu8c_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu1s");
    static BFu0s_BFu8c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8c_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu1s(Test_BFu0s_BFu8c_BFu1s, "BFu0s_BFu8c_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu31i");
    static BFu0s_BFu8c_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8c_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_BFu8c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu8c_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu31i(Test_BFu0s_BFu8c_BFu31i, "BFu0s_BFu8c_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu31ll");
    static BFu0s_BFu8c_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8c_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_BFu8c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu8c_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu31ll(Test_BFu0s_BFu8c_BFu31ll, "BFu0s_BFu8c_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu32i");
    static BFu0s_BFu8c_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8c_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_BFu8c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu8c_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu32i(Test_BFu0s_BFu8c_BFu32i, "BFu0s_BFu8c_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu32ll");
    static BFu0s_BFu8c_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8c_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_BFu8c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu8c_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu32ll(Test_BFu0s_BFu8c_BFu32ll, "BFu0s_BFu8c_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu33()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu33");
    static BFu0s_BFu8c_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu8c_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "BFu0s_BFu8c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu8c_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu33(Test_BFu0s_BFu8c_BFu33, "BFu0s_BFu8c_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu7c");
    static BFu0s_BFu8c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8c_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu7c(Test_BFu0s_BFu8c_BFu7c, "BFu0s_BFu8c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu7i");
    static BFu0s_BFu8c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8c_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu7i(Test_BFu0s_BFu8c_BFu7i, "BFu0s_BFu8c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu7ll");
    static BFu0s_BFu8c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8c_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu7ll(Test_BFu0s_BFu8c_BFu7ll, "BFu0s_BFu8c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu7s");
    static BFu0s_BFu8c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8c_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu7s(Test_BFu0s_BFu8c_BFu7s, "BFu0s_BFu8c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu8c");
    static BFu0s_BFu8c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu8c(Test_BFu0s_BFu8c_BFu8c, "BFu0s_BFu8c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu8i");
    static BFu0s_BFu8c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu8i(Test_BFu0s_BFu8c_BFu8i, "BFu0s_BFu8c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu8ll");
    static BFu0s_BFu8c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu8ll(Test_BFu0s_BFu8c_BFu8ll, "BFu0s_BFu8c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu8s");
    static BFu0s_BFu8c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu8s(Test_BFu0s_BFu8c_BFu8s, "BFu0s_BFu8c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu9i");
    static BFu0s_BFu8c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8c_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8c_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu9i(Test_BFu0s_BFu8c_BFu9i, "BFu0s_BFu8c_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu9ll");
    static BFu0s_BFu8c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8c_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8c_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu9ll(Test_BFu0s_BFu8c_BFu9ll, "BFu0s_BFu8c_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu8c_BFu9s");
    static BFu0s_BFu8c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8c_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8c_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_BFu9s(Test_BFu0s_BFu8c_BFu9s, "BFu0s_BFu8c_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_C()
{
  {
    init_simple_test("BFu0s_BFu8c_C");
    static BFu0s_BFu8c_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_C(Test_BFu0s_BFu8c_C, "BFu0s_BFu8c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_D()
{
  {
    init_simple_test("BFu0s_BFu8c_D");
    static BFu0s_BFu8c_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8c_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_D(Test_BFu0s_BFu8c_D, "BFu0s_BFu8c_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_F()
{
  {
    init_simple_test("BFu0s_BFu8c_F");
    static BFu0s_BFu8c_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8c_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_F(Test_BFu0s_BFu8c_F, "BFu0s_BFu8c_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_I()
{
  {
    init_simple_test("BFu0s_BFu8c_I");
    static BFu0s_BFu8c_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8c_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_I(Test_BFu0s_BFu8c_I, "BFu0s_BFu8c_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_Ip()
{
  {
    init_simple_test("BFu0s_BFu8c_Ip");
    static BFu0s_BFu8c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu8c_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_Ip(Test_BFu0s_BFu8c_Ip, "BFu0s_BFu8c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_L()
{
  {
    init_simple_test("BFu0s_BFu8c_L");
    static BFu0s_BFu8c_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8c_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_L(Test_BFu0s_BFu8c_L, "BFu0s_BFu8c_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_S()
{
  {
    init_simple_test("BFu0s_BFu8c_S");
    static BFu0s_BFu8c_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8c_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_S(Test_BFu0s_BFu8c_S, "BFu0s_BFu8c_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_Uc()
{
  {
    init_simple_test("BFu0s_BFu8c_Uc");
    static BFu0s_BFu8c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8c_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_Uc(Test_BFu0s_BFu8c_Uc, "BFu0s_BFu8c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_Ui()
{
  {
    init_simple_test("BFu0s_BFu8c_Ui");
    static BFu0s_BFu8c_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8c_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_Ui(Test_BFu0s_BFu8c_Ui, "BFu0s_BFu8c_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_Ul()
{
  {
    init_simple_test("BFu0s_BFu8c_Ul");
    static BFu0s_BFu8c_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8c_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_Ul(Test_BFu0s_BFu8c_Ul, "BFu0s_BFu8c_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_Us()
{
  {
    init_simple_test("BFu0s_BFu8c_Us");
    static BFu0s_BFu8c_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8c_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_Us(Test_BFu0s_BFu8c_Us, "BFu0s_BFu8c_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8c_Vp()
{
  {
    init_simple_test("BFu0s_BFu8c_Vp");
    static BFu0s_BFu8c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu8c_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8c_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8c_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8c_Vp(Test_BFu0s_BFu8c_Vp, "BFu0s_BFu8c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu8i");
    static BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i(Test_BFu0s_BFu8i, "BFu0s_BFu8i", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu0c");
    static BFu0s_BFu8i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu8i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu0c(Test_BFu0s_BFu8i_BFu0c, "BFu0s_BFu8i_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu0i");
    static BFu0s_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu8i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu0i(Test_BFu0s_BFu8i_BFu0i, "BFu0s_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu0ll");
    static BFu0s_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu8i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu0ll(Test_BFu0s_BFu8i_BFu0ll, "BFu0s_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu0s");
    static BFu0s_BFu8i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu8i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu0s(Test_BFu0s_BFu8i_BFu0s, "BFu0s_BFu8i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu15i");
    static BFu0s_BFu8i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8i_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8i_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu15i(Test_BFu0s_BFu8i_BFu15i, "BFu0s_BFu8i_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu15ll");
    static BFu0s_BFu8i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8i_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu15ll(Test_BFu0s_BFu8i_BFu15ll, "BFu0s_BFu8i_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu15s");
    static BFu0s_BFu8i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8i_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8i_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu15s(Test_BFu0s_BFu8i_BFu15s, "BFu0s_BFu8i_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu16i");
    static BFu0s_BFu8i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8i_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8i_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu16i(Test_BFu0s_BFu8i_BFu16i, "BFu0s_BFu8i_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu16ll");
    static BFu0s_BFu8i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8i_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8i_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu16ll(Test_BFu0s_BFu8i_BFu16ll, "BFu0s_BFu8i_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu16s");
    static BFu0s_BFu8i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8i_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8i_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu16s(Test_BFu0s_BFu8i_BFu16s, "BFu0s_BFu8i_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu17i");
    static BFu0s_BFu8i_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu8i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_BFu8i_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu8i_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu17i(Test_BFu0s_BFu8i_BFu17i, "BFu0s_BFu8i_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu17ll");
    static BFu0s_BFu8i_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu8i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_BFu8i_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu8i_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu17ll(Test_BFu0s_BFu8i_BFu17ll, "BFu0s_BFu8i_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu1c");
    static BFu0s_BFu8i_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8i_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu1c(Test_BFu0s_BFu8i_BFu1c, "BFu0s_BFu8i_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu1i");
    static BFu0s_BFu8i_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8i_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu1i(Test_BFu0s_BFu8i_BFu1i, "BFu0s_BFu8i_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu1ll");
    static BFu0s_BFu8i_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8i_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu1ll(Test_BFu0s_BFu8i_BFu1ll, "BFu0s_BFu8i_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu1s");
    static BFu0s_BFu8i_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8i_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu1s(Test_BFu0s_BFu8i_BFu1s, "BFu0s_BFu8i_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu31i");
    static BFu0s_BFu8i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8i_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_BFu8i_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu8i_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu31i(Test_BFu0s_BFu8i_BFu31i, "BFu0s_BFu8i_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu31ll");
    static BFu0s_BFu8i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8i_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_BFu8i_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu8i_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu31ll(Test_BFu0s_BFu8i_BFu31ll, "BFu0s_BFu8i_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu32i");
    static BFu0s_BFu8i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8i_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_BFu8i_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu8i_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu32i(Test_BFu0s_BFu8i_BFu32i, "BFu0s_BFu8i_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu32ll");
    static BFu0s_BFu8i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8i_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_BFu8i_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu8i_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu32ll(Test_BFu0s_BFu8i_BFu32ll, "BFu0s_BFu8i_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu33()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu33");
    static BFu0s_BFu8i_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu8i_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "BFu0s_BFu8i_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu8i_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu33(Test_BFu0s_BFu8i_BFu33, "BFu0s_BFu8i_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu7c");
    static BFu0s_BFu8i_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8i_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8i_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu7c(Test_BFu0s_BFu8i_BFu7c, "BFu0s_BFu8i_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu7i");
    static BFu0s_BFu8i_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8i_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8i_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu7i(Test_BFu0s_BFu8i_BFu7i, "BFu0s_BFu8i_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu7ll");
    static BFu0s_BFu8i_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8i_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8i_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu7ll(Test_BFu0s_BFu8i_BFu7ll, "BFu0s_BFu8i_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu7s");
    static BFu0s_BFu8i_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8i_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8i_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu7s(Test_BFu0s_BFu8i_BFu7s, "BFu0s_BFu8i_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu8c");
    static BFu0s_BFu8i_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8i_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu8c(Test_BFu0s_BFu8i_BFu8c, "BFu0s_BFu8i_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu8i");
    static BFu0s_BFu8i_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8i_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu8i(Test_BFu0s_BFu8i_BFu8i, "BFu0s_BFu8i_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu8ll");
    static BFu0s_BFu8i_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8i_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu8ll(Test_BFu0s_BFu8i_BFu8ll, "BFu0s_BFu8i_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu8s");
    static BFu0s_BFu8i_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8i_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu8s(Test_BFu0s_BFu8i_BFu8s, "BFu0s_BFu8i_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu9i");
    static BFu0s_BFu8i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8i_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8i_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8i_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu9i(Test_BFu0s_BFu8i_BFu9i, "BFu0s_BFu8i_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu9ll");
    static BFu0s_BFu8i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8i_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8i_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8i_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu9ll(Test_BFu0s_BFu8i_BFu9ll, "BFu0s_BFu8i_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu8i_BFu9s");
    static BFu0s_BFu8i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8i_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8i_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8i_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_BFu9s(Test_BFu0s_BFu8i_BFu9s, "BFu0s_BFu8i_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_C()
{
  {
    init_simple_test("BFu0s_BFu8i_C");
    static BFu0s_BFu8i_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_C(Test_BFu0s_BFu8i_C, "BFu0s_BFu8i_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_D()
{
  {
    init_simple_test("BFu0s_BFu8i_D");
    static BFu0s_BFu8i_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8i_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_D(Test_BFu0s_BFu8i_D, "BFu0s_BFu8i_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_F()
{
  {
    init_simple_test("BFu0s_BFu8i_F");
    static BFu0s_BFu8i_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8i_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_F(Test_BFu0s_BFu8i_F, "BFu0s_BFu8i_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_I()
{
  {
    init_simple_test("BFu0s_BFu8i_I");
    static BFu0s_BFu8i_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8i_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_I(Test_BFu0s_BFu8i_I, "BFu0s_BFu8i_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_Ip()
{
  {
    init_simple_test("BFu0s_BFu8i_Ip");
    static BFu0s_BFu8i_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu8i_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_Ip(Test_BFu0s_BFu8i_Ip, "BFu0s_BFu8i_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_L()
{
  {
    init_simple_test("BFu0s_BFu8i_L");
    static BFu0s_BFu8i_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8i_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_L(Test_BFu0s_BFu8i_L, "BFu0s_BFu8i_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_S()
{
  {
    init_simple_test("BFu0s_BFu8i_S");
    static BFu0s_BFu8i_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8i_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_S(Test_BFu0s_BFu8i_S, "BFu0s_BFu8i_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_Uc()
{
  {
    init_simple_test("BFu0s_BFu8i_Uc");
    static BFu0s_BFu8i_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8i_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_Uc(Test_BFu0s_BFu8i_Uc, "BFu0s_BFu8i_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_Ui()
{
  {
    init_simple_test("BFu0s_BFu8i_Ui");
    static BFu0s_BFu8i_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8i_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_Ui(Test_BFu0s_BFu8i_Ui, "BFu0s_BFu8i_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_Ul()
{
  {
    init_simple_test("BFu0s_BFu8i_Ul");
    static BFu0s_BFu8i_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8i_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_Ul(Test_BFu0s_BFu8i_Ul, "BFu0s_BFu8i_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_Us()
{
  {
    init_simple_test("BFu0s_BFu8i_Us");
    static BFu0s_BFu8i_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8i_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_Us(Test_BFu0s_BFu8i_Us, "BFu0s_BFu8i_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8i_Vp()
{
  {
    init_simple_test("BFu0s_BFu8i_Vp");
    static BFu0s_BFu8i_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu8i_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8i_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8i_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8i_Vp(Test_BFu0s_BFu8i_Vp, "BFu0s_BFu8i_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu8ll");
    static BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll(Test_BFu0s_BFu8ll, "BFu0s_BFu8ll", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu0c");
    static BFu0s_BFu8ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu8ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu0c(Test_BFu0s_BFu8ll_BFu0c, "BFu0s_BFu8ll_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu0i");
    static BFu0s_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu8ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu0i(Test_BFu0s_BFu8ll_BFu0i, "BFu0s_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu0ll");
    static BFu0s_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu0ll(Test_BFu0s_BFu8ll_BFu0ll, "BFu0s_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu0s");
    static BFu0s_BFu8ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu8ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu0s(Test_BFu0s_BFu8ll_BFu0s, "BFu0s_BFu8ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu15i");
    static BFu0s_BFu8ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8ll_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu15i(Test_BFu0s_BFu8ll_BFu15i, "BFu0s_BFu8ll_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu15ll");
    static BFu0s_BFu8ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu15ll(Test_BFu0s_BFu8ll_BFu15ll, "BFu0s_BFu8ll_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu15s");
    static BFu0s_BFu8ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8ll_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu15s(Test_BFu0s_BFu8ll_BFu15s, "BFu0s_BFu8ll_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu16i");
    static BFu0s_BFu8ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8ll_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8ll_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu16i(Test_BFu0s_BFu8ll_BFu16i, "BFu0s_BFu8ll_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu16ll");
    static BFu0s_BFu8ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8ll_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu16ll(Test_BFu0s_BFu8ll_BFu16ll, "BFu0s_BFu8ll_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu16s");
    static BFu0s_BFu8ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8ll_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8ll_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu16s(Test_BFu0s_BFu8ll_BFu16s, "BFu0s_BFu8ll_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu17i");
    static BFu0s_BFu8ll_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu8ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_BFu8ll_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu8ll_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu17i(Test_BFu0s_BFu8ll_BFu17i, "BFu0s_BFu8ll_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu17ll");
    static BFu0s_BFu8ll_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu8ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_BFu8ll_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu8ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu17ll(Test_BFu0s_BFu8ll_BFu17ll, "BFu0s_BFu8ll_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu1c");
    static BFu0s_BFu8ll_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8ll_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu1c(Test_BFu0s_BFu8ll_BFu1c, "BFu0s_BFu8ll_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu1i");
    static BFu0s_BFu8ll_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8ll_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu1i(Test_BFu0s_BFu8ll_BFu1i, "BFu0s_BFu8ll_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu1ll");
    static BFu0s_BFu8ll_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu1ll(Test_BFu0s_BFu8ll_BFu1ll, "BFu0s_BFu8ll_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu1s");
    static BFu0s_BFu8ll_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8ll_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu1s(Test_BFu0s_BFu8ll_BFu1s, "BFu0s_BFu8ll_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu31i");
    static BFu0s_BFu8ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8ll_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_BFu8ll_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu8ll_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu31i(Test_BFu0s_BFu8ll_BFu31i, "BFu0s_BFu8ll_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu31ll");
    static BFu0s_BFu8ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8ll_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_BFu8ll_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu8ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu31ll(Test_BFu0s_BFu8ll_BFu31ll, "BFu0s_BFu8ll_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu32i");
    static BFu0s_BFu8ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8ll_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_BFu8ll_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu8ll_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu32i(Test_BFu0s_BFu8ll_BFu32i, "BFu0s_BFu8ll_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu32ll");
    static BFu0s_BFu8ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8ll_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_BFu8ll_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu8ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu32ll(Test_BFu0s_BFu8ll_BFu32ll, "BFu0s_BFu8ll_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu33()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu33");
    static BFu0s_BFu8ll_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu8ll_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "BFu0s_BFu8ll_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu8ll_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu33(Test_BFu0s_BFu8ll_BFu33, "BFu0s_BFu8ll_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu7c");
    static BFu0s_BFu8ll_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8ll_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8ll_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu7c(Test_BFu0s_BFu8ll_BFu7c, "BFu0s_BFu8ll_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu7i");
    static BFu0s_BFu8ll_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8ll_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8ll_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu7i(Test_BFu0s_BFu8ll_BFu7i, "BFu0s_BFu8ll_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu7ll");
    static BFu0s_BFu8ll_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8ll_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu7ll(Test_BFu0s_BFu8ll_BFu7ll, "BFu0s_BFu8ll_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu7s");
    static BFu0s_BFu8ll_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8ll_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8ll_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu7s(Test_BFu0s_BFu8ll_BFu7s, "BFu0s_BFu8ll_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu8c");
    static BFu0s_BFu8ll_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8ll_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu8c(Test_BFu0s_BFu8ll_BFu8c, "BFu0s_BFu8ll_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu8i");
    static BFu0s_BFu8ll_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8ll_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu8i(Test_BFu0s_BFu8ll_BFu8i, "BFu0s_BFu8ll_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu8ll");
    static BFu0s_BFu8ll_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8ll_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu8ll(Test_BFu0s_BFu8ll_BFu8ll, "BFu0s_BFu8ll_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu8s");
    static BFu0s_BFu8ll_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8ll_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu8s(Test_BFu0s_BFu8ll_BFu8s, "BFu0s_BFu8ll_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu9i");
    static BFu0s_BFu8ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8ll_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8ll_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8ll_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu9i(Test_BFu0s_BFu8ll_BFu9i, "BFu0s_BFu8ll_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu9ll");
    static BFu0s_BFu8ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8ll_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8ll_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu9ll(Test_BFu0s_BFu8ll_BFu9ll, "BFu0s_BFu8ll_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu8ll_BFu9s");
    static BFu0s_BFu8ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8ll_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8ll_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8ll_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_BFu9s(Test_BFu0s_BFu8ll_BFu9s, "BFu0s_BFu8ll_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_C()
{
  {
    init_simple_test("BFu0s_BFu8ll_C");
    static BFu0s_BFu8ll_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_C(Test_BFu0s_BFu8ll_C, "BFu0s_BFu8ll_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_D()
{
  {
    init_simple_test("BFu0s_BFu8ll_D");
    static BFu0s_BFu8ll_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8ll_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_D(Test_BFu0s_BFu8ll_D, "BFu0s_BFu8ll_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_F()
{
  {
    init_simple_test("BFu0s_BFu8ll_F");
    static BFu0s_BFu8ll_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8ll_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_F(Test_BFu0s_BFu8ll_F, "BFu0s_BFu8ll_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_I()
{
  {
    init_simple_test("BFu0s_BFu8ll_I");
    static BFu0s_BFu8ll_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8ll_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_I(Test_BFu0s_BFu8ll_I, "BFu0s_BFu8ll_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_Ip()
{
  {
    init_simple_test("BFu0s_BFu8ll_Ip");
    static BFu0s_BFu8ll_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu8ll_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_Ip(Test_BFu0s_BFu8ll_Ip, "BFu0s_BFu8ll_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_L()
{
  {
    init_simple_test("BFu0s_BFu8ll_L");
    static BFu0s_BFu8ll_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8ll_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_L(Test_BFu0s_BFu8ll_L, "BFu0s_BFu8ll_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_S()
{
  {
    init_simple_test("BFu0s_BFu8ll_S");
    static BFu0s_BFu8ll_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8ll_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_S(Test_BFu0s_BFu8ll_S, "BFu0s_BFu8ll_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_Uc()
{
  {
    init_simple_test("BFu0s_BFu8ll_Uc");
    static BFu0s_BFu8ll_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8ll_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_Uc(Test_BFu0s_BFu8ll_Uc, "BFu0s_BFu8ll_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_Ui()
{
  {
    init_simple_test("BFu0s_BFu8ll_Ui");
    static BFu0s_BFu8ll_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8ll_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_Ui(Test_BFu0s_BFu8ll_Ui, "BFu0s_BFu8ll_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_Ul()
{
  {
    init_simple_test("BFu0s_BFu8ll_Ul");
    static BFu0s_BFu8ll_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8ll_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_Ul(Test_BFu0s_BFu8ll_Ul, "BFu0s_BFu8ll_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_Us()
{
  {
    init_simple_test("BFu0s_BFu8ll_Us");
    static BFu0s_BFu8ll_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8ll_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_Us(Test_BFu0s_BFu8ll_Us, "BFu0s_BFu8ll_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8ll_Vp()
{
  {
    init_simple_test("BFu0s_BFu8ll_Vp");
    static BFu0s_BFu8ll_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu8ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8ll_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8ll_Vp(Test_BFu0s_BFu8ll_Vp, "BFu0s_BFu8ll_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu8s");
    static BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s(Test_BFu0s_BFu8s, "BFu0s_BFu8s", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu0c");
    static BFu0s_BFu8s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_BFu8s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu0c(Test_BFu0s_BFu8s_BFu0c, "BFu0s_BFu8s_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu0i");
    static BFu0s_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu8s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu0i(Test_BFu0s_BFu8s_BFu0i, "BFu0s_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu0ll");
    static BFu0s_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu8s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu0ll(Test_BFu0s_BFu8s_BFu0ll, "BFu0s_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu0s");
    static BFu0s_BFu8s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_BFu8s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu0s(Test_BFu0s_BFu8s_BFu0s, "BFu0s_BFu8s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu15i");
    static BFu0s_BFu8s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8s_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8s_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu15i(Test_BFu0s_BFu8s_BFu15i, "BFu0s_BFu8s_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu15ll");
    static BFu0s_BFu8s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8s_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu15ll(Test_BFu0s_BFu8s_BFu15ll, "BFu0s_BFu8s_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu15s");
    static BFu0s_BFu8s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_BFu8s_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_BFu8s_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu15s(Test_BFu0s_BFu8s_BFu15s, "BFu0s_BFu8s_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu16i");
    static BFu0s_BFu8s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8s_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8s_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu16i(Test_BFu0s_BFu8s_BFu16i, "BFu0s_BFu8s_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu16ll");
    static BFu0s_BFu8s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8s_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8s_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu16ll(Test_BFu0s_BFu8s_BFu16ll, "BFu0s_BFu8s_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu16s");
    static BFu0s_BFu8s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_BFu8s_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_BFu8s_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu16s(Test_BFu0s_BFu8s_BFu16s, "BFu0s_BFu8s_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu17i");
    static BFu0s_BFu8s_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu8s_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_BFu8s_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu8s_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu17i(Test_BFu0s_BFu8s_BFu17i, "BFu0s_BFu8s_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu17ll");
    static BFu0s_BFu8s_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu8s_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_BFu8s_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_BFu8s_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu17ll(Test_BFu0s_BFu8s_BFu17ll, "BFu0s_BFu8s_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu1c");
    static BFu0s_BFu8s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8s_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu1c(Test_BFu0s_BFu8s_BFu1c, "BFu0s_BFu8s_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu1i");
    static BFu0s_BFu8s_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8s_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu1i(Test_BFu0s_BFu8s_BFu1i, "BFu0s_BFu8s_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu1ll");
    static BFu0s_BFu8s_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8s_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu1ll(Test_BFu0s_BFu8s_BFu1ll, "BFu0s_BFu8s_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu1s");
    static BFu0s_BFu8s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_BFu8s_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu1s(Test_BFu0s_BFu8s_BFu1s, "BFu0s_BFu8s_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu31i");
    static BFu0s_BFu8s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8s_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_BFu8s_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu8s_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu31i(Test_BFu0s_BFu8s_BFu31i, "BFu0s_BFu8s_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu31ll");
    static BFu0s_BFu8s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8s_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_BFu8s_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_BFu8s_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu31ll(Test_BFu0s_BFu8s_BFu31ll, "BFu0s_BFu8s_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu32i");
    static BFu0s_BFu8s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8s_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_BFu8s_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu8s_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu32i(Test_BFu0s_BFu8s_BFu32i, "BFu0s_BFu8s_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu32ll");
    static BFu0s_BFu8s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8s_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_BFu8s_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_BFu8s_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu32ll(Test_BFu0s_BFu8s_BFu32ll, "BFu0s_BFu8s_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu33()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu33");
    static BFu0s_BFu8s_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu8s_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "BFu0s_BFu8s_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "BFu0s_BFu8s_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu33(Test_BFu0s_BFu8s_BFu33, "BFu0s_BFu8s_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu7c");
    static BFu0s_BFu8s_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8s_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8s_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu7c(Test_BFu0s_BFu8s_BFu7c, "BFu0s_BFu8s_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu7i");
    static BFu0s_BFu8s_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8s_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8s_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu7i(Test_BFu0s_BFu8s_BFu7i, "BFu0s_BFu8s_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu7ll");
    static BFu0s_BFu8s_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8s_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8s_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu7ll(Test_BFu0s_BFu8s_BFu7ll, "BFu0s_BFu8s_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu7s");
    static BFu0s_BFu8s_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_BFu8s_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_BFu8s_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu7s(Test_BFu0s_BFu8s_BFu7s, "BFu0s_BFu8s_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu8c");
    static BFu0s_BFu8s_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8s_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu8c(Test_BFu0s_BFu8s_BFu8c, "BFu0s_BFu8s_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu8i");
    static BFu0s_BFu8s_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8s_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu8i(Test_BFu0s_BFu8s_BFu8i, "BFu0s_BFu8s_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu8ll");
    static BFu0s_BFu8s_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8s_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu8ll(Test_BFu0s_BFu8s_BFu8ll, "BFu0s_BFu8s_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu8s");
    static BFu0s_BFu8s_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_BFu8s_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu8s(Test_BFu0s_BFu8s_BFu8s, "BFu0s_BFu8s_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu9i");
    static BFu0s_BFu8s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8s_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8s_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8s_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu9i(Test_BFu0s_BFu8s_BFu9i, "BFu0s_BFu8s_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu9ll");
    static BFu0s_BFu8s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8s_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8s_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8s_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu9ll(Test_BFu0s_BFu8s_BFu9ll, "BFu0s_BFu8s_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu8s_BFu9s");
    static BFu0s_BFu8s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8s_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_BFu8s_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu8s_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_BFu9s(Test_BFu0s_BFu8s_BFu9s, "BFu0s_BFu8s_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_C()
{
  {
    init_simple_test("BFu0s_BFu8s_C");
    static BFu0s_BFu8s_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_C");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_C(Test_BFu0s_BFu8s_C, "BFu0s_BFu8s_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_D()
{
  {
    init_simple_test("BFu0s_BFu8s_D");
    static BFu0s_BFu8s_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8s_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_D");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_D(Test_BFu0s_BFu8s_D, "BFu0s_BFu8s_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_F()
{
  {
    init_simple_test("BFu0s_BFu8s_F");
    static BFu0s_BFu8s_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8s_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_F");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_F(Test_BFu0s_BFu8s_F, "BFu0s_BFu8s_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_I()
{
  {
    init_simple_test("BFu0s_BFu8s_I");
    static BFu0s_BFu8s_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8s_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_I");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_I(Test_BFu0s_BFu8s_I, "BFu0s_BFu8s_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_Ip()
{
  {
    init_simple_test("BFu0s_BFu8s_Ip");
    static BFu0s_BFu8s_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu8s_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_Ip");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_Ip(Test_BFu0s_BFu8s_Ip, "BFu0s_BFu8s_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_L()
{
  {
    init_simple_test("BFu0s_BFu8s_L");
    static BFu0s_BFu8s_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8s_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_L");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_L(Test_BFu0s_BFu8s_L, "BFu0s_BFu8s_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_S()
{
  {
    init_simple_test("BFu0s_BFu8s_S");
    static BFu0s_BFu8s_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8s_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_S");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_S(Test_BFu0s_BFu8s_S, "BFu0s_BFu8s_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_Uc()
{
  {
    init_simple_test("BFu0s_BFu8s_Uc");
    static BFu0s_BFu8s_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu8s_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_Uc");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_Uc(Test_BFu0s_BFu8s_Uc, "BFu0s_BFu8s_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_Ui()
{
  {
    init_simple_test("BFu0s_BFu8s_Ui");
    static BFu0s_BFu8s_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu8s_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_Ui");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_Ui(Test_BFu0s_BFu8s_Ui, "BFu0s_BFu8s_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_Ul()
{
  {
    init_simple_test("BFu0s_BFu8s_Ul");
    static BFu0s_BFu8s_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_BFu8s_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_Ul");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_Ul(Test_BFu0s_BFu8s_Ul, "BFu0s_BFu8s_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_Us()
{
  {
    init_simple_test("BFu0s_BFu8s_Us");
    static BFu0s_BFu8s_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu8s_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_Us");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_Us(Test_BFu0s_BFu8s_Us, "BFu0s_BFu8s_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu8s_Vp()
{
  {
    init_simple_test("BFu0s_BFu8s_Vp");
    static BFu0s_BFu8s_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_BFu8s_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu8s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "BFu0s_BFu8s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "BFu0s_BFu8s_Vp");
    check_field_offset(lv, v2, 1, "BFu0s_BFu8s_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu8s_Vp(Test_BFu0s_BFu8s_Vp, "BFu0s_BFu8s_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu9i");
    static BFu0s_BFu9i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i(Test_BFu0s_BFu9i, "BFu0s_BFu9i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu0c");
    static BFu0s_BFu9i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu0c(Test_BFu0s_BFu9i_BFu0c, "BFu0s_BFu9i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu0i");
    static BFu0s_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu9i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu0i(Test_BFu0s_BFu9i_BFu0i, "BFu0s_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu0ll");
    static BFu0s_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu9i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu0ll(Test_BFu0s_BFu9i_BFu0ll, "BFu0s_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu0s");
    static BFu0s_BFu9i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu0s(Test_BFu0s_BFu9i_BFu0s, "BFu0s_BFu9i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu15i");
    static BFu0s_BFu9i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu15i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "BFu0s_BFu9i_BFu15i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu9i_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu15i(Test_BFu0s_BFu9i_BFu15i, "BFu0s_BFu9i_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu15ll");
    static BFu0s_BFu9i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "BFu0s_BFu9i_BFu15ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu9i_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu15ll(Test_BFu0s_BFu9i_BFu15ll, "BFu0s_BFu9i_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu15s");
    static BFu0s_BFu9i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu15s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "BFu0s_BFu9i_BFu15s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu9i_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu15s(Test_BFu0s_BFu9i_BFu15s, "BFu0s_BFu9i_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu16i");
    static BFu0s_BFu9i_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu16i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "BFu0s_BFu9i_BFu16i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu9i_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu16i(Test_BFu0s_BFu9i_BFu16i, "BFu0s_BFu9i_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu16ll");
    static BFu0s_BFu9i_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu16ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "BFu0s_BFu9i_BFu16ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu9i_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu16ll(Test_BFu0s_BFu9i_BFu16ll, "BFu0s_BFu9i_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu16s");
    static BFu0s_BFu9i_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu16s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "BFu0s_BFu9i_BFu16s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu9i_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu16s(Test_BFu0s_BFu9i_BFu16s, "BFu0s_BFu9i_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu17i");
    static BFu0s_BFu9i_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu17i");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "BFu0s_BFu9i_BFu17i");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu9i_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu17i(Test_BFu0s_BFu9i_BFu17i, "BFu0s_BFu9i_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu17ll");
    static BFu0s_BFu9i_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu17ll");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "BFu0s_BFu9i_BFu17ll");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu9i_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu17ll(Test_BFu0s_BFu9i_BFu17ll, "BFu0s_BFu9i_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu1c");
    static BFu0s_BFu9i_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu1c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9i_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu1c(Test_BFu0s_BFu9i_BFu1c, "BFu0s_BFu9i_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu1i");
    static BFu0s_BFu9i_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu1i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9i_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu1i(Test_BFu0s_BFu9i_BFu1i, "BFu0s_BFu9i_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu1ll");
    static BFu0s_BFu9i_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu1ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9i_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu1ll(Test_BFu0s_BFu9i_BFu1ll, "BFu0s_BFu9i_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu1s");
    static BFu0s_BFu9i_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu1s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9i_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu1s(Test_BFu0s_BFu9i_BFu1s, "BFu0s_BFu9i_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu31i");
    static BFu0s_BFu9i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu9i_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu31i");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "BFu0s_BFu9i_BFu31i");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu9i_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu31i(Test_BFu0s_BFu9i_BFu31i, "BFu0s_BFu9i_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu31ll");
    static BFu0s_BFu9i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu9i_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu31ll");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "BFu0s_BFu9i_BFu31ll");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu9i_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu31ll(Test_BFu0s_BFu9i_BFu31ll, "BFu0s_BFu9i_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu32i");
    static BFu0s_BFu9i_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9i_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu32i");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "BFu0s_BFu9i_BFu32i");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu9i_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu32i(Test_BFu0s_BFu9i_BFu32i, "BFu0s_BFu9i_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu32ll");
    static BFu0s_BFu9i_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9i_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu32ll");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "BFu0s_BFu9i_BFu32ll");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu9i_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu32ll(Test_BFu0s_BFu9i_BFu32ll, "BFu0s_BFu9i_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu33()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu33");
    static BFu0s_BFu9i_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9i_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu33");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "BFu0s_BFu9i_BFu33");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "BFu0s_BFu9i_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu33(Test_BFu0s_BFu9i_BFu33, "BFu0s_BFu9i_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu7c");
    static BFu0s_BFu9i_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9i_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu7c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9i_BFu7c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9i_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu7c(Test_BFu0s_BFu9i_BFu7c, "BFu0s_BFu9i_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu7i");
    static BFu0s_BFu9i_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9i_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu7i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9i_BFu7i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9i_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu7i(Test_BFu0s_BFu9i_BFu7i, "BFu0s_BFu9i_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu7ll");
    static BFu0s_BFu9i_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9i_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu7ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9i_BFu7ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9i_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu7ll(Test_BFu0s_BFu9i_BFu7ll, "BFu0s_BFu9i_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu7s");
    static BFu0s_BFu9i_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9i_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu7s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9i_BFu7s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9i_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu7s(Test_BFu0s_BFu9i_BFu7s, "BFu0s_BFu9i_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu8c");
    static BFu0s_BFu9i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu8c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9i_BFu8c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9i_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu8c(Test_BFu0s_BFu9i_BFu8c, "BFu0s_BFu9i_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu8i");
    static BFu0s_BFu9i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu8i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9i_BFu8i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9i_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu8i(Test_BFu0s_BFu9i_BFu8i, "BFu0s_BFu9i_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu8ll");
    static BFu0s_BFu9i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu8ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9i_BFu8ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9i_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu8ll(Test_BFu0s_BFu9i_BFu8ll, "BFu0s_BFu9i_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu8s");
    static BFu0s_BFu9i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu8s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9i_BFu8s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9i_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu8s(Test_BFu0s_BFu9i_BFu8s, "BFu0s_BFu9i_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu9i");
    static BFu0s_BFu9i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu9i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "BFu0s_BFu9i_BFu9i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu9i(Test_BFu0s_BFu9i_BFu9i, "BFu0s_BFu9i_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu9ll");
    static BFu0s_BFu9i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu9ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "BFu0s_BFu9i_BFu9ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu9ll(Test_BFu0s_BFu9i_BFu9ll, "BFu0s_BFu9i_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu9i_BFu9s");
    static BFu0s_BFu9i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu9s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "BFu0s_BFu9i_BFu9s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_BFu9s(Test_BFu0s_BFu9i_BFu9s, "BFu0s_BFu9i_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_C()
{
  {
    init_simple_test("BFu0s_BFu9i_C");
    static BFu0s_BFu9i_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_C");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_C(Test_BFu0s_BFu9i_C, "BFu0s_BFu9i_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_D()
{
  {
    init_simple_test("BFu0s_BFu9i_D");
    static BFu0s_BFu9i_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu9i_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_D");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_D(Test_BFu0s_BFu9i_D, "BFu0s_BFu9i_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_F()
{
  {
    init_simple_test("BFu0s_BFu9i_F");
    static BFu0s_BFu9i_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9i_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_F");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_F(Test_BFu0s_BFu9i_F, "BFu0s_BFu9i_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_I()
{
  {
    init_simple_test("BFu0s_BFu9i_I");
    static BFu0s_BFu9i_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9i_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_I");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_I(Test_BFu0s_BFu9i_I, "BFu0s_BFu9i_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_Ip()
{
  {
    init_simple_test("BFu0s_BFu9i_Ip");
    static BFu0s_BFu9i_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu9i_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_Ip");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_Ip(Test_BFu0s_BFu9i_Ip, "BFu0s_BFu9i_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_L()
{
  {
    init_simple_test("BFu0s_BFu9i_L");
    static BFu0s_BFu9i_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu9i_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_L");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_L(Test_BFu0s_BFu9i_L, "BFu0s_BFu9i_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_S()
{
  {
    init_simple_test("BFu0s_BFu9i_S");
    static BFu0s_BFu9i_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9i_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_S");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_S(Test_BFu0s_BFu9i_S, "BFu0s_BFu9i_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_Uc()
{
  {
    init_simple_test("BFu0s_BFu9i_Uc");
    static BFu0s_BFu9i_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9i_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_Uc");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_Uc(Test_BFu0s_BFu9i_Uc, "BFu0s_BFu9i_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_Ui()
{
  {
    init_simple_test("BFu0s_BFu9i_Ui");
    static BFu0s_BFu9i_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9i_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_Ui");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_Ui(Test_BFu0s_BFu9i_Ui, "BFu0s_BFu9i_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_Ul()
{
  {
    init_simple_test("BFu0s_BFu9i_Ul");
    static BFu0s_BFu9i_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu9i_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_Ul");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_Ul(Test_BFu0s_BFu9i_Ul, "BFu0s_BFu9i_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_Us()
{
  {
    init_simple_test("BFu0s_BFu9i_Us");
    static BFu0s_BFu9i_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9i_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_Us");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_Us(Test_BFu0s_BFu9i_Us, "BFu0s_BFu9i_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9i_Vp()
{
  {
    init_simple_test("BFu0s_BFu9i_Vp");
    static BFu0s_BFu9i_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu9i_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9i_Vp");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9i_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9i_Vp(Test_BFu0s_BFu9i_Vp, "BFu0s_BFu9i_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu9ll");
    static BFu0s_BFu9ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll(Test_BFu0s_BFu9ll, "BFu0s_BFu9ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu0c");
    static BFu0s_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu0c(Test_BFu0s_BFu9ll_BFu0c, "BFu0s_BFu9ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu0i");
    static BFu0s_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu9ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu0i(Test_BFu0s_BFu9ll_BFu0i, "BFu0s_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu0ll");
    static BFu0s_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu0ll(Test_BFu0s_BFu9ll_BFu0ll, "BFu0s_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu0s");
    static BFu0s_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu0s(Test_BFu0s_BFu9ll_BFu0s, "BFu0s_BFu9ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu15i");
    static BFu0s_BFu9ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "BFu0s_BFu9ll_BFu15i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu9ll_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu15i(Test_BFu0s_BFu9ll_BFu15i, "BFu0s_BFu9ll_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu15ll");
    static BFu0s_BFu9ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "BFu0s_BFu9ll_BFu15ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu9ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu15ll(Test_BFu0s_BFu9ll_BFu15ll, "BFu0s_BFu9ll_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu15s");
    static BFu0s_BFu9ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "BFu0s_BFu9ll_BFu15s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu9ll_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu15s(Test_BFu0s_BFu9ll_BFu15s, "BFu0s_BFu9ll_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu16i");
    static BFu0s_BFu9ll_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu16i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "BFu0s_BFu9ll_BFu16i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu9ll_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu16i(Test_BFu0s_BFu9ll_BFu16i, "BFu0s_BFu9ll_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu16ll");
    static BFu0s_BFu9ll_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu16ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "BFu0s_BFu9ll_BFu16ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu9ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu16ll(Test_BFu0s_BFu9ll_BFu16ll, "BFu0s_BFu9ll_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu16s");
    static BFu0s_BFu9ll_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu16s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "BFu0s_BFu9ll_BFu16s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu9ll_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu16s(Test_BFu0s_BFu9ll_BFu16s, "BFu0s_BFu9ll_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu17i");
    static BFu0s_BFu9ll_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu17i");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "BFu0s_BFu9ll_BFu17i");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu9ll_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu17i(Test_BFu0s_BFu9ll_BFu17i, "BFu0s_BFu9ll_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu17ll");
    static BFu0s_BFu9ll_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu17ll");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "BFu0s_BFu9ll_BFu17ll");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu9ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu17ll(Test_BFu0s_BFu9ll_BFu17ll, "BFu0s_BFu9ll_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu1c");
    static BFu0s_BFu9ll_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu1c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9ll_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu1c(Test_BFu0s_BFu9ll_BFu1c, "BFu0s_BFu9ll_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu1i");
    static BFu0s_BFu9ll_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu1i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9ll_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu1i(Test_BFu0s_BFu9ll_BFu1i, "BFu0s_BFu9ll_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu1ll");
    static BFu0s_BFu9ll_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu1ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu1ll(Test_BFu0s_BFu9ll_BFu1ll, "BFu0s_BFu9ll_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu1s");
    static BFu0s_BFu9ll_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu1s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9ll_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu1s(Test_BFu0s_BFu9ll_BFu1s, "BFu0s_BFu9ll_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu31i");
    static BFu0s_BFu9ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu9ll_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu31i");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "BFu0s_BFu9ll_BFu31i");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu9ll_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu31i(Test_BFu0s_BFu9ll_BFu31i, "BFu0s_BFu9ll_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu31ll");
    static BFu0s_BFu9ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu9ll_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu31ll");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "BFu0s_BFu9ll_BFu31ll");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu9ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu31ll(Test_BFu0s_BFu9ll_BFu31ll, "BFu0s_BFu9ll_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu32i");
    static BFu0s_BFu9ll_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9ll_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu32i");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "BFu0s_BFu9ll_BFu32i");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu9ll_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu32i(Test_BFu0s_BFu9ll_BFu32i, "BFu0s_BFu9ll_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu32ll");
    static BFu0s_BFu9ll_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9ll_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu32ll");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "BFu0s_BFu9ll_BFu32ll");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu9ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu32ll(Test_BFu0s_BFu9ll_BFu32ll, "BFu0s_BFu9ll_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu33()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu33");
    static BFu0s_BFu9ll_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9ll_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu33");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "BFu0s_BFu9ll_BFu33");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "BFu0s_BFu9ll_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu33(Test_BFu0s_BFu9ll_BFu33, "BFu0s_BFu9ll_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu7c");
    static BFu0s_BFu9ll_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9ll_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu7c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9ll_BFu7c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9ll_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu7c(Test_BFu0s_BFu9ll_BFu7c, "BFu0s_BFu9ll_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu7i");
    static BFu0s_BFu9ll_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9ll_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu7i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9ll_BFu7i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9ll_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu7i(Test_BFu0s_BFu9ll_BFu7i, "BFu0s_BFu9ll_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu7ll");
    static BFu0s_BFu9ll_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9ll_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu7ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9ll_BFu7ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu7ll(Test_BFu0s_BFu9ll_BFu7ll, "BFu0s_BFu9ll_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu7s");
    static BFu0s_BFu9ll_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9ll_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu7s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9ll_BFu7s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9ll_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu7s(Test_BFu0s_BFu9ll_BFu7s, "BFu0s_BFu9ll_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu8c");
    static BFu0s_BFu9ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu8c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9ll_BFu8c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9ll_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu8c(Test_BFu0s_BFu9ll_BFu8c, "BFu0s_BFu9ll_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu8i");
    static BFu0s_BFu9ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu8i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9ll_BFu8i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9ll_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu8i(Test_BFu0s_BFu9ll_BFu8i, "BFu0s_BFu9ll_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu8ll");
    static BFu0s_BFu9ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu8ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9ll_BFu8ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu8ll(Test_BFu0s_BFu9ll_BFu8ll, "BFu0s_BFu9ll_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu8s");
    static BFu0s_BFu9ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu8s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9ll_BFu8s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9ll_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu8s(Test_BFu0s_BFu9ll_BFu8s, "BFu0s_BFu9ll_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu9i");
    static BFu0s_BFu9ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu9i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "BFu0s_BFu9ll_BFu9i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu9i(Test_BFu0s_BFu9ll_BFu9i, "BFu0s_BFu9ll_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu9ll");
    static BFu0s_BFu9ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu9ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "BFu0s_BFu9ll_BFu9ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu9ll(Test_BFu0s_BFu9ll_BFu9ll, "BFu0s_BFu9ll_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu9ll_BFu9s");
    static BFu0s_BFu9ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu9s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "BFu0s_BFu9ll_BFu9s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_BFu9s(Test_BFu0s_BFu9ll_BFu9s, "BFu0s_BFu9ll_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_C()
{
  {
    init_simple_test("BFu0s_BFu9ll_C");
    static BFu0s_BFu9ll_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_C");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_C(Test_BFu0s_BFu9ll_C, "BFu0s_BFu9ll_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_D()
{
  {
    init_simple_test("BFu0s_BFu9ll_D");
    static BFu0s_BFu9ll_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu9ll_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_D");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_D(Test_BFu0s_BFu9ll_D, "BFu0s_BFu9ll_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_F()
{
  {
    init_simple_test("BFu0s_BFu9ll_F");
    static BFu0s_BFu9ll_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9ll_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_F");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_F(Test_BFu0s_BFu9ll_F, "BFu0s_BFu9ll_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_I()
{
  {
    init_simple_test("BFu0s_BFu9ll_I");
    static BFu0s_BFu9ll_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9ll_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_I");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_I(Test_BFu0s_BFu9ll_I, "BFu0s_BFu9ll_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_Ip()
{
  {
    init_simple_test("BFu0s_BFu9ll_Ip");
    static BFu0s_BFu9ll_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu9ll_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_Ip");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_Ip(Test_BFu0s_BFu9ll_Ip, "BFu0s_BFu9ll_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_L()
{
  {
    init_simple_test("BFu0s_BFu9ll_L");
    static BFu0s_BFu9ll_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu9ll_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_L");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_L(Test_BFu0s_BFu9ll_L, "BFu0s_BFu9ll_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_S()
{
  {
    init_simple_test("BFu0s_BFu9ll_S");
    static BFu0s_BFu9ll_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9ll_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_S");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_S(Test_BFu0s_BFu9ll_S, "BFu0s_BFu9ll_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_Uc()
{
  {
    init_simple_test("BFu0s_BFu9ll_Uc");
    static BFu0s_BFu9ll_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9ll_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_Uc");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_Uc(Test_BFu0s_BFu9ll_Uc, "BFu0s_BFu9ll_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_Ui()
{
  {
    init_simple_test("BFu0s_BFu9ll_Ui");
    static BFu0s_BFu9ll_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9ll_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_Ui");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_Ui(Test_BFu0s_BFu9ll_Ui, "BFu0s_BFu9ll_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_Ul()
{
  {
    init_simple_test("BFu0s_BFu9ll_Ul");
    static BFu0s_BFu9ll_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu9ll_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_Ul");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_Ul(Test_BFu0s_BFu9ll_Ul, "BFu0s_BFu9ll_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_Us()
{
  {
    init_simple_test("BFu0s_BFu9ll_Us");
    static BFu0s_BFu9ll_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9ll_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_Us");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_Us(Test_BFu0s_BFu9ll_Us, "BFu0s_BFu9ll_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9ll_Vp()
{
  {
    init_simple_test("BFu0s_BFu9ll_Vp");
    static BFu0s_BFu9ll_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu9ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9ll_Vp");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9ll_Vp(Test_BFu0s_BFu9ll_Vp, "BFu0s_BFu9ll_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu9s");
    static BFu0s_BFu9s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s(Test_BFu0s_BFu9s, "BFu0s_BFu9s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu0c()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu0c");
    static BFu0s_BFu9s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu0c(Test_BFu0s_BFu9s_BFu0c, "BFu0s_BFu9s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu0i()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu0i");
    static BFu0s_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_BFu9s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu0i(Test_BFu0s_BFu9s_BFu0i, "BFu0s_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu0ll()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu0ll");
    static BFu0s_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_BFu9s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu0ll(Test_BFu0s_BFu9s_BFu0ll, "BFu0s_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu0s()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu0s");
    static BFu0s_BFu9s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu0s(Test_BFu0s_BFu9s_BFu0s, "BFu0s_BFu9s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu15i()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu15i");
    static BFu0s_BFu9s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu15i");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "BFu0s_BFu9s_BFu15i");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu9s_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu15i(Test_BFu0s_BFu9s_BFu15i, "BFu0s_BFu9s_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu15ll()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu15ll");
    static BFu0s_BFu9s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "BFu0s_BFu9s_BFu15ll");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu9s_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu15ll(Test_BFu0s_BFu9s_BFu15ll, "BFu0s_BFu9s_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu15s()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu15s");
    static BFu0s_BFu9s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu15s");
    set_bf_and_test(lv, v2, 1, 1, 15, 1, "BFu0s_BFu9s_BFu15s");
    set_bf_and_test(lv, v2, 1, 1, 15, hide_ull(1LL<<14), "BFu0s_BFu9s_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu15s(Test_BFu0s_BFu9s_BFu15s, "BFu0s_BFu9s_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu16i()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu16i");
    static BFu0s_BFu9s_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu16i");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "BFu0s_BFu9s_BFu16i");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu9s_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu16i(Test_BFu0s_BFu9s_BFu16i, "BFu0s_BFu9s_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu16ll()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu16ll");
    static BFu0s_BFu9s_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu16ll");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "BFu0s_BFu9s_BFu16ll");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu9s_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu16ll(Test_BFu0s_BFu9s_BFu16ll, "BFu0s_BFu9s_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu16s()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu16s");
    static BFu0s_BFu9s_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu16s");
    set_bf_and_test(lv, v2, 1, 1, 16, 1, "BFu0s_BFu9s_BFu16s");
    set_bf_and_test(lv, v2, 1, 1, 16, hide_ull(1LL<<15), "BFu0s_BFu9s_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu16s(Test_BFu0s_BFu9s_BFu16s, "BFu0s_BFu9s_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu17i()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu17i");
    static BFu0s_BFu9s_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9s_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu17i");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "BFu0s_BFu9s_BFu17i");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu9s_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu17i(Test_BFu0s_BFu9s_BFu17i, "BFu0s_BFu9s_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu17ll()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu17ll");
    static BFu0s_BFu9s_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9s_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu17ll");
    set_bf_and_test(lv, v2, 1, 1, 17, 1, "BFu0s_BFu9s_BFu17ll");
    set_bf_and_test(lv, v2, 1, 1, 17, hide_ull(1LL<<16), "BFu0s_BFu9s_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu17ll(Test_BFu0s_BFu9s_BFu17ll, "BFu0s_BFu9s_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu1c()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu1c");
    static BFu0s_BFu9s_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu1c");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9s_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu1c(Test_BFu0s_BFu9s_BFu1c, "BFu0s_BFu9s_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu1i()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu1i");
    static BFu0s_BFu9s_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu1i");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9s_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu1i(Test_BFu0s_BFu9s_BFu1i, "BFu0s_BFu9s_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu1ll()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu1ll");
    static BFu0s_BFu9s_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu1ll");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9s_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu1ll(Test_BFu0s_BFu9s_BFu1ll, "BFu0s_BFu9s_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu1s()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu1s");
    static BFu0s_BFu9s_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu1s");
    set_bf_and_test(lv, v2, 1, 1, 1, 1, "BFu0s_BFu9s_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu1s(Test_BFu0s_BFu9s_BFu1s, "BFu0s_BFu9s_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu31i()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu31i");
    static BFu0s_BFu9s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu9s_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu31i");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "BFu0s_BFu9s_BFu31i");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu9s_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu31i(Test_BFu0s_BFu9s_BFu31i, "BFu0s_BFu9s_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu31ll()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu31ll");
    static BFu0s_BFu9s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_BFu9s_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu31ll");
    set_bf_and_test(lv, v2, 1, 1, 31, 1, "BFu0s_BFu9s_BFu31ll");
    set_bf_and_test(lv, v2, 1, 1, 31, hide_ull(1LL<<30), "BFu0s_BFu9s_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu31ll(Test_BFu0s_BFu9s_BFu31ll, "BFu0s_BFu9s_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu32i()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu32i");
    static BFu0s_BFu9s_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9s_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu32i");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "BFu0s_BFu9s_BFu32i");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu9s_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu32i(Test_BFu0s_BFu9s_BFu32i, "BFu0s_BFu9s_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu32ll()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu32ll");
    static BFu0s_BFu9s_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9s_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu32ll");
    set_bf_and_test(lv, v2, 1, 1, 32, 1, "BFu0s_BFu9s_BFu32ll");
    set_bf_and_test(lv, v2, 1, 1, 32, hide_ull(1LL<<31), "BFu0s_BFu9s_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu32ll(Test_BFu0s_BFu9s_BFu32ll, "BFu0s_BFu9s_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu33()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu33");
    static BFu0s_BFu9s_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9s_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu33");
    set_bf_and_test(lv, v2, 1, 1, 33, 1, "BFu0s_BFu9s_BFu33");
    set_bf_and_test(lv, v2, 1, 1, 33, hide_ull(1LL<<32), "BFu0s_BFu9s_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu33(Test_BFu0s_BFu9s_BFu33, "BFu0s_BFu9s_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu7c()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu7c");
    static BFu0s_BFu9s_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9s_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu7c");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9s_BFu7c");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9s_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu7c(Test_BFu0s_BFu9s_BFu7c, "BFu0s_BFu9s_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu7i()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu7i");
    static BFu0s_BFu9s_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9s_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu7i");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9s_BFu7i");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9s_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu7i(Test_BFu0s_BFu9s_BFu7i, "BFu0s_BFu9s_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu7ll()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu7ll");
    static BFu0s_BFu9s_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9s_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu7ll");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9s_BFu7ll");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9s_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu7ll(Test_BFu0s_BFu9s_BFu7ll, "BFu0s_BFu9s_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu7s()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu7s");
    static BFu0s_BFu9s_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_BFu9s_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu7s");
    set_bf_and_test(lv, v2, 1, 1, 7, 1, "BFu0s_BFu9s_BFu7s");
    set_bf_and_test(lv, v2, 1, 1, 7, hide_ull(1LL<<6), "BFu0s_BFu9s_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu7s(Test_BFu0s_BFu9s_BFu7s, "BFu0s_BFu9s_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu8c()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu8c");
    static BFu0s_BFu9s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu8c");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9s_BFu8c");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9s_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu8c(Test_BFu0s_BFu9s_BFu8c, "BFu0s_BFu9s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu8i()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu8i");
    static BFu0s_BFu9s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu8i");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9s_BFu8i");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9s_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu8i(Test_BFu0s_BFu9s_BFu8i, "BFu0s_BFu9s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu8ll()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu8ll");
    static BFu0s_BFu9s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu8ll");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9s_BFu8ll");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9s_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu8ll(Test_BFu0s_BFu9s_BFu8ll, "BFu0s_BFu9s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu8s()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu8s");
    static BFu0s_BFu9s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu8s");
    set_bf_and_test(lv, v2, 1, 1, 8, 1, "BFu0s_BFu9s_BFu8s");
    set_bf_and_test(lv, v2, 1, 1, 8, hide_ull(1LL<<7), "BFu0s_BFu9s_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu8s(Test_BFu0s_BFu9s_BFu8s, "BFu0s_BFu9s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu9i()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu9i");
    static BFu0s_BFu9s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu9i");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "BFu0s_BFu9s_BFu9i");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu9i(Test_BFu0s_BFu9s_BFu9i, "BFu0s_BFu9s_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu9ll()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu9ll");
    static BFu0s_BFu9s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu9ll");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "BFu0s_BFu9s_BFu9ll");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu9ll(Test_BFu0s_BFu9s_BFu9ll, "BFu0s_BFu9s_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_BFu9s()
{
  {
    init_simple_test("BFu0s_BFu9s_BFu9s");
    static BFu0s_BFu9s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu9s");
    set_bf_and_test(lv, v2, 1, 1, 9, 1, "BFu0s_BFu9s_BFu9s");
    set_bf_and_test(lv, v2, 1, 1, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_BFu9s(Test_BFu0s_BFu9s_BFu9s, "BFu0s_BFu9s_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_C()
{
  {
    init_simple_test("BFu0s_BFu9s_C");
    static BFu0s_BFu9s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_C)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_C");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_C");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_C(Test_BFu0s_BFu9s_C, "BFu0s_BFu9s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_D()
{
  {
    init_simple_test("BFu0s_BFu9s_D");
    static BFu0s_BFu9s_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu9s_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_D)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_D");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_D");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_D(Test_BFu0s_BFu9s_D, "BFu0s_BFu9s_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_F()
{
  {
    init_simple_test("BFu0s_BFu9s_F");
    static BFu0s_BFu9s_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9s_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_F)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_F");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_F");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_F(Test_BFu0s_BFu9s_F, "BFu0s_BFu9s_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_I()
{
  {
    init_simple_test("BFu0s_BFu9s_I");
    static BFu0s_BFu9s_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9s_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_I)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_I");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_I");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_I(Test_BFu0s_BFu9s_I, "BFu0s_BFu9s_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_Ip()
{
  {
    init_simple_test("BFu0s_BFu9s_Ip");
    static BFu0s_BFu9s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu9s_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_Ip");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_Ip(Test_BFu0s_BFu9s_Ip, "BFu0s_BFu9s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_L()
{
  {
    init_simple_test("BFu0s_BFu9s_L");
    static BFu0s_BFu9s_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu9s_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_L)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_L");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_L");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_L(Test_BFu0s_BFu9s_L, "BFu0s_BFu9s_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_S()
{
  {
    init_simple_test("BFu0s_BFu9s_S");
    static BFu0s_BFu9s_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9s_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_S)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_S");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_S");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_S(Test_BFu0s_BFu9s_S, "BFu0s_BFu9s_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_Uc()
{
  {
    init_simple_test("BFu0s_BFu9s_Uc");
    static BFu0s_BFu9s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_BFu9s_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_Uc");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_Uc(Test_BFu0s_BFu9s_Uc, "BFu0s_BFu9s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_Ui()
{
  {
    init_simple_test("BFu0s_BFu9s_Ui");
    static BFu0s_BFu9s_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_BFu9s_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_Ui");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_Ui(Test_BFu0s_BFu9s_Ui, "BFu0s_BFu9s_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_Ul()
{
  {
    init_simple_test("BFu0s_BFu9s_Ul");
    static BFu0s_BFu9s_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_BFu9s_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_Ul");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_Ul(Test_BFu0s_BFu9s_Ul, "BFu0s_BFu9s_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_Us()
{
  {
    init_simple_test("BFu0s_BFu9s_Us");
    static BFu0s_BFu9s_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_BFu9s_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_Us");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_Us");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_Us(Test_BFu0s_BFu9s_Us, "BFu0s_BFu9s_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_BFu9s_Vp()
{
  {
    init_simple_test("BFu0s_BFu9s_Vp");
    static BFu0s_BFu9s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_BFu9s_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_BFu9s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 9, 1, "BFu0s_BFu9s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 9, hide_ull(1LL<<8), "BFu0s_BFu9s_Vp");
    check_field_offset(lv, v2, 2, "BFu0s_BFu9s_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_BFu9s_Vp(Test_BFu0s_BFu9s_Vp, "BFu0s_BFu9s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C()
{
  {
    init_simple_test("BFu0s_C");
    static BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C)");
    check_field_offset(lv, v1, 0, "BFu0s_C.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_C(Test_BFu0s_C, "BFu0s_C", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu0c()
{
  {
    init_simple_test("BFu0s_C_BFu0c");
    static BFu0s_C_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_C_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu0c(Test_BFu0s_C_BFu0c, "BFu0s_C_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu0i()
{
  {
    init_simple_test("BFu0s_C_BFu0i");
    static BFu0s_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_C_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu0i(Test_BFu0s_C_BFu0i, "BFu0s_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu0ll()
{
  {
    init_simple_test("BFu0s_C_BFu0ll");
    static BFu0s_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_C_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu0ll(Test_BFu0s_C_BFu0ll, "BFu0s_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu0s()
{
  {
    init_simple_test("BFu0s_C_BFu0s");
    static BFu0s_C_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_C_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu0s(Test_BFu0s_C_BFu0s, "BFu0s_C_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu15i()
{
  {
    init_simple_test("BFu0s_C_BFu15i");
    static BFu0s_C_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_C_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu15i.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_C_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_C_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu15i(Test_BFu0s_C_BFu15i, "BFu0s_C_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu15ll()
{
  {
    init_simple_test("BFu0s_C_BFu15ll");
    static BFu0s_C_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_C_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu15ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_C_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_C_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu15ll(Test_BFu0s_C_BFu15ll, "BFu0s_C_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu15s()
{
  {
    init_simple_test("BFu0s_C_BFu15s");
    static BFu0s_C_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_C_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu15s.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_C_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_C_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu15s(Test_BFu0s_C_BFu15s, "BFu0s_C_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu16i()
{
  {
    init_simple_test("BFu0s_C_BFu16i");
    static BFu0s_C_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_C_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu16i.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_C_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_C_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu16i(Test_BFu0s_C_BFu16i, "BFu0s_C_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu16ll()
{
  {
    init_simple_test("BFu0s_C_BFu16ll");
    static BFu0s_C_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_C_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu16ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_C_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_C_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu16ll(Test_BFu0s_C_BFu16ll, "BFu0s_C_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu16s()
{
  {
    init_simple_test("BFu0s_C_BFu16s");
    static BFu0s_C_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_C_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu16s.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_C_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_C_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu16s(Test_BFu0s_C_BFu16s, "BFu0s_C_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu17i()
{
  {
    init_simple_test("BFu0s_C_BFu17i");
    static BFu0s_C_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_C_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu17i.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_C_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_C_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu17i(Test_BFu0s_C_BFu17i, "BFu0s_C_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu17ll()
{
  {
    init_simple_test("BFu0s_C_BFu17ll");
    static BFu0s_C_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_C_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu17ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_C_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_C_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu17ll(Test_BFu0s_C_BFu17ll, "BFu0s_C_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu1c()
{
  {
    init_simple_test("BFu0s_C_BFu1c");
    static BFu0s_C_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu1c.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_C_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu1c(Test_BFu0s_C_BFu1c, "BFu0s_C_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu1i()
{
  {
    init_simple_test("BFu0s_C_BFu1i");
    static BFu0s_C_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu1i.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_C_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu1i(Test_BFu0s_C_BFu1i, "BFu0s_C_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu1ll()
{
  {
    init_simple_test("BFu0s_C_BFu1ll");
    static BFu0s_C_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu1ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_C_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu1ll(Test_BFu0s_C_BFu1ll, "BFu0s_C_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu1s()
{
  {
    init_simple_test("BFu0s_C_BFu1s");
    static BFu0s_C_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu1s.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_C_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu1s(Test_BFu0s_C_BFu1s, "BFu0s_C_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu31i()
{
  {
    init_simple_test("BFu0s_C_BFu31i");
    static BFu0s_C_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_C_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu31i.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_C_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_C_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu31i(Test_BFu0s_C_BFu31i, "BFu0s_C_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu31ll()
{
  {
    init_simple_test("BFu0s_C_BFu31ll");
    static BFu0s_C_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_C_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu31ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_C_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_C_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu31ll(Test_BFu0s_C_BFu31ll, "BFu0s_C_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu32i()
{
  {
    init_simple_test("BFu0s_C_BFu32i");
    static BFu0s_C_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_C_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu32i.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_C_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_C_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu32i(Test_BFu0s_C_BFu32i, "BFu0s_C_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu32ll()
{
  {
    init_simple_test("BFu0s_C_BFu32ll");
    static BFu0s_C_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_C_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu32ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_C_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_C_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu32ll(Test_BFu0s_C_BFu32ll, "BFu0s_C_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu33()
{
  {
    init_simple_test("BFu0s_C_BFu33");
    static BFu0s_C_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_C_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu33.v1");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "BFu0s_C_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "BFu0s_C_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu33(Test_BFu0s_C_BFu33, "BFu0s_C_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu7c()
{
  {
    init_simple_test("BFu0s_C_BFu7c");
    static BFu0s_C_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu7c.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_C_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_C_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu7c(Test_BFu0s_C_BFu7c, "BFu0s_C_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu7i()
{
  {
    init_simple_test("BFu0s_C_BFu7i");
    static BFu0s_C_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu7i.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_C_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_C_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu7i(Test_BFu0s_C_BFu7i, "BFu0s_C_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu7ll()
{
  {
    init_simple_test("BFu0s_C_BFu7ll");
    static BFu0s_C_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu7ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_C_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_C_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu7ll(Test_BFu0s_C_BFu7ll, "BFu0s_C_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu7s()
{
  {
    init_simple_test("BFu0s_C_BFu7s");
    static BFu0s_C_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu7s.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_C_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_C_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu7s(Test_BFu0s_C_BFu7s, "BFu0s_C_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu8c()
{
  {
    init_simple_test("BFu0s_C_BFu8c");
    static BFu0s_C_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu8c.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_C_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_C_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu8c(Test_BFu0s_C_BFu8c, "BFu0s_C_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu8i()
{
  {
    init_simple_test("BFu0s_C_BFu8i");
    static BFu0s_C_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu8i.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_C_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_C_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu8i(Test_BFu0s_C_BFu8i, "BFu0s_C_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu8ll()
{
  {
    init_simple_test("BFu0s_C_BFu8ll");
    static BFu0s_C_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu8ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_C_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_C_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu8ll(Test_BFu0s_C_BFu8ll, "BFu0s_C_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu8s()
{
  {
    init_simple_test("BFu0s_C_BFu8s");
    static BFu0s_C_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu8s.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_C_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_C_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu8s(Test_BFu0s_C_BFu8s, "BFu0s_C_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu9i()
{
  {
    init_simple_test("BFu0s_C_BFu9i");
    static BFu0s_C_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_C_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu9i.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_C_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_C_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu9i(Test_BFu0s_C_BFu9i, "BFu0s_C_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu9ll()
{
  {
    init_simple_test("BFu0s_C_BFu9ll");
    static BFu0s_C_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_C_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu9ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_C_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_C_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu9ll(Test_BFu0s_C_BFu9ll, "BFu0s_C_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_BFu9s()
{
  {
    init_simple_test("BFu0s_C_BFu9s");
    static BFu0s_C_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_C_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_C_BFu9s.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_C_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_C_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_C_BFu9s(Test_BFu0s_C_BFu9s, "BFu0s_C_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_C()
{
  {
    init_simple_test("BFu0s_C_C");
    static BFu0s_C_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_C)");
    check_field_offset(lv, v1, 0, "BFu0s_C_C.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_C(Test_BFu0s_C_C, "BFu0s_C_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_D()
{
  {
    init_simple_test("BFu0s_C_D");
    static BFu0s_C_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_C_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_D)");
    check_field_offset(lv, v1, 0, "BFu0s_C_D.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_D(Test_BFu0s_C_D, "BFu0s_C_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_F()
{
  {
    init_simple_test("BFu0s_C_F");
    static BFu0s_C_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_C_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_F)");
    check_field_offset(lv, v1, 0, "BFu0s_C_F.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_F(Test_BFu0s_C_F, "BFu0s_C_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_I()
{
  {
    init_simple_test("BFu0s_C_I");
    static BFu0s_C_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_C_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_I)");
    check_field_offset(lv, v1, 0, "BFu0s_C_I.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_I(Test_BFu0s_C_I, "BFu0s_C_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_Ip()
{
  {
    init_simple_test("BFu0s_C_Ip");
    static BFu0s_C_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_C_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_C_Ip.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_Ip(Test_BFu0s_C_Ip, "BFu0s_C_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_L()
{
  {
    init_simple_test("BFu0s_C_L");
    static BFu0s_C_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_C_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_L)");
    check_field_offset(lv, v1, 0, "BFu0s_C_L.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_L(Test_BFu0s_C_L, "BFu0s_C_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_S()
{
  {
    init_simple_test("BFu0s_C_S");
    static BFu0s_C_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_C_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_S)");
    check_field_offset(lv, v1, 0, "BFu0s_C_S.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_S(Test_BFu0s_C_S, "BFu0s_C_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_Uc()
{
  {
    init_simple_test("BFu0s_C_Uc");
    static BFu0s_C_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_C_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_C_Uc.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_Uc(Test_BFu0s_C_Uc, "BFu0s_C_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_Ui()
{
  {
    init_simple_test("BFu0s_C_Ui");
    static BFu0s_C_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_C_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_C_Ui.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_Ui(Test_BFu0s_C_Ui, "BFu0s_C_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_Ul()
{
  {
    init_simple_test("BFu0s_C_Ul");
    static BFu0s_C_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_C_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_C_Ul.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_Ul(Test_BFu0s_C_Ul, "BFu0s_C_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_Us()
{
  {
    init_simple_test("BFu0s_C_Us");
    static BFu0s_C_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_C_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_C_Us.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_Us(Test_BFu0s_C_Us, "BFu0s_C_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_C_Vp()
{
  {
    init_simple_test("BFu0s_C_Vp");
    static BFu0s_C_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_C_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_C_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_C_Vp.v1");
    check_field_offset(lv, v2, 1, "BFu0s_C_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_C_Vp(Test_BFu0s_C_Vp, "BFu0s_C_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D()
{
  {
    init_simple_test("BFu0s_D");
    static BFu0s_D lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D)");
    check_field_offset(lv, v1, 0, "BFu0s_D.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_D(Test_BFu0s_D, "BFu0s_D", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu0c()
{
  {
    init_simple_test("BFu0s_D_BFu0c");
    static BFu0s_D_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_D_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu0c(Test_BFu0s_D_BFu0c, "BFu0s_D_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu0i()
{
  {
    init_simple_test("BFu0s_D_BFu0i");
    static BFu0s_D_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_D_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu0i(Test_BFu0s_D_BFu0i, "BFu0s_D_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu0ll()
{
  {
    init_simple_test("BFu0s_D_BFu0ll");
    static BFu0s_D_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_D_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu0ll(Test_BFu0s_D_BFu0ll, "BFu0s_D_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu0s()
{
  {
    init_simple_test("BFu0s_D_BFu0s");
    static BFu0s_D_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_D_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu0s(Test_BFu0s_D_BFu0s, "BFu0s_D_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu15i()
{
  {
    init_simple_test("BFu0s_D_BFu15i");
    static BFu0s_D_BFu15i lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_D_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu15i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "BFu0s_D_BFu15i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "BFu0s_D_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu15i(Test_BFu0s_D_BFu15i, "BFu0s_D_BFu15i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu15ll()
{
  {
    init_simple_test("BFu0s_D_BFu15ll");
    static BFu0s_D_BFu15ll lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_D_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu15ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "BFu0s_D_BFu15ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "BFu0s_D_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu15ll(Test_BFu0s_D_BFu15ll, "BFu0s_D_BFu15ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu15s()
{
  {
    init_simple_test("BFu0s_D_BFu15s");
    static BFu0s_D_BFu15s lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_D_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu15s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "BFu0s_D_BFu15s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "BFu0s_D_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu15s(Test_BFu0s_D_BFu15s, "BFu0s_D_BFu15s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu16i()
{
  {
    init_simple_test("BFu0s_D_BFu16i");
    static BFu0s_D_BFu16i lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_D_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu16i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "BFu0s_D_BFu16i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "BFu0s_D_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu16i(Test_BFu0s_D_BFu16i, "BFu0s_D_BFu16i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu16ll()
{
  {
    init_simple_test("BFu0s_D_BFu16ll");
    static BFu0s_D_BFu16ll lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_D_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu16ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "BFu0s_D_BFu16ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "BFu0s_D_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu16ll(Test_BFu0s_D_BFu16ll, "BFu0s_D_BFu16ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu16s()
{
  {
    init_simple_test("BFu0s_D_BFu16s");
    static BFu0s_D_BFu16s lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_D_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu16s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "BFu0s_D_BFu16s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "BFu0s_D_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu16s(Test_BFu0s_D_BFu16s, "BFu0s_D_BFu16s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu17i()
{
  {
    init_simple_test("BFu0s_D_BFu17i");
    static BFu0s_D_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_D_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu17i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "BFu0s_D_BFu17i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "BFu0s_D_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu17i(Test_BFu0s_D_BFu17i, "BFu0s_D_BFu17i", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu17ll()
{
  {
    init_simple_test("BFu0s_D_BFu17ll");
    static BFu0s_D_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_D_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu17ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "BFu0s_D_BFu17ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "BFu0s_D_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu17ll(Test_BFu0s_D_BFu17ll, "BFu0s_D_BFu17ll", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu1c()
{
  {
    init_simple_test("BFu0s_D_BFu1c");
    static BFu0s_D_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu1c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_D_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu1c(Test_BFu0s_D_BFu1c, "BFu0s_D_BFu1c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu1i()
{
  {
    init_simple_test("BFu0s_D_BFu1i");
    static BFu0s_D_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu1i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_D_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu1i(Test_BFu0s_D_BFu1i, "BFu0s_D_BFu1i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu1ll()
{
  {
    init_simple_test("BFu0s_D_BFu1ll");
    static BFu0s_D_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu1ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_D_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu1ll(Test_BFu0s_D_BFu1ll, "BFu0s_D_BFu1ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu1s()
{
  {
    init_simple_test("BFu0s_D_BFu1s");
    static BFu0s_D_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu1s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_D_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu1s(Test_BFu0s_D_BFu1s, "BFu0s_D_BFu1s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu31i()
{
  {
    init_simple_test("BFu0s_D_BFu31i");
    static BFu0s_D_BFu31i lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_D_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu31i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "BFu0s_D_BFu31i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "BFu0s_D_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu31i(Test_BFu0s_D_BFu31i, "BFu0s_D_BFu31i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu31ll()
{
  {
    init_simple_test("BFu0s_D_BFu31ll");
    static BFu0s_D_BFu31ll lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_D_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu31ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "BFu0s_D_BFu31ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "BFu0s_D_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu31ll(Test_BFu0s_D_BFu31ll, "BFu0s_D_BFu31ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu32i()
{
  {
    init_simple_test("BFu0s_D_BFu32i");
    static BFu0s_D_BFu32i lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_D_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu32i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "BFu0s_D_BFu32i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "BFu0s_D_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu32i(Test_BFu0s_D_BFu32i, "BFu0s_D_BFu32i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu32ll()
{
  {
    init_simple_test("BFu0s_D_BFu32ll");
    static BFu0s_D_BFu32ll lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_D_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu32ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "BFu0s_D_BFu32ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "BFu0s_D_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu32ll(Test_BFu0s_D_BFu32ll, "BFu0s_D_BFu32ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu33()
{
  {
    init_simple_test("BFu0s_D_BFu33");
    static BFu0s_D_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,13), "sizeof(BFu0s_D_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu33.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "BFu0s_D_BFu33");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "BFu0s_D_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu33(Test_BFu0s_D_BFu33, "BFu0s_D_BFu33", ABISELECT(13,13));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu7c()
{
  {
    init_simple_test("BFu0s_D_BFu7c");
    static BFu0s_D_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu7c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_D_BFu7c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_D_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu7c(Test_BFu0s_D_BFu7c, "BFu0s_D_BFu7c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu7i()
{
  {
    init_simple_test("BFu0s_D_BFu7i");
    static BFu0s_D_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu7i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_D_BFu7i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_D_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu7i(Test_BFu0s_D_BFu7i, "BFu0s_D_BFu7i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu7ll()
{
  {
    init_simple_test("BFu0s_D_BFu7ll");
    static BFu0s_D_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu7ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_D_BFu7ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_D_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu7ll(Test_BFu0s_D_BFu7ll, "BFu0s_D_BFu7ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu7s()
{
  {
    init_simple_test("BFu0s_D_BFu7s");
    static BFu0s_D_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu7s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_D_BFu7s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_D_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu7s(Test_BFu0s_D_BFu7s, "BFu0s_D_BFu7s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu8c()
{
  {
    init_simple_test("BFu0s_D_BFu8c");
    static BFu0s_D_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu8c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_D_BFu8c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_D_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu8c(Test_BFu0s_D_BFu8c, "BFu0s_D_BFu8c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu8i()
{
  {
    init_simple_test("BFu0s_D_BFu8i");
    static BFu0s_D_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu8i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_D_BFu8i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_D_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu8i(Test_BFu0s_D_BFu8i, "BFu0s_D_BFu8i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu8ll()
{
  {
    init_simple_test("BFu0s_D_BFu8ll");
    static BFu0s_D_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu8ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_D_BFu8ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_D_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu8ll(Test_BFu0s_D_BFu8ll, "BFu0s_D_BFu8ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu8s()
{
  {
    init_simple_test("BFu0s_D_BFu8s");
    static BFu0s_D_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu8s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_D_BFu8s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_D_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu8s(Test_BFu0s_D_BFu8s, "BFu0s_D_BFu8s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu9i()
{
  {
    init_simple_test("BFu0s_D_BFu9i");
    static BFu0s_D_BFu9i lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_D_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu9i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "BFu0s_D_BFu9i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "BFu0s_D_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu9i(Test_BFu0s_D_BFu9i, "BFu0s_D_BFu9i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu9ll()
{
  {
    init_simple_test("BFu0s_D_BFu9ll");
    static BFu0s_D_BFu9ll lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_D_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu9ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "BFu0s_D_BFu9ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "BFu0s_D_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu9ll(Test_BFu0s_D_BFu9ll, "BFu0s_D_BFu9ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_BFu9s()
{
  {
    init_simple_test("BFu0s_D_BFu9s");
    static BFu0s_D_BFu9s lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_D_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_D_BFu9s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "BFu0s_D_BFu9s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "BFu0s_D_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_D_BFu9s(Test_BFu0s_D_BFu9s, "BFu0s_D_BFu9s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_C()
{
  {
    init_simple_test("BFu0s_D_C");
    static BFu0s_D_C lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_C)");
    check_field_offset(lv, v1, 0, "BFu0s_D_C.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_C(Test_BFu0s_D_C, "BFu0s_D_C", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_D()
{
  {
    init_simple_test("BFu0s_D_D");
    static BFu0s_D_D lv;
    check2(sizeof(lv), 16, "sizeof(BFu0s_D_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_D)");
    check_field_offset(lv, v1, 0, "BFu0s_D_D.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_D(Test_BFu0s_D_D, "BFu0s_D_D", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_F()
{
  {
    init_simple_test("BFu0s_D_F");
    static BFu0s_D_F lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_D_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_F)");
    check_field_offset(lv, v1, 0, "BFu0s_D_F.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_F(Test_BFu0s_D_F, "BFu0s_D_F", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_I()
{
  {
    init_simple_test("BFu0s_D_I");
    static BFu0s_D_I lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_D_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_I)");
    check_field_offset(lv, v1, 0, "BFu0s_D_I.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_I(Test_BFu0s_D_I, "BFu0s_D_I", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_Ip()
{
  {
    init_simple_test("BFu0s_D_Ip");
    static BFu0s_D_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_D_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_D_Ip.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_Ip(Test_BFu0s_D_Ip, "BFu0s_D_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_L()
{
  {
    init_simple_test("BFu0s_D_L");
    static BFu0s_D_L lv;
    check2(sizeof(lv), 16, "sizeof(BFu0s_D_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_L)");
    check_field_offset(lv, v1, 0, "BFu0s_D_L.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_L(Test_BFu0s_D_L, "BFu0s_D_L", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_S()
{
  {
    init_simple_test("BFu0s_D_S");
    static BFu0s_D_S lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_D_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_S)");
    check_field_offset(lv, v1, 0, "BFu0s_D_S.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_S(Test_BFu0s_D_S, "BFu0s_D_S", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_Uc()
{
  {
    init_simple_test("BFu0s_D_Uc");
    static BFu0s_D_Uc lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_D_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_D_Uc.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_Uc(Test_BFu0s_D_Uc, "BFu0s_D_Uc", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_Ui()
{
  {
    init_simple_test("BFu0s_D_Ui");
    static BFu0s_D_Ui lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_D_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_D_Ui.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_Ui(Test_BFu0s_D_Ui, "BFu0s_D_Ui", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_Ul()
{
  {
    init_simple_test("BFu0s_D_Ul");
    static BFu0s_D_Ul lv;
    check2(sizeof(lv), 16, "sizeof(BFu0s_D_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_D_Ul.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_Ul(Test_BFu0s_D_Ul, "BFu0s_D_Ul", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_Us()
{
  {
    init_simple_test("BFu0s_D_Us");
    static BFu0s_D_Us lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_D_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_D_Us.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_Us(Test_BFu0s_D_Us, "BFu0s_D_Us", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_D_Vp()
{
  {
    init_simple_test("BFu0s_D_Vp");
    static BFu0s_D_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_D_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_D_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_D_Vp.v1");
    check_field_offset(lv, v2, 8, "BFu0s_D_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_D_Vp(Test_BFu0s_D_Vp, "BFu0s_D_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F()
{
  {
    init_simple_test("BFu0s_F");
    static BFu0s_F lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F)");
    check_field_offset(lv, v1, 0, "BFu0s_F.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_F(Test_BFu0s_F, "BFu0s_F", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu0c()
{
  {
    init_simple_test("BFu0s_F_BFu0c");
    static BFu0s_F_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_F_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu0c(Test_BFu0s_F_BFu0c, "BFu0s_F_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu0i()
{
  {
    init_simple_test("BFu0s_F_BFu0i");
    static BFu0s_F_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_F_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu0i(Test_BFu0s_F_BFu0i, "BFu0s_F_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu0ll()
{
  {
    init_simple_test("BFu0s_F_BFu0ll");
    static BFu0s_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_F_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu0ll(Test_BFu0s_F_BFu0ll, "BFu0s_F_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu0s()
{
  {
    init_simple_test("BFu0s_F_BFu0s");
    static BFu0s_F_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_F_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu0s(Test_BFu0s_F_BFu0s, "BFu0s_F_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu15i()
{
  {
    init_simple_test("BFu0s_F_BFu15i");
    static BFu0s_F_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_F_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu15i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_F_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_F_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu15i(Test_BFu0s_F_BFu15i, "BFu0s_F_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu15ll()
{
  {
    init_simple_test("BFu0s_F_BFu15ll");
    static BFu0s_F_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_F_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu15ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_F_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_F_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu15ll(Test_BFu0s_F_BFu15ll, "BFu0s_F_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu15s()
{
  {
    init_simple_test("BFu0s_F_BFu15s");
    static BFu0s_F_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_F_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu15s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_F_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_F_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu15s(Test_BFu0s_F_BFu15s, "BFu0s_F_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu16i()
{
  {
    init_simple_test("BFu0s_F_BFu16i");
    static BFu0s_F_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_F_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu16i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_F_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_F_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu16i(Test_BFu0s_F_BFu16i, "BFu0s_F_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu16ll()
{
  {
    init_simple_test("BFu0s_F_BFu16ll");
    static BFu0s_F_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_F_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu16ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_F_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_F_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu16ll(Test_BFu0s_F_BFu16ll, "BFu0s_F_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu16s()
{
  {
    init_simple_test("BFu0s_F_BFu16s");
    static BFu0s_F_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_F_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu16s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_F_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_F_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu16s(Test_BFu0s_F_BFu16s, "BFu0s_F_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu17i()
{
  {
    init_simple_test("BFu0s_F_BFu17i");
    static BFu0s_F_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_F_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu17i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFu0s_F_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFu0s_F_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu17i(Test_BFu0s_F_BFu17i, "BFu0s_F_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu17ll()
{
  {
    init_simple_test("BFu0s_F_BFu17ll");
    static BFu0s_F_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_F_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu17ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFu0s_F_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFu0s_F_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu17ll(Test_BFu0s_F_BFu17ll, "BFu0s_F_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu1c()
{
  {
    init_simple_test("BFu0s_F_BFu1c");
    static BFu0s_F_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu1c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_F_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu1c(Test_BFu0s_F_BFu1c, "BFu0s_F_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu1i()
{
  {
    init_simple_test("BFu0s_F_BFu1i");
    static BFu0s_F_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu1i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_F_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu1i(Test_BFu0s_F_BFu1i, "BFu0s_F_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu1ll()
{
  {
    init_simple_test("BFu0s_F_BFu1ll");
    static BFu0s_F_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu1ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_F_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu1ll(Test_BFu0s_F_BFu1ll, "BFu0s_F_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu1s()
{
  {
    init_simple_test("BFu0s_F_BFu1s");
    static BFu0s_F_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu1s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_F_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu1s(Test_BFu0s_F_BFu1s, "BFu0s_F_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu31i()
{
  {
    init_simple_test("BFu0s_F_BFu31i");
    static BFu0s_F_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_F_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu31i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "BFu0s_F_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "BFu0s_F_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu31i(Test_BFu0s_F_BFu31i, "BFu0s_F_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu31ll()
{
  {
    init_simple_test("BFu0s_F_BFu31ll");
    static BFu0s_F_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_F_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu31ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "BFu0s_F_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "BFu0s_F_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu31ll(Test_BFu0s_F_BFu31ll, "BFu0s_F_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu32i()
{
  {
    init_simple_test("BFu0s_F_BFu32i");
    static BFu0s_F_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_F_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu32i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "BFu0s_F_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "BFu0s_F_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu32i(Test_BFu0s_F_BFu32i, "BFu0s_F_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu32ll()
{
  {
    init_simple_test("BFu0s_F_BFu32ll");
    static BFu0s_F_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_F_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu32ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "BFu0s_F_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "BFu0s_F_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu32ll(Test_BFu0s_F_BFu32ll, "BFu0s_F_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu33()
{
  {
    init_simple_test("BFu0s_F_BFu33");
    static BFu0s_F_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_F_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu33.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "BFu0s_F_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "BFu0s_F_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu33(Test_BFu0s_F_BFu33, "BFu0s_F_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu7c()
{
  {
    init_simple_test("BFu0s_F_BFu7c");
    static BFu0s_F_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu7c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_F_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_F_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu7c(Test_BFu0s_F_BFu7c, "BFu0s_F_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu7i()
{
  {
    init_simple_test("BFu0s_F_BFu7i");
    static BFu0s_F_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu7i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_F_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_F_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu7i(Test_BFu0s_F_BFu7i, "BFu0s_F_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu7ll()
{
  {
    init_simple_test("BFu0s_F_BFu7ll");
    static BFu0s_F_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu7ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_F_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_F_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu7ll(Test_BFu0s_F_BFu7ll, "BFu0s_F_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu7s()
{
  {
    init_simple_test("BFu0s_F_BFu7s");
    static BFu0s_F_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu7s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_F_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_F_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu7s(Test_BFu0s_F_BFu7s, "BFu0s_F_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu8c()
{
  {
    init_simple_test("BFu0s_F_BFu8c");
    static BFu0s_F_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu8c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_F_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_F_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu8c(Test_BFu0s_F_BFu8c, "BFu0s_F_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu8i()
{
  {
    init_simple_test("BFu0s_F_BFu8i");
    static BFu0s_F_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu8i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_F_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_F_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu8i(Test_BFu0s_F_BFu8i, "BFu0s_F_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu8ll()
{
  {
    init_simple_test("BFu0s_F_BFu8ll");
    static BFu0s_F_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu8ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_F_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_F_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu8ll(Test_BFu0s_F_BFu8ll, "BFu0s_F_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu8s()
{
  {
    init_simple_test("BFu0s_F_BFu8s");
    static BFu0s_F_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu8s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_F_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_F_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu8s(Test_BFu0s_F_BFu8s, "BFu0s_F_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu9i()
{
  {
    init_simple_test("BFu0s_F_BFu9i");
    static BFu0s_F_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_F_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu9i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_F_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_F_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu9i(Test_BFu0s_F_BFu9i, "BFu0s_F_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu9ll()
{
  {
    init_simple_test("BFu0s_F_BFu9ll");
    static BFu0s_F_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_F_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu9ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_F_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_F_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu9ll(Test_BFu0s_F_BFu9ll, "BFu0s_F_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_BFu9s()
{
  {
    init_simple_test("BFu0s_F_BFu9s");
    static BFu0s_F_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_F_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_F_BFu9s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_F_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_F_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_F_BFu9s(Test_BFu0s_F_BFu9s, "BFu0s_F_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_C()
{
  {
    init_simple_test("BFu0s_F_C");
    static BFu0s_F_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_C)");
    check_field_offset(lv, v1, 0, "BFu0s_F_C.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_C(Test_BFu0s_F_C, "BFu0s_F_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_D()
{
  {
    init_simple_test("BFu0s_F_D");
    static BFu0s_F_D lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_F_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_D)");
    check_field_offset(lv, v1, 0, "BFu0s_F_D.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_D(Test_BFu0s_F_D, "BFu0s_F_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_F()
{
  {
    init_simple_test("BFu0s_F_F");
    static BFu0s_F_F lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_F_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_F)");
    check_field_offset(lv, v1, 0, "BFu0s_F_F.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_F(Test_BFu0s_F_F, "BFu0s_F_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_I()
{
  {
    init_simple_test("BFu0s_F_I");
    static BFu0s_F_I lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_F_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_I)");
    check_field_offset(lv, v1, 0, "BFu0s_F_I.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_I(Test_BFu0s_F_I, "BFu0s_F_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_Ip()
{
  {
    init_simple_test("BFu0s_F_Ip");
    static BFu0s_F_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_F_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_F_Ip.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_Ip(Test_BFu0s_F_Ip, "BFu0s_F_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_L()
{
  {
    init_simple_test("BFu0s_F_L");
    static BFu0s_F_L lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_F_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_L)");
    check_field_offset(lv, v1, 0, "BFu0s_F_L.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_L(Test_BFu0s_F_L, "BFu0s_F_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_S()
{
  {
    init_simple_test("BFu0s_F_S");
    static BFu0s_F_S lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_F_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_S)");
    check_field_offset(lv, v1, 0, "BFu0s_F_S.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_S(Test_BFu0s_F_S, "BFu0s_F_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_Uc()
{
  {
    init_simple_test("BFu0s_F_Uc");
    static BFu0s_F_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_F_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_F_Uc.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_Uc(Test_BFu0s_F_Uc, "BFu0s_F_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_Ui()
{
  {
    init_simple_test("BFu0s_F_Ui");
    static BFu0s_F_Ui lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_F_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_F_Ui.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_Ui(Test_BFu0s_F_Ui, "BFu0s_F_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_Ul()
{
  {
    init_simple_test("BFu0s_F_Ul");
    static BFu0s_F_Ul lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_F_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_F_Ul.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_Ul(Test_BFu0s_F_Ul, "BFu0s_F_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_Us()
{
  {
    init_simple_test("BFu0s_F_Us");
    static BFu0s_F_Us lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_F_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_F_Us.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_Us(Test_BFu0s_F_Us, "BFu0s_F_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_F_Vp()
{
  {
    init_simple_test("BFu0s_F_Vp");
    static BFu0s_F_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_F_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_F_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_F_Vp.v1");
    check_field_offset(lv, v2, 4, "BFu0s_F_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_F_Vp(Test_BFu0s_F_Vp, "BFu0s_F_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I()
{
  {
    init_simple_test("BFu0s_I");
    static BFu0s_I lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I)");
    check_field_offset(lv, v1, 0, "BFu0s_I.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_I(Test_BFu0s_I, "BFu0s_I", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu0c()
{
  {
    init_simple_test("BFu0s_I_BFu0c");
    static BFu0s_I_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_I_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu0c(Test_BFu0s_I_BFu0c, "BFu0s_I_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu0i()
{
  {
    init_simple_test("BFu0s_I_BFu0i");
    static BFu0s_I_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_I_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu0i(Test_BFu0s_I_BFu0i, "BFu0s_I_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu0ll()
{
  {
    init_simple_test("BFu0s_I_BFu0ll");
    static BFu0s_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_I_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu0ll(Test_BFu0s_I_BFu0ll, "BFu0s_I_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu0s()
{
  {
    init_simple_test("BFu0s_I_BFu0s");
    static BFu0s_I_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_I_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu0s(Test_BFu0s_I_BFu0s, "BFu0s_I_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu15i()
{
  {
    init_simple_test("BFu0s_I_BFu15i");
    static BFu0s_I_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_I_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu15i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_I_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_I_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu15i(Test_BFu0s_I_BFu15i, "BFu0s_I_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu15ll()
{
  {
    init_simple_test("BFu0s_I_BFu15ll");
    static BFu0s_I_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_I_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu15ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_I_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_I_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu15ll(Test_BFu0s_I_BFu15ll, "BFu0s_I_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu15s()
{
  {
    init_simple_test("BFu0s_I_BFu15s");
    static BFu0s_I_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_I_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu15s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_I_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_I_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu15s(Test_BFu0s_I_BFu15s, "BFu0s_I_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu16i()
{
  {
    init_simple_test("BFu0s_I_BFu16i");
    static BFu0s_I_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_I_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu16i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_I_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_I_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu16i(Test_BFu0s_I_BFu16i, "BFu0s_I_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu16ll()
{
  {
    init_simple_test("BFu0s_I_BFu16ll");
    static BFu0s_I_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_I_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu16ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_I_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_I_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu16ll(Test_BFu0s_I_BFu16ll, "BFu0s_I_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu16s()
{
  {
    init_simple_test("BFu0s_I_BFu16s");
    static BFu0s_I_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_I_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu16s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_I_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_I_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu16s(Test_BFu0s_I_BFu16s, "BFu0s_I_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu17i()
{
  {
    init_simple_test("BFu0s_I_BFu17i");
    static BFu0s_I_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_I_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu17i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFu0s_I_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFu0s_I_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu17i(Test_BFu0s_I_BFu17i, "BFu0s_I_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu17ll()
{
  {
    init_simple_test("BFu0s_I_BFu17ll");
    static BFu0s_I_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_I_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu17ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFu0s_I_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFu0s_I_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu17ll(Test_BFu0s_I_BFu17ll, "BFu0s_I_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu1c()
{
  {
    init_simple_test("BFu0s_I_BFu1c");
    static BFu0s_I_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu1c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_I_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu1c(Test_BFu0s_I_BFu1c, "BFu0s_I_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu1i()
{
  {
    init_simple_test("BFu0s_I_BFu1i");
    static BFu0s_I_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu1i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_I_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu1i(Test_BFu0s_I_BFu1i, "BFu0s_I_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu1ll()
{
  {
    init_simple_test("BFu0s_I_BFu1ll");
    static BFu0s_I_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu1ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_I_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu1ll(Test_BFu0s_I_BFu1ll, "BFu0s_I_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu1s()
{
  {
    init_simple_test("BFu0s_I_BFu1s");
    static BFu0s_I_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu1s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_I_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu1s(Test_BFu0s_I_BFu1s, "BFu0s_I_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu31i()
{
  {
    init_simple_test("BFu0s_I_BFu31i");
    static BFu0s_I_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_I_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu31i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "BFu0s_I_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "BFu0s_I_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu31i(Test_BFu0s_I_BFu31i, "BFu0s_I_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu31ll()
{
  {
    init_simple_test("BFu0s_I_BFu31ll");
    static BFu0s_I_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_I_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu31ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "BFu0s_I_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "BFu0s_I_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu31ll(Test_BFu0s_I_BFu31ll, "BFu0s_I_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu32i()
{
  {
    init_simple_test("BFu0s_I_BFu32i");
    static BFu0s_I_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_I_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu32i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "BFu0s_I_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "BFu0s_I_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu32i(Test_BFu0s_I_BFu32i, "BFu0s_I_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu32ll()
{
  {
    init_simple_test("BFu0s_I_BFu32ll");
    static BFu0s_I_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_I_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu32ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "BFu0s_I_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "BFu0s_I_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu32ll(Test_BFu0s_I_BFu32ll, "BFu0s_I_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu33()
{
  {
    init_simple_test("BFu0s_I_BFu33");
    static BFu0s_I_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_I_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu33.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "BFu0s_I_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "BFu0s_I_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu33(Test_BFu0s_I_BFu33, "BFu0s_I_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu7c()
{
  {
    init_simple_test("BFu0s_I_BFu7c");
    static BFu0s_I_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu7c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_I_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_I_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu7c(Test_BFu0s_I_BFu7c, "BFu0s_I_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu7i()
{
  {
    init_simple_test("BFu0s_I_BFu7i");
    static BFu0s_I_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu7i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_I_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_I_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu7i(Test_BFu0s_I_BFu7i, "BFu0s_I_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu7ll()
{
  {
    init_simple_test("BFu0s_I_BFu7ll");
    static BFu0s_I_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu7ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_I_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_I_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu7ll(Test_BFu0s_I_BFu7ll, "BFu0s_I_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu7s()
{
  {
    init_simple_test("BFu0s_I_BFu7s");
    static BFu0s_I_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu7s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_I_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_I_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu7s(Test_BFu0s_I_BFu7s, "BFu0s_I_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu8c()
{
  {
    init_simple_test("BFu0s_I_BFu8c");
    static BFu0s_I_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu8c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_I_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_I_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu8c(Test_BFu0s_I_BFu8c, "BFu0s_I_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu8i()
{
  {
    init_simple_test("BFu0s_I_BFu8i");
    static BFu0s_I_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu8i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_I_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_I_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu8i(Test_BFu0s_I_BFu8i, "BFu0s_I_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu8ll()
{
  {
    init_simple_test("BFu0s_I_BFu8ll");
    static BFu0s_I_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu8ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_I_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_I_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu8ll(Test_BFu0s_I_BFu8ll, "BFu0s_I_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu8s()
{
  {
    init_simple_test("BFu0s_I_BFu8s");
    static BFu0s_I_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu8s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_I_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_I_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu8s(Test_BFu0s_I_BFu8s, "BFu0s_I_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu9i()
{
  {
    init_simple_test("BFu0s_I_BFu9i");
    static BFu0s_I_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_I_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu9i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_I_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_I_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu9i(Test_BFu0s_I_BFu9i, "BFu0s_I_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu9ll()
{
  {
    init_simple_test("BFu0s_I_BFu9ll");
    static BFu0s_I_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_I_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu9ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_I_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_I_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu9ll(Test_BFu0s_I_BFu9ll, "BFu0s_I_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_BFu9s()
{
  {
    init_simple_test("BFu0s_I_BFu9s");
    static BFu0s_I_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_I_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_I_BFu9s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_I_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_I_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_I_BFu9s(Test_BFu0s_I_BFu9s, "BFu0s_I_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_C()
{
  {
    init_simple_test("BFu0s_I_C");
    static BFu0s_I_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_C)");
    check_field_offset(lv, v1, 0, "BFu0s_I_C.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_C(Test_BFu0s_I_C, "BFu0s_I_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_D()
{
  {
    init_simple_test("BFu0s_I_D");
    static BFu0s_I_D lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_I_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_D)");
    check_field_offset(lv, v1, 0, "BFu0s_I_D.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_D(Test_BFu0s_I_D, "BFu0s_I_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_F()
{
  {
    init_simple_test("BFu0s_I_F");
    static BFu0s_I_F lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_I_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_F)");
    check_field_offset(lv, v1, 0, "BFu0s_I_F.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_F(Test_BFu0s_I_F, "BFu0s_I_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_I()
{
  {
    init_simple_test("BFu0s_I_I");
    static BFu0s_I_I lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_I_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_I)");
    check_field_offset(lv, v1, 0, "BFu0s_I_I.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_I(Test_BFu0s_I_I, "BFu0s_I_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_Ip()
{
  {
    init_simple_test("BFu0s_I_Ip");
    static BFu0s_I_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_I_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_I_Ip.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_Ip(Test_BFu0s_I_Ip, "BFu0s_I_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_L()
{
  {
    init_simple_test("BFu0s_I_L");
    static BFu0s_I_L lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_I_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_L)");
    check_field_offset(lv, v1, 0, "BFu0s_I_L.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_L(Test_BFu0s_I_L, "BFu0s_I_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_S()
{
  {
    init_simple_test("BFu0s_I_S");
    static BFu0s_I_S lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_I_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_S)");
    check_field_offset(lv, v1, 0, "BFu0s_I_S.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_S(Test_BFu0s_I_S, "BFu0s_I_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_Uc()
{
  {
    init_simple_test("BFu0s_I_Uc");
    static BFu0s_I_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_I_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_I_Uc.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_Uc(Test_BFu0s_I_Uc, "BFu0s_I_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_Ui()
{
  {
    init_simple_test("BFu0s_I_Ui");
    static BFu0s_I_Ui lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_I_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_I_Ui.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_Ui(Test_BFu0s_I_Ui, "BFu0s_I_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_Ul()
{
  {
    init_simple_test("BFu0s_I_Ul");
    static BFu0s_I_Ul lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_I_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_I_Ul.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_Ul(Test_BFu0s_I_Ul, "BFu0s_I_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_Us()
{
  {
    init_simple_test("BFu0s_I_Us");
    static BFu0s_I_Us lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_I_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_I_Us.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_Us(Test_BFu0s_I_Us, "BFu0s_I_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_I_Vp()
{
  {
    init_simple_test("BFu0s_I_Vp");
    static BFu0s_I_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_I_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_I_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_I_Vp.v1");
    check_field_offset(lv, v2, 4, "BFu0s_I_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_I_Vp(Test_BFu0s_I_Vp, "BFu0s_I_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip()
{
  {
    init_simple_test("BFu0s_Ip");
    static BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip(Test_BFu0s_Ip, "BFu0s_Ip", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu0c()
{
  {
    init_simple_test("BFu0s_Ip_BFu0c");
    static BFu0s_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Ip_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu0c(Test_BFu0s_Ip_BFu0c, "BFu0s_Ip_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu0i()
{
  {
    init_simple_test("BFu0s_Ip_BFu0i");
    static BFu0s_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Ip_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu0i(Test_BFu0s_Ip_BFu0i, "BFu0s_Ip_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu0ll()
{
  {
    init_simple_test("BFu0s_Ip_BFu0ll");
    static BFu0s_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Ip_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu0ll(Test_BFu0s_Ip_BFu0ll, "BFu0s_Ip_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu0s()
{
  {
    init_simple_test("BFu0s_Ip_BFu0s");
    static BFu0s_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Ip_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu0s(Test_BFu0s_Ip_BFu0s, "BFu0s_Ip_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu15i()
{
  {
    init_simple_test("BFu0s_Ip_BFu15i");
    static BFu0s_Ip_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Ip_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu0s_Ip_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu0s_Ip_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu15i(Test_BFu0s_Ip_BFu15i, "BFu0s_Ip_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu15ll()
{
  {
    init_simple_test("BFu0s_Ip_BFu15ll");
    static BFu0s_Ip_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Ip_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu0s_Ip_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu0s_Ip_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu15ll(Test_BFu0s_Ip_BFu15ll, "BFu0s_Ip_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu15s()
{
  {
    init_simple_test("BFu0s_Ip_BFu15s");
    static BFu0s_Ip_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Ip_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu0s_Ip_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu0s_Ip_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu15s(Test_BFu0s_Ip_BFu15s, "BFu0s_Ip_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu16i()
{
  {
    init_simple_test("BFu0s_Ip_BFu16i");
    static BFu0s_Ip_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Ip_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu0s_Ip_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu0s_Ip_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu16i(Test_BFu0s_Ip_BFu16i, "BFu0s_Ip_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu16ll()
{
  {
    init_simple_test("BFu0s_Ip_BFu16ll");
    static BFu0s_Ip_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Ip_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu0s_Ip_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu0s_Ip_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu16ll(Test_BFu0s_Ip_BFu16ll, "BFu0s_Ip_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu16s()
{
  {
    init_simple_test("BFu0s_Ip_BFu16s");
    static BFu0s_Ip_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Ip_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu0s_Ip_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu0s_Ip_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu16s(Test_BFu0s_Ip_BFu16s, "BFu0s_Ip_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu17i()
{
  {
    init_simple_test("BFu0s_Ip_BFu17i");
    static BFu0s_Ip_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu0s_Ip_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "BFu0s_Ip_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "BFu0s_Ip_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu17i(Test_BFu0s_Ip_BFu17i, "BFu0s_Ip_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu17ll()
{
  {
    init_simple_test("BFu0s_Ip_BFu17ll");
    static BFu0s_Ip_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu0s_Ip_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "BFu0s_Ip_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "BFu0s_Ip_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu17ll(Test_BFu0s_Ip_BFu17ll, "BFu0s_Ip_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu1c()
{
  {
    init_simple_test("BFu0s_Ip_BFu1c");
    static BFu0s_Ip_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0s_Ip_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu1c(Test_BFu0s_Ip_BFu1c, "BFu0s_Ip_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu1i()
{
  {
    init_simple_test("BFu0s_Ip_BFu1i");
    static BFu0s_Ip_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0s_Ip_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu1i(Test_BFu0s_Ip_BFu1i, "BFu0s_Ip_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu1ll()
{
  {
    init_simple_test("BFu0s_Ip_BFu1ll");
    static BFu0s_Ip_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0s_Ip_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu1ll(Test_BFu0s_Ip_BFu1ll, "BFu0s_Ip_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu1s()
{
  {
    init_simple_test("BFu0s_Ip_BFu1s");
    static BFu0s_Ip_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0s_Ip_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu1s(Test_BFu0s_Ip_BFu1s, "BFu0s_Ip_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu31i()
{
  {
    init_simple_test("BFu0s_Ip_BFu31i");
    static BFu0s_Ip_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Ip_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "BFu0s_Ip_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "BFu0s_Ip_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu31i(Test_BFu0s_Ip_BFu31i, "BFu0s_Ip_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu31ll()
{
  {
    init_simple_test("BFu0s_Ip_BFu31ll");
    static BFu0s_Ip_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Ip_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "BFu0s_Ip_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "BFu0s_Ip_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu31ll(Test_BFu0s_Ip_BFu31ll, "BFu0s_Ip_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu32i()
{
  {
    init_simple_test("BFu0s_Ip_BFu32i");
    static BFu0s_Ip_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Ip_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "BFu0s_Ip_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "BFu0s_Ip_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu32i(Test_BFu0s_Ip_BFu32i, "BFu0s_Ip_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu32ll()
{
  {
    init_simple_test("BFu0s_Ip_BFu32ll");
    static BFu0s_Ip_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Ip_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "BFu0s_Ip_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "BFu0s_Ip_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu32ll(Test_BFu0s_Ip_BFu32ll, "BFu0s_Ip_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu33()
{
  {
    init_simple_test("BFu0s_Ip_BFu33");
    static BFu0s_Ip_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(BFu0s_Ip_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "BFu0s_Ip_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "BFu0s_Ip_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu33(Test_BFu0s_Ip_BFu33, "BFu0s_Ip_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu7c()
{
  {
    init_simple_test("BFu0s_Ip_BFu7c");
    static BFu0s_Ip_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0s_Ip_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0s_Ip_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu7c(Test_BFu0s_Ip_BFu7c, "BFu0s_Ip_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu7i()
{
  {
    init_simple_test("BFu0s_Ip_BFu7i");
    static BFu0s_Ip_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0s_Ip_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0s_Ip_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu7i(Test_BFu0s_Ip_BFu7i, "BFu0s_Ip_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu7ll()
{
  {
    init_simple_test("BFu0s_Ip_BFu7ll");
    static BFu0s_Ip_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0s_Ip_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0s_Ip_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu7ll(Test_BFu0s_Ip_BFu7ll, "BFu0s_Ip_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu7s()
{
  {
    init_simple_test("BFu0s_Ip_BFu7s");
    static BFu0s_Ip_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0s_Ip_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0s_Ip_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu7s(Test_BFu0s_Ip_BFu7s, "BFu0s_Ip_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu8c()
{
  {
    init_simple_test("BFu0s_Ip_BFu8c");
    static BFu0s_Ip_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu8c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu0s_Ip_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu0s_Ip_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu8c(Test_BFu0s_Ip_BFu8c, "BFu0s_Ip_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu8i()
{
  {
    init_simple_test("BFu0s_Ip_BFu8i");
    static BFu0s_Ip_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu8i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu0s_Ip_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu0s_Ip_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu8i(Test_BFu0s_Ip_BFu8i, "BFu0s_Ip_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu8ll()
{
  {
    init_simple_test("BFu0s_Ip_BFu8ll");
    static BFu0s_Ip_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu8ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu0s_Ip_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu0s_Ip_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu8ll(Test_BFu0s_Ip_BFu8ll, "BFu0s_Ip_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu8s()
{
  {
    init_simple_test("BFu0s_Ip_BFu8s");
    static BFu0s_Ip_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu8s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu0s_Ip_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu0s_Ip_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu8s(Test_BFu0s_Ip_BFu8s, "BFu0s_Ip_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu9i()
{
  {
    init_simple_test("BFu0s_Ip_BFu9i");
    static BFu0s_Ip_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Ip_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu9i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "BFu0s_Ip_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "BFu0s_Ip_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu9i(Test_BFu0s_Ip_BFu9i, "BFu0s_Ip_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu9ll()
{
  {
    init_simple_test("BFu0s_Ip_BFu9ll");
    static BFu0s_Ip_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Ip_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu9ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "BFu0s_Ip_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "BFu0s_Ip_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu9ll(Test_BFu0s_Ip_BFu9ll, "BFu0s_Ip_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_BFu9s()
{
  {
    init_simple_test("BFu0s_Ip_BFu9s");
    static BFu0s_Ip_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Ip_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_BFu9s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "BFu0s_Ip_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "BFu0s_Ip_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_BFu9s(Test_BFu0s_Ip_BFu9s, "BFu0s_Ip_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_C()
{
  {
    init_simple_test("BFu0s_Ip_C");
    static BFu0s_Ip_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_C)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_C.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_C(Test_BFu0s_Ip_C, "BFu0s_Ip_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_D()
{
  {
    init_simple_test("BFu0s_Ip_D");
    static BFu0s_Ip_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_Ip_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_D)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_D.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_D(Test_BFu0s_Ip_D, "BFu0s_Ip_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_F()
{
  {
    init_simple_test("BFu0s_Ip_F");
    static BFu0s_Ip_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Ip_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_F)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_F.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_F(Test_BFu0s_Ip_F, "BFu0s_Ip_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_I()
{
  {
    init_simple_test("BFu0s_Ip_I");
    static BFu0s_Ip_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Ip_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_I)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_I.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_I(Test_BFu0s_Ip_I, "BFu0s_Ip_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_Ip()
{
  {
    init_simple_test("BFu0s_Ip_Ip");
    static BFu0s_Ip_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(BFu0s_Ip_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_Ip(Test_BFu0s_Ip_Ip, "BFu0s_Ip_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_L()
{
  {
    init_simple_test("BFu0s_Ip_L");
    static BFu0s_Ip_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_Ip_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_L)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_L.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_L(Test_BFu0s_Ip_L, "BFu0s_Ip_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_S()
{
  {
    init_simple_test("BFu0s_Ip_S");
    static BFu0s_Ip_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Ip_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_S)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_S.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_S(Test_BFu0s_Ip_S, "BFu0s_Ip_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_Uc()
{
  {
    init_simple_test("BFu0s_Ip_Uc");
    static BFu0s_Ip_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Ip_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_Uc(Test_BFu0s_Ip_Uc, "BFu0s_Ip_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_Ui()
{
  {
    init_simple_test("BFu0s_Ip_Ui");
    static BFu0s_Ip_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Ip_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_Ui(Test_BFu0s_Ip_Ui, "BFu0s_Ip_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_Ul()
{
  {
    init_simple_test("BFu0s_Ip_Ul");
    static BFu0s_Ip_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_Ip_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_Ul(Test_BFu0s_Ip_Ul, "BFu0s_Ip_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_Us()
{
  {
    init_simple_test("BFu0s_Ip_Us");
    static BFu0s_Ip_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Ip_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_Us.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_Us(Test_BFu0s_Ip_Us, "BFu0s_Ip_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ip_Vp()
{
  {
    init_simple_test("BFu0s_Ip_Vp");
    static BFu0s_Ip_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(BFu0s_Ip_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ip_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_Ip_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Ip_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ip_Vp(Test_BFu0s_Ip_Vp, "BFu0s_Ip_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L()
{
  {
    init_simple_test("BFu0s_L");
    static BFu0s_L lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L)");
    check_field_offset(lv, v1, 0, "BFu0s_L.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_L(Test_BFu0s_L, "BFu0s_L", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu0c()
{
  {
    init_simple_test("BFu0s_L_BFu0c");
    static BFu0s_L_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_L_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu0c(Test_BFu0s_L_BFu0c, "BFu0s_L_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu0i()
{
  {
    init_simple_test("BFu0s_L_BFu0i");
    static BFu0s_L_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_L_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu0i(Test_BFu0s_L_BFu0i, "BFu0s_L_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu0ll()
{
  {
    init_simple_test("BFu0s_L_BFu0ll");
    static BFu0s_L_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_L_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu0ll(Test_BFu0s_L_BFu0ll, "BFu0s_L_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu0s()
{
  {
    init_simple_test("BFu0s_L_BFu0s");
    static BFu0s_L_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_L_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu0s(Test_BFu0s_L_BFu0s, "BFu0s_L_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu15i()
{
  {
    init_simple_test("BFu0s_L_BFu15i");
    static BFu0s_L_BFu15i lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_L_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu15i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "BFu0s_L_BFu15i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "BFu0s_L_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu15i(Test_BFu0s_L_BFu15i, "BFu0s_L_BFu15i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu15ll()
{
  {
    init_simple_test("BFu0s_L_BFu15ll");
    static BFu0s_L_BFu15ll lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_L_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu15ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "BFu0s_L_BFu15ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "BFu0s_L_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu15ll(Test_BFu0s_L_BFu15ll, "BFu0s_L_BFu15ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu15s()
{
  {
    init_simple_test("BFu0s_L_BFu15s");
    static BFu0s_L_BFu15s lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_L_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu15s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "BFu0s_L_BFu15s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "BFu0s_L_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu15s(Test_BFu0s_L_BFu15s, "BFu0s_L_BFu15s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu16i()
{
  {
    init_simple_test("BFu0s_L_BFu16i");
    static BFu0s_L_BFu16i lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_L_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu16i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "BFu0s_L_BFu16i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "BFu0s_L_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu16i(Test_BFu0s_L_BFu16i, "BFu0s_L_BFu16i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu16ll()
{
  {
    init_simple_test("BFu0s_L_BFu16ll");
    static BFu0s_L_BFu16ll lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_L_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu16ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "BFu0s_L_BFu16ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "BFu0s_L_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu16ll(Test_BFu0s_L_BFu16ll, "BFu0s_L_BFu16ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu16s()
{
  {
    init_simple_test("BFu0s_L_BFu16s");
    static BFu0s_L_BFu16s lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_L_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu16s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "BFu0s_L_BFu16s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "BFu0s_L_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu16s(Test_BFu0s_L_BFu16s, "BFu0s_L_BFu16s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu17i()
{
  {
    init_simple_test("BFu0s_L_BFu17i");
    static BFu0s_L_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_L_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu17i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "BFu0s_L_BFu17i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "BFu0s_L_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu17i(Test_BFu0s_L_BFu17i, "BFu0s_L_BFu17i", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu17ll()
{
  {
    init_simple_test("BFu0s_L_BFu17ll");
    static BFu0s_L_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_L_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu17ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "BFu0s_L_BFu17ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "BFu0s_L_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu17ll(Test_BFu0s_L_BFu17ll, "BFu0s_L_BFu17ll", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu1c()
{
  {
    init_simple_test("BFu0s_L_BFu1c");
    static BFu0s_L_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu1c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_L_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu1c(Test_BFu0s_L_BFu1c, "BFu0s_L_BFu1c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu1i()
{
  {
    init_simple_test("BFu0s_L_BFu1i");
    static BFu0s_L_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu1i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_L_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu1i(Test_BFu0s_L_BFu1i, "BFu0s_L_BFu1i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu1ll()
{
  {
    init_simple_test("BFu0s_L_BFu1ll");
    static BFu0s_L_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu1ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_L_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu1ll(Test_BFu0s_L_BFu1ll, "BFu0s_L_BFu1ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu1s()
{
  {
    init_simple_test("BFu0s_L_BFu1s");
    static BFu0s_L_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu1s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_L_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu1s(Test_BFu0s_L_BFu1s, "BFu0s_L_BFu1s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu31i()
{
  {
    init_simple_test("BFu0s_L_BFu31i");
    static BFu0s_L_BFu31i lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_L_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu31i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "BFu0s_L_BFu31i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "BFu0s_L_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu31i(Test_BFu0s_L_BFu31i, "BFu0s_L_BFu31i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu31ll()
{
  {
    init_simple_test("BFu0s_L_BFu31ll");
    static BFu0s_L_BFu31ll lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_L_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu31ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "BFu0s_L_BFu31ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "BFu0s_L_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu31ll(Test_BFu0s_L_BFu31ll, "BFu0s_L_BFu31ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu32i()
{
  {
    init_simple_test("BFu0s_L_BFu32i");
    static BFu0s_L_BFu32i lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_L_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu32i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "BFu0s_L_BFu32i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "BFu0s_L_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu32i(Test_BFu0s_L_BFu32i, "BFu0s_L_BFu32i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu32ll()
{
  {
    init_simple_test("BFu0s_L_BFu32ll");
    static BFu0s_L_BFu32ll lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_L_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu32ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "BFu0s_L_BFu32ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "BFu0s_L_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu32ll(Test_BFu0s_L_BFu32ll, "BFu0s_L_BFu32ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu33()
{
  {
    init_simple_test("BFu0s_L_BFu33");
    static BFu0s_L_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,13), "sizeof(BFu0s_L_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu33.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "BFu0s_L_BFu33");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "BFu0s_L_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu33(Test_BFu0s_L_BFu33, "BFu0s_L_BFu33", ABISELECT(13,13));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu7c()
{
  {
    init_simple_test("BFu0s_L_BFu7c");
    static BFu0s_L_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu7c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_L_BFu7c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_L_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu7c(Test_BFu0s_L_BFu7c, "BFu0s_L_BFu7c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu7i()
{
  {
    init_simple_test("BFu0s_L_BFu7i");
    static BFu0s_L_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu7i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_L_BFu7i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_L_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu7i(Test_BFu0s_L_BFu7i, "BFu0s_L_BFu7i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu7ll()
{
  {
    init_simple_test("BFu0s_L_BFu7ll");
    static BFu0s_L_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu7ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_L_BFu7ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_L_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu7ll(Test_BFu0s_L_BFu7ll, "BFu0s_L_BFu7ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu7s()
{
  {
    init_simple_test("BFu0s_L_BFu7s");
    static BFu0s_L_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu7s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_L_BFu7s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_L_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu7s(Test_BFu0s_L_BFu7s, "BFu0s_L_BFu7s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu8c()
{
  {
    init_simple_test("BFu0s_L_BFu8c");
    static BFu0s_L_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu8c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_L_BFu8c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_L_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu8c(Test_BFu0s_L_BFu8c, "BFu0s_L_BFu8c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu8i()
{
  {
    init_simple_test("BFu0s_L_BFu8i");
    static BFu0s_L_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu8i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_L_BFu8i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_L_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu8i(Test_BFu0s_L_BFu8i, "BFu0s_L_BFu8i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu8ll()
{
  {
    init_simple_test("BFu0s_L_BFu8ll");
    static BFu0s_L_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu8ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_L_BFu8ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_L_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu8ll(Test_BFu0s_L_BFu8ll, "BFu0s_L_BFu8ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu8s()
{
  {
    init_simple_test("BFu0s_L_BFu8s");
    static BFu0s_L_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu8s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_L_BFu8s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_L_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu8s(Test_BFu0s_L_BFu8s, "BFu0s_L_BFu8s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu9i()
{
  {
    init_simple_test("BFu0s_L_BFu9i");
    static BFu0s_L_BFu9i lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_L_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu9i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "BFu0s_L_BFu9i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "BFu0s_L_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu9i(Test_BFu0s_L_BFu9i, "BFu0s_L_BFu9i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu9ll()
{
  {
    init_simple_test("BFu0s_L_BFu9ll");
    static BFu0s_L_BFu9ll lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_L_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu9ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "BFu0s_L_BFu9ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "BFu0s_L_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu9ll(Test_BFu0s_L_BFu9ll, "BFu0s_L_BFu9ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_BFu9s()
{
  {
    init_simple_test("BFu0s_L_BFu9s");
    static BFu0s_L_BFu9s lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_L_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_L_BFu9s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "BFu0s_L_BFu9s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "BFu0s_L_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_L_BFu9s(Test_BFu0s_L_BFu9s, "BFu0s_L_BFu9s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_C()
{
  {
    init_simple_test("BFu0s_L_C");
    static BFu0s_L_C lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_C)");
    check_field_offset(lv, v1, 0, "BFu0s_L_C.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_C(Test_BFu0s_L_C, "BFu0s_L_C", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_D()
{
  {
    init_simple_test("BFu0s_L_D");
    static BFu0s_L_D lv;
    check2(sizeof(lv), 16, "sizeof(BFu0s_L_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_D)");
    check_field_offset(lv, v1, 0, "BFu0s_L_D.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_D(Test_BFu0s_L_D, "BFu0s_L_D", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_F()
{
  {
    init_simple_test("BFu0s_L_F");
    static BFu0s_L_F lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_L_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_F)");
    check_field_offset(lv, v1, 0, "BFu0s_L_F.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_F(Test_BFu0s_L_F, "BFu0s_L_F", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_I()
{
  {
    init_simple_test("BFu0s_L_I");
    static BFu0s_L_I lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_L_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_I)");
    check_field_offset(lv, v1, 0, "BFu0s_L_I.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_I(Test_BFu0s_L_I, "BFu0s_L_I", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_Ip()
{
  {
    init_simple_test("BFu0s_L_Ip");
    static BFu0s_L_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_L_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_L_Ip.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_Ip(Test_BFu0s_L_Ip, "BFu0s_L_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_L()
{
  {
    init_simple_test("BFu0s_L_L");
    static BFu0s_L_L lv;
    check2(sizeof(lv), 16, "sizeof(BFu0s_L_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_L)");
    check_field_offset(lv, v1, 0, "BFu0s_L_L.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_L(Test_BFu0s_L_L, "BFu0s_L_L", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_S()
{
  {
    init_simple_test("BFu0s_L_S");
    static BFu0s_L_S lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_L_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_S)");
    check_field_offset(lv, v1, 0, "BFu0s_L_S.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_S(Test_BFu0s_L_S, "BFu0s_L_S", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_Uc()
{
  {
    init_simple_test("BFu0s_L_Uc");
    static BFu0s_L_Uc lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_L_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_L_Uc.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_Uc(Test_BFu0s_L_Uc, "BFu0s_L_Uc", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_Ui()
{
  {
    init_simple_test("BFu0s_L_Ui");
    static BFu0s_L_Ui lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_L_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_L_Ui.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_Ui(Test_BFu0s_L_Ui, "BFu0s_L_Ui", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_Ul()
{
  {
    init_simple_test("BFu0s_L_Ul");
    static BFu0s_L_Ul lv;
    check2(sizeof(lv), 16, "sizeof(BFu0s_L_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_L_Ul.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_Ul(Test_BFu0s_L_Ul, "BFu0s_L_Ul", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_Us()
{
  {
    init_simple_test("BFu0s_L_Us");
    static BFu0s_L_Us lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_L_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_L_Us.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_Us(Test_BFu0s_L_Us, "BFu0s_L_Us", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_L_Vp()
{
  {
    init_simple_test("BFu0s_L_Vp");
    static BFu0s_L_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_L_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_L_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_L_Vp.v1");
    check_field_offset(lv, v2, 8, "BFu0s_L_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_L_Vp(Test_BFu0s_L_Vp, "BFu0s_L_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S()
{
  {
    init_simple_test("BFu0s_S");
    static BFu0s_S lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S)");
    check_field_offset(lv, v1, 0, "BFu0s_S.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_S(Test_BFu0s_S, "BFu0s_S", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu0c()
{
  {
    init_simple_test("BFu0s_S_BFu0c");
    static BFu0s_S_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_S_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu0c(Test_BFu0s_S_BFu0c, "BFu0s_S_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu0i()
{
  {
    init_simple_test("BFu0s_S_BFu0i");
    static BFu0s_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_S_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu0i(Test_BFu0s_S_BFu0i, "BFu0s_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu0ll()
{
  {
    init_simple_test("BFu0s_S_BFu0ll");
    static BFu0s_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_S_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu0ll(Test_BFu0s_S_BFu0ll, "BFu0s_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu0s()
{
  {
    init_simple_test("BFu0s_S_BFu0s");
    static BFu0s_S_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_S_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu0s(Test_BFu0s_S_BFu0s, "BFu0s_S_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu15i()
{
  {
    init_simple_test("BFu0s_S_BFu15i");
    static BFu0s_S_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_S_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu15i.v1");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_S_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_S_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu15i(Test_BFu0s_S_BFu15i, "BFu0s_S_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu15ll()
{
  {
    init_simple_test("BFu0s_S_BFu15ll");
    static BFu0s_S_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_S_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu15ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_S_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_S_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu15ll(Test_BFu0s_S_BFu15ll, "BFu0s_S_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu15s()
{
  {
    init_simple_test("BFu0s_S_BFu15s");
    static BFu0s_S_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_S_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu15s.v1");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_S_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_S_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu15s(Test_BFu0s_S_BFu15s, "BFu0s_S_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu16i()
{
  {
    init_simple_test("BFu0s_S_BFu16i");
    static BFu0s_S_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_S_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu16i.v1");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_S_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_S_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu16i(Test_BFu0s_S_BFu16i, "BFu0s_S_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu16ll()
{
  {
    init_simple_test("BFu0s_S_BFu16ll");
    static BFu0s_S_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_S_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu16ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_S_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_S_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu16ll(Test_BFu0s_S_BFu16ll, "BFu0s_S_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu16s()
{
  {
    init_simple_test("BFu0s_S_BFu16s");
    static BFu0s_S_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_S_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu16s.v1");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_S_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_S_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu16s(Test_BFu0s_S_BFu16s, "BFu0s_S_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu17i()
{
  {
    init_simple_test("BFu0s_S_BFu17i");
    static BFu0s_S_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_S_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu17i.v1");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0s_S_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0s_S_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu17i(Test_BFu0s_S_BFu17i, "BFu0s_S_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu17ll()
{
  {
    init_simple_test("BFu0s_S_BFu17ll");
    static BFu0s_S_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_S_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu17ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0s_S_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0s_S_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu17ll(Test_BFu0s_S_BFu17ll, "BFu0s_S_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu1c()
{
  {
    init_simple_test("BFu0s_S_BFu1c");
    static BFu0s_S_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu1c.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_S_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu1c(Test_BFu0s_S_BFu1c, "BFu0s_S_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu1i()
{
  {
    init_simple_test("BFu0s_S_BFu1i");
    static BFu0s_S_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu1i.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_S_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu1i(Test_BFu0s_S_BFu1i, "BFu0s_S_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu1ll()
{
  {
    init_simple_test("BFu0s_S_BFu1ll");
    static BFu0s_S_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu1ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_S_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu1ll(Test_BFu0s_S_BFu1ll, "BFu0s_S_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu1s()
{
  {
    init_simple_test("BFu0s_S_BFu1s");
    static BFu0s_S_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu1s.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_S_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu1s(Test_BFu0s_S_BFu1s, "BFu0s_S_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu31i()
{
  {
    init_simple_test("BFu0s_S_BFu31i");
    static BFu0s_S_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_S_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu31i.v1");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0s_S_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0s_S_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu31i(Test_BFu0s_S_BFu31i, "BFu0s_S_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu31ll()
{
  {
    init_simple_test("BFu0s_S_BFu31ll");
    static BFu0s_S_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_S_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu31ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0s_S_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0s_S_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu31ll(Test_BFu0s_S_BFu31ll, "BFu0s_S_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu32i()
{
  {
    init_simple_test("BFu0s_S_BFu32i");
    static BFu0s_S_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_S_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu32i.v1");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0s_S_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0s_S_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu32i(Test_BFu0s_S_BFu32i, "BFu0s_S_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu32ll()
{
  {
    init_simple_test("BFu0s_S_BFu32ll");
    static BFu0s_S_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_S_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu32ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0s_S_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0s_S_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu32ll(Test_BFu0s_S_BFu32ll, "BFu0s_S_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu33()
{
  {
    init_simple_test("BFu0s_S_BFu33");
    static BFu0s_S_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_S_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu33.v1");
    set_bf_and_test(lv, v2, 2, 0, 33, 1, "BFu0s_S_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, hide_ull(1LL<<32), "BFu0s_S_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu33(Test_BFu0s_S_BFu33, "BFu0s_S_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu7c()
{
  {
    init_simple_test("BFu0s_S_BFu7c");
    static BFu0s_S_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu7c.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_S_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_S_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu7c(Test_BFu0s_S_BFu7c, "BFu0s_S_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu7i()
{
  {
    init_simple_test("BFu0s_S_BFu7i");
    static BFu0s_S_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu7i.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_S_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_S_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu7i(Test_BFu0s_S_BFu7i, "BFu0s_S_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu7ll()
{
  {
    init_simple_test("BFu0s_S_BFu7ll");
    static BFu0s_S_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu7ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_S_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_S_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu7ll(Test_BFu0s_S_BFu7ll, "BFu0s_S_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu7s()
{
  {
    init_simple_test("BFu0s_S_BFu7s");
    static BFu0s_S_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu7s.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_S_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_S_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu7s(Test_BFu0s_S_BFu7s, "BFu0s_S_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu8c()
{
  {
    init_simple_test("BFu0s_S_BFu8c");
    static BFu0s_S_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu8c.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_S_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_S_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu8c(Test_BFu0s_S_BFu8c, "BFu0s_S_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu8i()
{
  {
    init_simple_test("BFu0s_S_BFu8i");
    static BFu0s_S_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu8i.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_S_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_S_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu8i(Test_BFu0s_S_BFu8i, "BFu0s_S_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu8ll()
{
  {
    init_simple_test("BFu0s_S_BFu8ll");
    static BFu0s_S_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu8ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_S_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_S_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu8ll(Test_BFu0s_S_BFu8ll, "BFu0s_S_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu8s()
{
  {
    init_simple_test("BFu0s_S_BFu8s");
    static BFu0s_S_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu8s.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_S_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_S_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu8s(Test_BFu0s_S_BFu8s, "BFu0s_S_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu9i()
{
  {
    init_simple_test("BFu0s_S_BFu9i");
    static BFu0s_S_BFu9i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_S_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu9i.v1");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_S_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_S_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu9i(Test_BFu0s_S_BFu9i, "BFu0s_S_BFu9i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu9ll()
{
  {
    init_simple_test("BFu0s_S_BFu9ll");
    static BFu0s_S_BFu9ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_S_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu9ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_S_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_S_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu9ll(Test_BFu0s_S_BFu9ll, "BFu0s_S_BFu9ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_BFu9s()
{
  {
    init_simple_test("BFu0s_S_BFu9s");
    static BFu0s_S_BFu9s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_S_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_S_BFu9s.v1");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_S_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_S_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_S_BFu9s(Test_BFu0s_S_BFu9s, "BFu0s_S_BFu9s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_C()
{
  {
    init_simple_test("BFu0s_S_C");
    static BFu0s_S_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_C)");
    check_field_offset(lv, v1, 0, "BFu0s_S_C.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_C(Test_BFu0s_S_C, "BFu0s_S_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_D()
{
  {
    init_simple_test("BFu0s_S_D");
    static BFu0s_S_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_S_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_D)");
    check_field_offset(lv, v1, 0, "BFu0s_S_D.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_D(Test_BFu0s_S_D, "BFu0s_S_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_F()
{
  {
    init_simple_test("BFu0s_S_F");
    static BFu0s_S_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_S_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_F)");
    check_field_offset(lv, v1, 0, "BFu0s_S_F.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_F(Test_BFu0s_S_F, "BFu0s_S_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_I()
{
  {
    init_simple_test("BFu0s_S_I");
    static BFu0s_S_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_S_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_I)");
    check_field_offset(lv, v1, 0, "BFu0s_S_I.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_I(Test_BFu0s_S_I, "BFu0s_S_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_Ip()
{
  {
    init_simple_test("BFu0s_S_Ip");
    static BFu0s_S_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_S_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_S_Ip.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_Ip(Test_BFu0s_S_Ip, "BFu0s_S_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_L()
{
  {
    init_simple_test("BFu0s_S_L");
    static BFu0s_S_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_S_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_L)");
    check_field_offset(lv, v1, 0, "BFu0s_S_L.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_L(Test_BFu0s_S_L, "BFu0s_S_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_S()
{
  {
    init_simple_test("BFu0s_S_S");
    static BFu0s_S_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_S_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_S)");
    check_field_offset(lv, v1, 0, "BFu0s_S_S.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_S(Test_BFu0s_S_S, "BFu0s_S_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_Uc()
{
  {
    init_simple_test("BFu0s_S_Uc");
    static BFu0s_S_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_S_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_S_Uc.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_Uc(Test_BFu0s_S_Uc, "BFu0s_S_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_Ui()
{
  {
    init_simple_test("BFu0s_S_Ui");
    static BFu0s_S_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_S_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_S_Ui.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_Ui(Test_BFu0s_S_Ui, "BFu0s_S_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_Ul()
{
  {
    init_simple_test("BFu0s_S_Ul");
    static BFu0s_S_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_S_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_S_Ul.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_Ul(Test_BFu0s_S_Ul, "BFu0s_S_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_Us()
{
  {
    init_simple_test("BFu0s_S_Us");
    static BFu0s_S_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_S_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_S_Us.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_Us(Test_BFu0s_S_Us, "BFu0s_S_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_S_Vp()
{
  {
    init_simple_test("BFu0s_S_Vp");
    static BFu0s_S_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_S_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_S_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_S_Vp.v1");
    check_field_offset(lv, v2, 2, "BFu0s_S_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_S_Vp(Test_BFu0s_S_Vp, "BFu0s_S_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc()
{
  {
    init_simple_test("BFu0s_Uc");
    static BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc(Test_BFu0s_Uc, "BFu0s_Uc", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu0c()
{
  {
    init_simple_test("BFu0s_Uc_BFu0c");
    static BFu0s_Uc_BFu0c lv;
    check2(sizeof(lv), ABISELECT(1,1), "sizeof(BFu0s_Uc_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu0c(Test_BFu0s_Uc_BFu0c, "BFu0s_Uc_BFu0c", ABISELECT(1,1));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu0i()
{
  {
    init_simple_test("BFu0s_Uc_BFu0i");
    static BFu0s_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_Uc_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu0i(Test_BFu0s_Uc_BFu0i, "BFu0s_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu0ll()
{
  {
    init_simple_test("BFu0s_Uc_BFu0ll");
    static BFu0s_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Uc_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu0ll(Test_BFu0s_Uc_BFu0ll, "BFu0s_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu0s()
{
  {
    init_simple_test("BFu0s_Uc_BFu0s");
    static BFu0s_Uc_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(BFu0s_Uc_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu0s(Test_BFu0s_Uc_BFu0s, "BFu0s_Uc_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu15i()
{
  {
    init_simple_test("BFu0s_Uc_BFu15i");
    static BFu0s_Uc_BFu15i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Uc_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu15i.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_Uc_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_Uc_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu15i(Test_BFu0s_Uc_BFu15i, "BFu0s_Uc_BFu15i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu15ll()
{
  {
    init_simple_test("BFu0s_Uc_BFu15ll");
    static BFu0s_Uc_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Uc_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu15ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_Uc_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_Uc_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu15ll(Test_BFu0s_Uc_BFu15ll, "BFu0s_Uc_BFu15ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu15s()
{
  {
    init_simple_test("BFu0s_Uc_BFu15s");
    static BFu0s_Uc_BFu15s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Uc_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu15s.v1");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "BFu0s_Uc_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "BFu0s_Uc_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu15s(Test_BFu0s_Uc_BFu15s, "BFu0s_Uc_BFu15s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu16i()
{
  {
    init_simple_test("BFu0s_Uc_BFu16i");
    static BFu0s_Uc_BFu16i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Uc_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu16i.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_Uc_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_Uc_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu16i(Test_BFu0s_Uc_BFu16i, "BFu0s_Uc_BFu16i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu16ll()
{
  {
    init_simple_test("BFu0s_Uc_BFu16ll");
    static BFu0s_Uc_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Uc_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu16ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_Uc_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_Uc_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu16ll(Test_BFu0s_Uc_BFu16ll, "BFu0s_Uc_BFu16ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu16s()
{
  {
    init_simple_test("BFu0s_Uc_BFu16s");
    static BFu0s_Uc_BFu16s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Uc_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu16s.v1");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "BFu0s_Uc_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "BFu0s_Uc_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu16s(Test_BFu0s_Uc_BFu16s, "BFu0s_Uc_BFu16s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu17i()
{
  {
    init_simple_test("BFu0s_Uc_BFu17i");
    static BFu0s_Uc_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Uc_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu17i.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_Uc_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_Uc_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu17i(Test_BFu0s_Uc_BFu17i, "BFu0s_Uc_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu17ll()
{
  {
    init_simple_test("BFu0s_Uc_BFu17ll");
    static BFu0s_Uc_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Uc_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu17ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "BFu0s_Uc_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "BFu0s_Uc_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu17ll(Test_BFu0s_Uc_BFu17ll, "BFu0s_Uc_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu1c()
{
  {
    init_simple_test("BFu0s_Uc_BFu1c");
    static BFu0s_Uc_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu1c.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_Uc_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu1c(Test_BFu0s_Uc_BFu1c, "BFu0s_Uc_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu1i()
{
  {
    init_simple_test("BFu0s_Uc_BFu1i");
    static BFu0s_Uc_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu1i.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_Uc_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu1i(Test_BFu0s_Uc_BFu1i, "BFu0s_Uc_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu1ll()
{
  {
    init_simple_test("BFu0s_Uc_BFu1ll");
    static BFu0s_Uc_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu1ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_Uc_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu1ll(Test_BFu0s_Uc_BFu1ll, "BFu0s_Uc_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu1s()
{
  {
    init_simple_test("BFu0s_Uc_BFu1s");
    static BFu0s_Uc_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu1s.v1");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "BFu0s_Uc_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu1s(Test_BFu0s_Uc_BFu1s, "BFu0s_Uc_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu31i()
{
  {
    init_simple_test("BFu0s_Uc_BFu31i");
    static BFu0s_Uc_BFu31i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Uc_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu31i.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_Uc_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_Uc_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu31i(Test_BFu0s_Uc_BFu31i, "BFu0s_Uc_BFu31i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu31ll()
{
  {
    init_simple_test("BFu0s_Uc_BFu31ll");
    static BFu0s_Uc_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Uc_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu31ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "BFu0s_Uc_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "BFu0s_Uc_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu31ll(Test_BFu0s_Uc_BFu31ll, "BFu0s_Uc_BFu31ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu32i()
{
  {
    init_simple_test("BFu0s_Uc_BFu32i");
    static BFu0s_Uc_BFu32i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Uc_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu32i.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_Uc_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_Uc_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu32i(Test_BFu0s_Uc_BFu32i, "BFu0s_Uc_BFu32i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu32ll()
{
  {
    init_simple_test("BFu0s_Uc_BFu32ll");
    static BFu0s_Uc_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Uc_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu32ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "BFu0s_Uc_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "BFu0s_Uc_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu32ll(Test_BFu0s_Uc_BFu32ll, "BFu0s_Uc_BFu32ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu33()
{
  {
    init_simple_test("BFu0s_Uc_BFu33");
    static BFu0s_Uc_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Uc_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu33.v1");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "BFu0s_Uc_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "BFu0s_Uc_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu33(Test_BFu0s_Uc_BFu33, "BFu0s_Uc_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu7c()
{
  {
    init_simple_test("BFu0s_Uc_BFu7c");
    static BFu0s_Uc_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu7c.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_Uc_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_Uc_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu7c(Test_BFu0s_Uc_BFu7c, "BFu0s_Uc_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu7i()
{
  {
    init_simple_test("BFu0s_Uc_BFu7i");
    static BFu0s_Uc_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu7i.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_Uc_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_Uc_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu7i(Test_BFu0s_Uc_BFu7i, "BFu0s_Uc_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu7ll()
{
  {
    init_simple_test("BFu0s_Uc_BFu7ll");
    static BFu0s_Uc_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu7ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_Uc_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_Uc_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu7ll(Test_BFu0s_Uc_BFu7ll, "BFu0s_Uc_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu7s()
{
  {
    init_simple_test("BFu0s_Uc_BFu7s");
    static BFu0s_Uc_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu7s.v1");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "BFu0s_Uc_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "BFu0s_Uc_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu7s(Test_BFu0s_Uc_BFu7s, "BFu0s_Uc_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu8c()
{
  {
    init_simple_test("BFu0s_Uc_BFu8c");
    static BFu0s_Uc_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu8c.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_Uc_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_Uc_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu8c(Test_BFu0s_Uc_BFu8c, "BFu0s_Uc_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu8i()
{
  {
    init_simple_test("BFu0s_Uc_BFu8i");
    static BFu0s_Uc_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu8i.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_Uc_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_Uc_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu8i(Test_BFu0s_Uc_BFu8i, "BFu0s_Uc_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu8ll()
{
  {
    init_simple_test("BFu0s_Uc_BFu8ll");
    static BFu0s_Uc_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu8ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_Uc_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_Uc_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu8ll(Test_BFu0s_Uc_BFu8ll, "BFu0s_Uc_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu8s()
{
  {
    init_simple_test("BFu0s_Uc_BFu8s");
    static BFu0s_Uc_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu8s.v1");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "BFu0s_Uc_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "BFu0s_Uc_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu8s(Test_BFu0s_Uc_BFu8s, "BFu0s_Uc_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu9i()
{
  {
    init_simple_test("BFu0s_Uc_BFu9i");
    static BFu0s_Uc_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Uc_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu9i.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_Uc_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_Uc_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu9i(Test_BFu0s_Uc_BFu9i, "BFu0s_Uc_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu9ll()
{
  {
    init_simple_test("BFu0s_Uc_BFu9ll");
    static BFu0s_Uc_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Uc_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu9ll.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_Uc_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_Uc_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu9ll(Test_BFu0s_Uc_BFu9ll, "BFu0s_Uc_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_BFu9s()
{
  {
    init_simple_test("BFu0s_Uc_BFu9s");
    static BFu0s_Uc_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Uc_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_BFu9s.v1");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "BFu0s_Uc_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "BFu0s_Uc_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_BFu9s(Test_BFu0s_Uc_BFu9s, "BFu0s_Uc_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_C()
{
  {
    init_simple_test("BFu0s_Uc_C");
    static BFu0s_Uc_C lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_C)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_C.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_C(Test_BFu0s_Uc_C, "BFu0s_Uc_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_D()
{
  {
    init_simple_test("BFu0s_Uc_D");
    static BFu0s_Uc_D lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Uc_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_D)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_D.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_D(Test_BFu0s_Uc_D, "BFu0s_Uc_D", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_F()
{
  {
    init_simple_test("BFu0s_Uc_F");
    static BFu0s_Uc_F lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Uc_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_F)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_F.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_F(Test_BFu0s_Uc_F, "BFu0s_Uc_F", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_I()
{
  {
    init_simple_test("BFu0s_Uc_I");
    static BFu0s_Uc_I lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Uc_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_I)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_I.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_I(Test_BFu0s_Uc_I, "BFu0s_Uc_I", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_Ip()
{
  {
    init_simple_test("BFu0s_Uc_Ip");
    static BFu0s_Uc_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Uc_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_Ip.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_Ip(Test_BFu0s_Uc_Ip, "BFu0s_Uc_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_L()
{
  {
    init_simple_test("BFu0s_Uc_L");
    static BFu0s_Uc_L lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Uc_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_L)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_L.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_L(Test_BFu0s_Uc_L, "BFu0s_Uc_L", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_S()
{
  {
    init_simple_test("BFu0s_Uc_S");
    static BFu0s_Uc_S lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Uc_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_S)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_S.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_S(Test_BFu0s_Uc_S, "BFu0s_Uc_S", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_Uc()
{
  {
    init_simple_test("BFu0s_Uc_Uc");
    static BFu0s_Uc_Uc lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Uc_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_Uc.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_Uc(Test_BFu0s_Uc_Uc, "BFu0s_Uc_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_Ui()
{
  {
    init_simple_test("BFu0s_Uc_Ui");
    static BFu0s_Uc_Ui lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Uc_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_Ui.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_Ui(Test_BFu0s_Uc_Ui, "BFu0s_Uc_Ui", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_Ul()
{
  {
    init_simple_test("BFu0s_Uc_Ul");
    static BFu0s_Uc_Ul lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Uc_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_Ul.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_Ul(Test_BFu0s_Uc_Ul, "BFu0s_Uc_Ul", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_Us()
{
  {
    init_simple_test("BFu0s_Uc_Us");
    static BFu0s_Uc_Us lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Uc_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_Us.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_Us(Test_BFu0s_Uc_Us, "BFu0s_Uc_Us", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Uc_Vp()
{
  {
    init_simple_test("BFu0s_Uc_Vp");
    static BFu0s_Uc_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Uc_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Uc_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_Uc_Vp.v1");
    check_field_offset(lv, v2, 1, "BFu0s_Uc_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Uc_Vp(Test_BFu0s_Uc_Vp, "BFu0s_Uc_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui()
{
  {
    init_simple_test("BFu0s_Ui");
    static BFu0s_Ui lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui(Test_BFu0s_Ui, "BFu0s_Ui", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu0c()
{
  {
    init_simple_test("BFu0s_Ui_BFu0c");
    static BFu0s_Ui_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Ui_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu0c(Test_BFu0s_Ui_BFu0c, "BFu0s_Ui_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu0i()
{
  {
    init_simple_test("BFu0s_Ui_BFu0i");
    static BFu0s_Ui_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Ui_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu0i(Test_BFu0s_Ui_BFu0i, "BFu0s_Ui_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu0ll()
{
  {
    init_simple_test("BFu0s_Ui_BFu0ll");
    static BFu0s_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Ui_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu0ll(Test_BFu0s_Ui_BFu0ll, "BFu0s_Ui_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu0s()
{
  {
    init_simple_test("BFu0s_Ui_BFu0s");
    static BFu0s_Ui_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Ui_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu0s(Test_BFu0s_Ui_BFu0s, "BFu0s_Ui_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu15i()
{
  {
    init_simple_test("BFu0s_Ui_BFu15i");
    static BFu0s_Ui_BFu15i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Ui_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu15i.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_Ui_BFu15i");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_Ui_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu15i(Test_BFu0s_Ui_BFu15i, "BFu0s_Ui_BFu15i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu15ll()
{
  {
    init_simple_test("BFu0s_Ui_BFu15ll");
    static BFu0s_Ui_BFu15ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Ui_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu15ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_Ui_BFu15ll");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_Ui_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu15ll(Test_BFu0s_Ui_BFu15ll, "BFu0s_Ui_BFu15ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu15s()
{
  {
    init_simple_test("BFu0s_Ui_BFu15s");
    static BFu0s_Ui_BFu15s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Ui_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu15s.v1");
    set_bf_and_test(lv, v2, 4, 0, 15, 1, "BFu0s_Ui_BFu15s");
    set_bf_and_test(lv, v2, 4, 0, 15, hide_ull(1LL<<14), "BFu0s_Ui_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu15s(Test_BFu0s_Ui_BFu15s, "BFu0s_Ui_BFu15s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu16i()
{
  {
    init_simple_test("BFu0s_Ui_BFu16i");
    static BFu0s_Ui_BFu16i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Ui_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu16i.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_Ui_BFu16i");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_Ui_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu16i(Test_BFu0s_Ui_BFu16i, "BFu0s_Ui_BFu16i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu16ll()
{
  {
    init_simple_test("BFu0s_Ui_BFu16ll");
    static BFu0s_Ui_BFu16ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Ui_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu16ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_Ui_BFu16ll");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_Ui_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu16ll(Test_BFu0s_Ui_BFu16ll, "BFu0s_Ui_BFu16ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu16s()
{
  {
    init_simple_test("BFu0s_Ui_BFu16s");
    static BFu0s_Ui_BFu16s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Ui_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu16s.v1");
    set_bf_and_test(lv, v2, 4, 0, 16, 1, "BFu0s_Ui_BFu16s");
    set_bf_and_test(lv, v2, 4, 0, 16, hide_ull(1LL<<15), "BFu0s_Ui_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu16s(Test_BFu0s_Ui_BFu16s, "BFu0s_Ui_BFu16s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu17i()
{
  {
    init_simple_test("BFu0s_Ui_BFu17i");
    static BFu0s_Ui_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_Ui_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu17i.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFu0s_Ui_BFu17i");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFu0s_Ui_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu17i(Test_BFu0s_Ui_BFu17i, "BFu0s_Ui_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu17ll()
{
  {
    init_simple_test("BFu0s_Ui_BFu17ll");
    static BFu0s_Ui_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_Ui_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu17ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 17, 1, "BFu0s_Ui_BFu17ll");
    set_bf_and_test(lv, v2, 4, 0, 17, hide_ull(1LL<<16), "BFu0s_Ui_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu17ll(Test_BFu0s_Ui_BFu17ll, "BFu0s_Ui_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu1c()
{
  {
    init_simple_test("BFu0s_Ui_BFu1c");
    static BFu0s_Ui_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu1c.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_Ui_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu1c(Test_BFu0s_Ui_BFu1c, "BFu0s_Ui_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu1i()
{
  {
    init_simple_test("BFu0s_Ui_BFu1i");
    static BFu0s_Ui_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu1i.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_Ui_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu1i(Test_BFu0s_Ui_BFu1i, "BFu0s_Ui_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu1ll()
{
  {
    init_simple_test("BFu0s_Ui_BFu1ll");
    static BFu0s_Ui_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu1ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_Ui_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu1ll(Test_BFu0s_Ui_BFu1ll, "BFu0s_Ui_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu1s()
{
  {
    init_simple_test("BFu0s_Ui_BFu1s");
    static BFu0s_Ui_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu1s.v1");
    set_bf_and_test(lv, v2, 4, 0, 1, 1, "BFu0s_Ui_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu1s(Test_BFu0s_Ui_BFu1s, "BFu0s_Ui_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu31i()
{
  {
    init_simple_test("BFu0s_Ui_BFu31i");
    static BFu0s_Ui_BFu31i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ui_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu31i.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "BFu0s_Ui_BFu31i");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "BFu0s_Ui_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu31i(Test_BFu0s_Ui_BFu31i, "BFu0s_Ui_BFu31i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu31ll()
{
  {
    init_simple_test("BFu0s_Ui_BFu31ll");
    static BFu0s_Ui_BFu31ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ui_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu31ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 31, 1, "BFu0s_Ui_BFu31ll");
    set_bf_and_test(lv, v2, 4, 0, 31, hide_ull(1LL<<30), "BFu0s_Ui_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu31ll(Test_BFu0s_Ui_BFu31ll, "BFu0s_Ui_BFu31ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu32i()
{
  {
    init_simple_test("BFu0s_Ui_BFu32i");
    static BFu0s_Ui_BFu32i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ui_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu32i.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "BFu0s_Ui_BFu32i");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "BFu0s_Ui_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu32i(Test_BFu0s_Ui_BFu32i, "BFu0s_Ui_BFu32i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu32ll()
{
  {
    init_simple_test("BFu0s_Ui_BFu32ll");
    static BFu0s_Ui_BFu32ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ui_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu32ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 32, 1, "BFu0s_Ui_BFu32ll");
    set_bf_and_test(lv, v2, 4, 0, 32, hide_ull(1LL<<31), "BFu0s_Ui_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu32ll(Test_BFu0s_Ui_BFu32ll, "BFu0s_Ui_BFu32ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu33()
{
  {
    init_simple_test("BFu0s_Ui_BFu33");
    static BFu0s_Ui_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ui_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu33.v1");
    set_bf_and_test(lv, v2, 4, 0, 33, 1, "BFu0s_Ui_BFu33");
    set_bf_and_test(lv, v2, 4, 0, 33, hide_ull(1LL<<32), "BFu0s_Ui_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu33(Test_BFu0s_Ui_BFu33, "BFu0s_Ui_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu7c()
{
  {
    init_simple_test("BFu0s_Ui_BFu7c");
    static BFu0s_Ui_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu7c.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_Ui_BFu7c");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_Ui_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu7c(Test_BFu0s_Ui_BFu7c, "BFu0s_Ui_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu7i()
{
  {
    init_simple_test("BFu0s_Ui_BFu7i");
    static BFu0s_Ui_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu7i.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_Ui_BFu7i");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_Ui_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu7i(Test_BFu0s_Ui_BFu7i, "BFu0s_Ui_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu7ll()
{
  {
    init_simple_test("BFu0s_Ui_BFu7ll");
    static BFu0s_Ui_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu7ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_Ui_BFu7ll");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_Ui_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu7ll(Test_BFu0s_Ui_BFu7ll, "BFu0s_Ui_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu7s()
{
  {
    init_simple_test("BFu0s_Ui_BFu7s");
    static BFu0s_Ui_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu7s.v1");
    set_bf_and_test(lv, v2, 4, 0, 7, 1, "BFu0s_Ui_BFu7s");
    set_bf_and_test(lv, v2, 4, 0, 7, hide_ull(1LL<<6), "BFu0s_Ui_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu7s(Test_BFu0s_Ui_BFu7s, "BFu0s_Ui_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu8c()
{
  {
    init_simple_test("BFu0s_Ui_BFu8c");
    static BFu0s_Ui_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu8c.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_Ui_BFu8c");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_Ui_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu8c(Test_BFu0s_Ui_BFu8c, "BFu0s_Ui_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu8i()
{
  {
    init_simple_test("BFu0s_Ui_BFu8i");
    static BFu0s_Ui_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu8i.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_Ui_BFu8i");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_Ui_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu8i(Test_BFu0s_Ui_BFu8i, "BFu0s_Ui_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu8ll()
{
  {
    init_simple_test("BFu0s_Ui_BFu8ll");
    static BFu0s_Ui_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu8ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_Ui_BFu8ll");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_Ui_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu8ll(Test_BFu0s_Ui_BFu8ll, "BFu0s_Ui_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu8s()
{
  {
    init_simple_test("BFu0s_Ui_BFu8s");
    static BFu0s_Ui_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu8s.v1");
    set_bf_and_test(lv, v2, 4, 0, 8, 1, "BFu0s_Ui_BFu8s");
    set_bf_and_test(lv, v2, 4, 0, 8, hide_ull(1LL<<7), "BFu0s_Ui_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu8s(Test_BFu0s_Ui_BFu8s, "BFu0s_Ui_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu9i()
{
  {
    init_simple_test("BFu0s_Ui_BFu9i");
    static BFu0s_Ui_BFu9i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Ui_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu9i.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_Ui_BFu9i");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_Ui_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu9i(Test_BFu0s_Ui_BFu9i, "BFu0s_Ui_BFu9i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu9ll()
{
  {
    init_simple_test("BFu0s_Ui_BFu9ll");
    static BFu0s_Ui_BFu9ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Ui_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu9ll.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_Ui_BFu9ll");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_Ui_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu9ll(Test_BFu0s_Ui_BFu9ll, "BFu0s_Ui_BFu9ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_BFu9s()
{
  {
    init_simple_test("BFu0s_Ui_BFu9s");
    static BFu0s_Ui_BFu9s lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Ui_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_BFu9s.v1");
    set_bf_and_test(lv, v2, 4, 0, 9, 1, "BFu0s_Ui_BFu9s");
    set_bf_and_test(lv, v2, 4, 0, 9, hide_ull(1LL<<8), "BFu0s_Ui_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_BFu9s(Test_BFu0s_Ui_BFu9s, "BFu0s_Ui_BFu9s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_C()
{
  {
    init_simple_test("BFu0s_Ui_C");
    static BFu0s_Ui_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_C)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_C.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_C(Test_BFu0s_Ui_C, "BFu0s_Ui_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_D()
{
  {
    init_simple_test("BFu0s_Ui_D");
    static BFu0s_Ui_D lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_Ui_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_D)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_D.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_D(Test_BFu0s_Ui_D, "BFu0s_Ui_D", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_F()
{
  {
    init_simple_test("BFu0s_Ui_F");
    static BFu0s_Ui_F lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ui_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_F)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_F.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_F(Test_BFu0s_Ui_F, "BFu0s_Ui_F", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_I()
{
  {
    init_simple_test("BFu0s_Ui_I");
    static BFu0s_Ui_I lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ui_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_I)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_I.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_I(Test_BFu0s_Ui_I, "BFu0s_Ui_I", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_Ip()
{
  {
    init_simple_test("BFu0s_Ui_Ip");
    static BFu0s_Ui_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Ui_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_Ip.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_Ip(Test_BFu0s_Ui_Ip, "BFu0s_Ui_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_L()
{
  {
    init_simple_test("BFu0s_Ui_L");
    static BFu0s_Ui_L lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_Ui_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_L)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_L.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_L(Test_BFu0s_Ui_L, "BFu0s_Ui_L", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_S()
{
  {
    init_simple_test("BFu0s_Ui_S");
    static BFu0s_Ui_S lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Ui_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_S)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_S.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_S(Test_BFu0s_Ui_S, "BFu0s_Ui_S", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_Uc()
{
  {
    init_simple_test("BFu0s_Ui_Uc");
    static BFu0s_Ui_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Ui_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_Uc.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_Uc(Test_BFu0s_Ui_Uc, "BFu0s_Ui_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_Ui()
{
  {
    init_simple_test("BFu0s_Ui_Ui");
    static BFu0s_Ui_Ui lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ui_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_Ui.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_Ui(Test_BFu0s_Ui_Ui, "BFu0s_Ui_Ui", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_Ul()
{
  {
    init_simple_test("BFu0s_Ui_Ul");
    static BFu0s_Ui_Ul lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_Ui_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_Ul.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_Ul(Test_BFu0s_Ui_Ul, "BFu0s_Ui_Ul", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_Us()
{
  {
    init_simple_test("BFu0s_Ui_Us");
    static BFu0s_Ui_Us lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Ui_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_Us.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_Us(Test_BFu0s_Ui_Us, "BFu0s_Ui_Us", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ui_Vp()
{
  {
    init_simple_test("BFu0s_Ui_Vp");
    static BFu0s_Ui_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Ui_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ui_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_Ui_Vp.v1");
    check_field_offset(lv, v2, 4, "BFu0s_Ui_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ui_Vp(Test_BFu0s_Ui_Vp, "BFu0s_Ui_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul()
{
  {
    init_simple_test("BFu0s_Ul");
    static BFu0s_Ul lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul(Test_BFu0s_Ul, "BFu0s_Ul", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu0c()
{
  {
    init_simple_test("BFu0s_Ul_BFu0c");
    static BFu0s_Ul_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ul_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu0c(Test_BFu0s_Ul_BFu0c, "BFu0s_Ul_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu0i()
{
  {
    init_simple_test("BFu0s_Ul_BFu0i");
    static BFu0s_Ul_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ul_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu0i(Test_BFu0s_Ul_BFu0i, "BFu0s_Ul_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu0ll()
{
  {
    init_simple_test("BFu0s_Ul_BFu0ll");
    static BFu0s_Ul_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ul_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu0ll(Test_BFu0s_Ul_BFu0ll, "BFu0s_Ul_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu0s()
{
  {
    init_simple_test("BFu0s_Ul_BFu0s");
    static BFu0s_Ul_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(BFu0s_Ul_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu0s(Test_BFu0s_Ul_BFu0s, "BFu0s_Ul_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu15i()
{
  {
    init_simple_test("BFu0s_Ul_BFu15i");
    static BFu0s_Ul_BFu15i lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Ul_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu15i.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "BFu0s_Ul_BFu15i");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "BFu0s_Ul_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu15i(Test_BFu0s_Ul_BFu15i, "BFu0s_Ul_BFu15i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu15ll()
{
  {
    init_simple_test("BFu0s_Ul_BFu15ll");
    static BFu0s_Ul_BFu15ll lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Ul_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu15ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "BFu0s_Ul_BFu15ll");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "BFu0s_Ul_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu15ll(Test_BFu0s_Ul_BFu15ll, "BFu0s_Ul_BFu15ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu15s()
{
  {
    init_simple_test("BFu0s_Ul_BFu15s");
    static BFu0s_Ul_BFu15s lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Ul_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu15s.v1");
    set_bf_and_test(lv, v2, 8, 0, 15, 1, "BFu0s_Ul_BFu15s");
    set_bf_and_test(lv, v2, 8, 0, 15, hide_ull(1LL<<14), "BFu0s_Ul_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu15s(Test_BFu0s_Ul_BFu15s, "BFu0s_Ul_BFu15s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu16i()
{
  {
    init_simple_test("BFu0s_Ul_BFu16i");
    static BFu0s_Ul_BFu16i lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Ul_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu16i.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "BFu0s_Ul_BFu16i");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "BFu0s_Ul_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu16i(Test_BFu0s_Ul_BFu16i, "BFu0s_Ul_BFu16i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu16ll()
{
  {
    init_simple_test("BFu0s_Ul_BFu16ll");
    static BFu0s_Ul_BFu16ll lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Ul_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu16ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "BFu0s_Ul_BFu16ll");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "BFu0s_Ul_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu16ll(Test_BFu0s_Ul_BFu16ll, "BFu0s_Ul_BFu16ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu16s()
{
  {
    init_simple_test("BFu0s_Ul_BFu16s");
    static BFu0s_Ul_BFu16s lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Ul_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu16s.v1");
    set_bf_and_test(lv, v2, 8, 0, 16, 1, "BFu0s_Ul_BFu16s");
    set_bf_and_test(lv, v2, 8, 0, 16, hide_ull(1LL<<15), "BFu0s_Ul_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu16s(Test_BFu0s_Ul_BFu16s, "BFu0s_Ul_BFu16s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu17i()
{
  {
    init_simple_test("BFu0s_Ul_BFu17i");
    static BFu0s_Ul_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_Ul_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu17i.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "BFu0s_Ul_BFu17i");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "BFu0s_Ul_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu17i(Test_BFu0s_Ul_BFu17i, "BFu0s_Ul_BFu17i", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu17ll()
{
  {
    init_simple_test("BFu0s_Ul_BFu17ll");
    static BFu0s_Ul_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(BFu0s_Ul_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu17ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 17, 1, "BFu0s_Ul_BFu17ll");
    set_bf_and_test(lv, v2, 8, 0, 17, hide_ull(1LL<<16), "BFu0s_Ul_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu17ll(Test_BFu0s_Ul_BFu17ll, "BFu0s_Ul_BFu17ll", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu1c()
{
  {
    init_simple_test("BFu0s_Ul_BFu1c");
    static BFu0s_Ul_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu1c.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_Ul_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu1c(Test_BFu0s_Ul_BFu1c, "BFu0s_Ul_BFu1c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu1i()
{
  {
    init_simple_test("BFu0s_Ul_BFu1i");
    static BFu0s_Ul_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu1i.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_Ul_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu1i(Test_BFu0s_Ul_BFu1i, "BFu0s_Ul_BFu1i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu1ll()
{
  {
    init_simple_test("BFu0s_Ul_BFu1ll");
    static BFu0s_Ul_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu1ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_Ul_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu1ll(Test_BFu0s_Ul_BFu1ll, "BFu0s_Ul_BFu1ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu1s()
{
  {
    init_simple_test("BFu0s_Ul_BFu1s");
    static BFu0s_Ul_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu1s.v1");
    set_bf_and_test(lv, v2, 8, 0, 1, 1, "BFu0s_Ul_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu1s(Test_BFu0s_Ul_BFu1s, "BFu0s_Ul_BFu1s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu31i()
{
  {
    init_simple_test("BFu0s_Ul_BFu31i");
    static BFu0s_Ul_BFu31i lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_Ul_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu31i.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "BFu0s_Ul_BFu31i");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "BFu0s_Ul_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu31i(Test_BFu0s_Ul_BFu31i, "BFu0s_Ul_BFu31i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu31ll()
{
  {
    init_simple_test("BFu0s_Ul_BFu31ll");
    static BFu0s_Ul_BFu31ll lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_Ul_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu31ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 31, 1, "BFu0s_Ul_BFu31ll");
    set_bf_and_test(lv, v2, 8, 0, 31, hide_ull(1LL<<30), "BFu0s_Ul_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu31ll(Test_BFu0s_Ul_BFu31ll, "BFu0s_Ul_BFu31ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu32i()
{
  {
    init_simple_test("BFu0s_Ul_BFu32i");
    static BFu0s_Ul_BFu32i lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_Ul_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu32i.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "BFu0s_Ul_BFu32i");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "BFu0s_Ul_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu32i(Test_BFu0s_Ul_BFu32i, "BFu0s_Ul_BFu32i", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu32ll()
{
  {
    init_simple_test("BFu0s_Ul_BFu32ll");
    static BFu0s_Ul_BFu32ll lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_Ul_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu32ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 32, 1, "BFu0s_Ul_BFu32ll");
    set_bf_and_test(lv, v2, 8, 0, 32, hide_ull(1LL<<31), "BFu0s_Ul_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu32ll(Test_BFu0s_Ul_BFu32ll, "BFu0s_Ul_BFu32ll", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu33()
{
  {
    init_simple_test("BFu0s_Ul_BFu33");
    static BFu0s_Ul_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,13), "sizeof(BFu0s_Ul_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu33.v1");
    set_bf_and_test(lv, v2, 8, 0, 33, 1, "BFu0s_Ul_BFu33");
    set_bf_and_test(lv, v2, 8, 0, 33, hide_ull(1LL<<32), "BFu0s_Ul_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu33(Test_BFu0s_Ul_BFu33, "BFu0s_Ul_BFu33", ABISELECT(13,13));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu7c()
{
  {
    init_simple_test("BFu0s_Ul_BFu7c");
    static BFu0s_Ul_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu7c.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_Ul_BFu7c");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_Ul_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu7c(Test_BFu0s_Ul_BFu7c, "BFu0s_Ul_BFu7c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu7i()
{
  {
    init_simple_test("BFu0s_Ul_BFu7i");
    static BFu0s_Ul_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu7i.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_Ul_BFu7i");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_Ul_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu7i(Test_BFu0s_Ul_BFu7i, "BFu0s_Ul_BFu7i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu7ll()
{
  {
    init_simple_test("BFu0s_Ul_BFu7ll");
    static BFu0s_Ul_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu7ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_Ul_BFu7ll");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_Ul_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu7ll(Test_BFu0s_Ul_BFu7ll, "BFu0s_Ul_BFu7ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu7s()
{
  {
    init_simple_test("BFu0s_Ul_BFu7s");
    static BFu0s_Ul_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu7s.v1");
    set_bf_and_test(lv, v2, 8, 0, 7, 1, "BFu0s_Ul_BFu7s");
    set_bf_and_test(lv, v2, 8, 0, 7, hide_ull(1LL<<6), "BFu0s_Ul_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu7s(Test_BFu0s_Ul_BFu7s, "BFu0s_Ul_BFu7s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu8c()
{
  {
    init_simple_test("BFu0s_Ul_BFu8c");
    static BFu0s_Ul_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu8c.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_Ul_BFu8c");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_Ul_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu8c(Test_BFu0s_Ul_BFu8c, "BFu0s_Ul_BFu8c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu8i()
{
  {
    init_simple_test("BFu0s_Ul_BFu8i");
    static BFu0s_Ul_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu8i.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_Ul_BFu8i");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_Ul_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu8i(Test_BFu0s_Ul_BFu8i, "BFu0s_Ul_BFu8i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu8ll()
{
  {
    init_simple_test("BFu0s_Ul_BFu8ll");
    static BFu0s_Ul_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu8ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_Ul_BFu8ll");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_Ul_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu8ll(Test_BFu0s_Ul_BFu8ll, "BFu0s_Ul_BFu8ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu8s()
{
  {
    init_simple_test("BFu0s_Ul_BFu8s");
    static BFu0s_Ul_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu8s.v1");
    set_bf_and_test(lv, v2, 8, 0, 8, 1, "BFu0s_Ul_BFu8s");
    set_bf_and_test(lv, v2, 8, 0, 8, hide_ull(1LL<<7), "BFu0s_Ul_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu8s(Test_BFu0s_Ul_BFu8s, "BFu0s_Ul_BFu8s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu9i()
{
  {
    init_simple_test("BFu0s_Ul_BFu9i");
    static BFu0s_Ul_BFu9i lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Ul_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu9i.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "BFu0s_Ul_BFu9i");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "BFu0s_Ul_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu9i(Test_BFu0s_Ul_BFu9i, "BFu0s_Ul_BFu9i", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu9ll()
{
  {
    init_simple_test("BFu0s_Ul_BFu9ll");
    static BFu0s_Ul_BFu9ll lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Ul_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu9ll.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "BFu0s_Ul_BFu9ll");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "BFu0s_Ul_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu9ll(Test_BFu0s_Ul_BFu9ll, "BFu0s_Ul_BFu9ll", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_BFu9s()
{
  {
    init_simple_test("BFu0s_Ul_BFu9s");
    static BFu0s_Ul_BFu9s lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Ul_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_BFu9s.v1");
    set_bf_and_test(lv, v2, 8, 0, 9, 1, "BFu0s_Ul_BFu9s");
    set_bf_and_test(lv, v2, 8, 0, 9, hide_ull(1LL<<8), "BFu0s_Ul_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_BFu9s(Test_BFu0s_Ul_BFu9s, "BFu0s_Ul_BFu9s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_C()
{
  {
    init_simple_test("BFu0s_Ul_C");
    static BFu0s_Ul_C lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_C)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_C.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_C(Test_BFu0s_Ul_C, "BFu0s_Ul_C", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_D()
{
  {
    init_simple_test("BFu0s_Ul_D");
    static BFu0s_Ul_D lv;
    check2(sizeof(lv), 16, "sizeof(BFu0s_Ul_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_D)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_D.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_D(Test_BFu0s_Ul_D, "BFu0s_Ul_D", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_F()
{
  {
    init_simple_test("BFu0s_Ul_F");
    static BFu0s_Ul_F lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_Ul_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_F)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_F.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_F(Test_BFu0s_Ul_F, "BFu0s_Ul_F", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_I()
{
  {
    init_simple_test("BFu0s_Ul_I");
    static BFu0s_Ul_I lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_Ul_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_I)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_I.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_I(Test_BFu0s_Ul_I, "BFu0s_Ul_I", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_Ip()
{
  {
    init_simple_test("BFu0s_Ul_Ip");
    static BFu0s_Ul_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_Ul_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_Ip.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_Ip(Test_BFu0s_Ul_Ip, "BFu0s_Ul_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_L()
{
  {
    init_simple_test("BFu0s_Ul_L");
    static BFu0s_Ul_L lv;
    check2(sizeof(lv), 16, "sizeof(BFu0s_Ul_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_L)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_L.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_L(Test_BFu0s_Ul_L, "BFu0s_Ul_L", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_S()
{
  {
    init_simple_test("BFu0s_Ul_S");
    static BFu0s_Ul_S lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Ul_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_S)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_S.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_S(Test_BFu0s_Ul_S, "BFu0s_Ul_S", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_Uc()
{
  {
    init_simple_test("BFu0s_Ul_Uc");
    static BFu0s_Ul_Uc lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu0s_Ul_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_Uc.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_Uc(Test_BFu0s_Ul_Uc, "BFu0s_Ul_Uc", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_Ui()
{
  {
    init_simple_test("BFu0s_Ul_Ui");
    static BFu0s_Ul_Ui lv;
    check2(sizeof(lv), 12, "sizeof(BFu0s_Ul_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_Ui.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_Ui(Test_BFu0s_Ul_Ui, "BFu0s_Ul_Ui", 12);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_Ul()
{
  {
    init_simple_test("BFu0s_Ul_Ul");
    static BFu0s_Ul_Ul lv;
    check2(sizeof(lv), 16, "sizeof(BFu0s_Ul_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_Ul.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_Ul(Test_BFu0s_Ul_Ul, "BFu0s_Ul_Ul", 16);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_Us()
{
  {
    init_simple_test("BFu0s_Ul_Us");
    static BFu0s_Ul_Us lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Ul_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_Us.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_Us(Test_BFu0s_Ul_Us, "BFu0s_Ul_Us", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Ul_Vp()
{
  {
    init_simple_test("BFu0s_Ul_Vp");
    static BFu0s_Ul_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_Ul_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Ul_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_Ul_Vp.v1");
    check_field_offset(lv, v2, 8, "BFu0s_Ul_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Ul_Vp(Test_BFu0s_Ul_Vp, "BFu0s_Ul_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us()
{
  {
    init_simple_test("BFu0s_Us");
    static BFu0s_Us lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_Us.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Us(Test_BFu0s_Us, "BFu0s_Us", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu0c()
{
  {
    init_simple_test("BFu0s_Us_BFu0c");
    static BFu0s_Us_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Us_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu0c(Test_BFu0s_Us_BFu0c, "BFu0s_Us_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu0i()
{
  {
    init_simple_test("BFu0s_Us_BFu0i");
    static BFu0s_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu0s_Us_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu0i(Test_BFu0s_Us_BFu0i, "BFu0s_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu0ll()
{
  {
    init_simple_test("BFu0s_Us_BFu0ll");
    static BFu0s_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Us_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu0ll(Test_BFu0s_Us_BFu0ll, "BFu0s_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu0s()
{
  {
    init_simple_test("BFu0s_Us_BFu0s");
    static BFu0s_Us_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu0s_Us_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu0s(Test_BFu0s_Us_BFu0s, "BFu0s_Us_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu15i()
{
  {
    init_simple_test("BFu0s_Us_BFu15i");
    static BFu0s_Us_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Us_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu15i.v1");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_Us_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_Us_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu15i(Test_BFu0s_Us_BFu15i, "BFu0s_Us_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu15ll()
{
  {
    init_simple_test("BFu0s_Us_BFu15ll");
    static BFu0s_Us_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Us_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu15ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_Us_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_Us_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu15ll(Test_BFu0s_Us_BFu15ll, "BFu0s_Us_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu15s()
{
  {
    init_simple_test("BFu0s_Us_BFu15s");
    static BFu0s_Us_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Us_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu15s.v1");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu0s_Us_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu0s_Us_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu15s(Test_BFu0s_Us_BFu15s, "BFu0s_Us_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu16i()
{
  {
    init_simple_test("BFu0s_Us_BFu16i");
    static BFu0s_Us_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Us_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu16i.v1");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_Us_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_Us_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu16i(Test_BFu0s_Us_BFu16i, "BFu0s_Us_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu16ll()
{
  {
    init_simple_test("BFu0s_Us_BFu16ll");
    static BFu0s_Us_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Us_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu16ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_Us_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_Us_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu16ll(Test_BFu0s_Us_BFu16ll, "BFu0s_Us_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu16s()
{
  {
    init_simple_test("BFu0s_Us_BFu16s");
    static BFu0s_Us_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Us_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu16s.v1");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu0s_Us_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu0s_Us_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu16s(Test_BFu0s_Us_BFu16s, "BFu0s_Us_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu17i()
{
  {
    init_simple_test("BFu0s_Us_BFu17i");
    static BFu0s_Us_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Us_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu17i.v1");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0s_Us_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0s_Us_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu17i(Test_BFu0s_Us_BFu17i, "BFu0s_Us_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu17ll()
{
  {
    init_simple_test("BFu0s_Us_BFu17ll");
    static BFu0s_Us_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu0s_Us_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu17ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu0s_Us_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu0s_Us_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu17ll(Test_BFu0s_Us_BFu17ll, "BFu0s_Us_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu1c()
{
  {
    init_simple_test("BFu0s_Us_BFu1c");
    static BFu0s_Us_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu1c.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_Us_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu1c(Test_BFu0s_Us_BFu1c, "BFu0s_Us_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu1i()
{
  {
    init_simple_test("BFu0s_Us_BFu1i");
    static BFu0s_Us_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu1i.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_Us_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu1i(Test_BFu0s_Us_BFu1i, "BFu0s_Us_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu1ll()
{
  {
    init_simple_test("BFu0s_Us_BFu1ll");
    static BFu0s_Us_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu1ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_Us_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu1ll(Test_BFu0s_Us_BFu1ll, "BFu0s_Us_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu1s()
{
  {
    init_simple_test("BFu0s_Us_BFu1s");
    static BFu0s_Us_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu1s.v1");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu0s_Us_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu1s(Test_BFu0s_Us_BFu1s, "BFu0s_Us_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu31i()
{
  {
    init_simple_test("BFu0s_Us_BFu31i");
    static BFu0s_Us_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Us_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu31i.v1");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0s_Us_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0s_Us_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu31i(Test_BFu0s_Us_BFu31i, "BFu0s_Us_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu31ll()
{
  {
    init_simple_test("BFu0s_Us_BFu31ll");
    static BFu0s_Us_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Us_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu31ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu0s_Us_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu0s_Us_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu31ll(Test_BFu0s_Us_BFu31ll, "BFu0s_Us_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu32i()
{
  {
    init_simple_test("BFu0s_Us_BFu32i");
    static BFu0s_Us_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Us_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu32i.v1");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0s_Us_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0s_Us_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu32i(Test_BFu0s_Us_BFu32i, "BFu0s_Us_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu32ll()
{
  {
    init_simple_test("BFu0s_Us_BFu32ll");
    static BFu0s_Us_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Us_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu32ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu0s_Us_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu0s_Us_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu32ll(Test_BFu0s_Us_BFu32ll, "BFu0s_Us_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu33()
{
  {
    init_simple_test("BFu0s_Us_BFu33");
    static BFu0s_Us_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu0s_Us_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu33.v1");
    set_bf_and_test(lv, v2, 2, 0, 33, 1, "BFu0s_Us_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, hide_ull(1LL<<32), "BFu0s_Us_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu33(Test_BFu0s_Us_BFu33, "BFu0s_Us_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu7c()
{
  {
    init_simple_test("BFu0s_Us_BFu7c");
    static BFu0s_Us_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu7c.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_Us_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_Us_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu7c(Test_BFu0s_Us_BFu7c, "BFu0s_Us_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu7i()
{
  {
    init_simple_test("BFu0s_Us_BFu7i");
    static BFu0s_Us_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu7i.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_Us_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_Us_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu7i(Test_BFu0s_Us_BFu7i, "BFu0s_Us_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu7ll()
{
  {
    init_simple_test("BFu0s_Us_BFu7ll");
    static BFu0s_Us_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu7ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_Us_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_Us_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu7ll(Test_BFu0s_Us_BFu7ll, "BFu0s_Us_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu7s()
{
  {
    init_simple_test("BFu0s_Us_BFu7s");
    static BFu0s_Us_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu7s.v1");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu0s_Us_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu0s_Us_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu7s(Test_BFu0s_Us_BFu7s, "BFu0s_Us_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu8c()
{
  {
    init_simple_test("BFu0s_Us_BFu8c");
    static BFu0s_Us_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu8c.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_Us_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_Us_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu8c(Test_BFu0s_Us_BFu8c, "BFu0s_Us_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu8i()
{
  {
    init_simple_test("BFu0s_Us_BFu8i");
    static BFu0s_Us_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu8i.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_Us_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_Us_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu8i(Test_BFu0s_Us_BFu8i, "BFu0s_Us_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu8ll()
{
  {
    init_simple_test("BFu0s_Us_BFu8ll");
    static BFu0s_Us_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu8ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_Us_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_Us_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu8ll(Test_BFu0s_Us_BFu8ll, "BFu0s_Us_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu8s()
{
  {
    init_simple_test("BFu0s_Us_BFu8s");
    static BFu0s_Us_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu8s.v1");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu0s_Us_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu0s_Us_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu8s(Test_BFu0s_Us_BFu8s, "BFu0s_Us_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu9i()
{
  {
    init_simple_test("BFu0s_Us_BFu9i");
    static BFu0s_Us_BFu9i lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Us_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu9i.v1");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_Us_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_Us_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu9i(Test_BFu0s_Us_BFu9i, "BFu0s_Us_BFu9i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu9ll()
{
  {
    init_simple_test("BFu0s_Us_BFu9ll");
    static BFu0s_Us_BFu9ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Us_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu9ll.v1");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_Us_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_Us_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu9ll(Test_BFu0s_Us_BFu9ll, "BFu0s_Us_BFu9ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_BFu9s()
{
  {
    init_simple_test("BFu0s_Us_BFu9s");
    static BFu0s_Us_BFu9s lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Us_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_BFu9s.v1");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu0s_Us_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu0s_Us_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_BFu9s(Test_BFu0s_Us_BFu9s, "BFu0s_Us_BFu9s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_C()
{
  {
    init_simple_test("BFu0s_Us_C");
    static BFu0s_Us_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_C)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_C.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_C(Test_BFu0s_Us_C, "BFu0s_Us_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_D()
{
  {
    init_simple_test("BFu0s_Us_D");
    static BFu0s_Us_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Us_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_D)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_D.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_D(Test_BFu0s_Us_D, "BFu0s_Us_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_F()
{
  {
    init_simple_test("BFu0s_Us_F");
    static BFu0s_Us_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Us_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_F)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_F.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_F(Test_BFu0s_Us_F, "BFu0s_Us_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_I()
{
  {
    init_simple_test("BFu0s_Us_I");
    static BFu0s_Us_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Us_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_I)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_I.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_I(Test_BFu0s_Us_I, "BFu0s_Us_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_Ip()
{
  {
    init_simple_test("BFu0s_Us_Ip");
    static BFu0s_Us_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Us_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_Ip.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_Ip(Test_BFu0s_Us_Ip, "BFu0s_Us_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_L()
{
  {
    init_simple_test("BFu0s_Us_L");
    static BFu0s_Us_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Us_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_L)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_L.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_L(Test_BFu0s_Us_L, "BFu0s_Us_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_S()
{
  {
    init_simple_test("BFu0s_Us_S");
    static BFu0s_Us_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Us_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_S)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_S.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_S(Test_BFu0s_Us_S, "BFu0s_Us_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_Uc()
{
  {
    init_simple_test("BFu0s_Us_Uc");
    static BFu0s_Us_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu0s_Us_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_Uc.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_Uc(Test_BFu0s_Us_Uc, "BFu0s_Us_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_Ui()
{
  {
    init_simple_test("BFu0s_Us_Ui");
    static BFu0s_Us_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu0s_Us_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_Ui.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_Ui(Test_BFu0s_Us_Ui, "BFu0s_Us_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_Ul()
{
  {
    init_simple_test("BFu0s_Us_Ul");
    static BFu0s_Us_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu0s_Us_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_Ul.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_Ul(Test_BFu0s_Us_Ul, "BFu0s_Us_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_Us()
{
  {
    init_simple_test("BFu0s_Us_Us");
    static BFu0s_Us_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu0s_Us_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_Us.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_Us(Test_BFu0s_Us_Us, "BFu0s_Us_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Us_Vp()
{
  {
    init_simple_test("BFu0s_Us_Vp");
    static BFu0s_Us_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Us_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Us_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_Us_Vp.v1");
    check_field_offset(lv, v2, 2, "BFu0s_Us_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Us_Vp(Test_BFu0s_Us_Vp, "BFu0s_Us_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp()
{
  {
    init_simple_test("BFu0s_Vp");
    static BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp(Test_BFu0s_Vp, "BFu0s_Vp", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu0c()
{
  {
    init_simple_test("BFu0s_Vp_BFu0c");
    static BFu0s_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Vp_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu0c)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu0c.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu0c(Test_BFu0s_Vp_BFu0c, "BFu0s_Vp_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu0i()
{
  {
    init_simple_test("BFu0s_Vp_BFu0i");
    static BFu0s_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Vp_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu0i)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu0i.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu0i(Test_BFu0s_Vp_BFu0i, "BFu0s_Vp_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu0ll()
{
  {
    init_simple_test("BFu0s_Vp_BFu0ll");
    static BFu0s_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Vp_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu0ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu0ll.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu0ll(Test_BFu0s_Vp_BFu0ll, "BFu0s_Vp_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu0s()
{
  {
    init_simple_test("BFu0s_Vp_BFu0s");
    static BFu0s_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu0s_Vp_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu0s)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu0s.v1");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu0s(Test_BFu0s_Vp_BFu0s, "BFu0s_Vp_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu15i()
{
  {
    init_simple_test("BFu0s_Vp_BFu15i");
    static BFu0s_Vp_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Vp_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu15i)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu15i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu0s_Vp_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu0s_Vp_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu15i(Test_BFu0s_Vp_BFu15i, "BFu0s_Vp_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu15ll()
{
  {
    init_simple_test("BFu0s_Vp_BFu15ll");
    static BFu0s_Vp_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Vp_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu15ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu15ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu0s_Vp_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu0s_Vp_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu15ll(Test_BFu0s_Vp_BFu15ll, "BFu0s_Vp_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu15s()
{
  {
    init_simple_test("BFu0s_Vp_BFu15s");
    static BFu0s_Vp_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Vp_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu15s)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu15s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu0s_Vp_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu0s_Vp_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu15s(Test_BFu0s_Vp_BFu15s, "BFu0s_Vp_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu16i()
{
  {
    init_simple_test("BFu0s_Vp_BFu16i");
    static BFu0s_Vp_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Vp_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu16i)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu16i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu0s_Vp_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu0s_Vp_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu16i(Test_BFu0s_Vp_BFu16i, "BFu0s_Vp_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu16ll()
{
  {
    init_simple_test("BFu0s_Vp_BFu16ll");
    static BFu0s_Vp_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Vp_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu16ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu16ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu0s_Vp_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu0s_Vp_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu16ll(Test_BFu0s_Vp_BFu16ll, "BFu0s_Vp_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu16s()
{
  {
    init_simple_test("BFu0s_Vp_BFu16s");
    static BFu0s_Vp_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Vp_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu16s)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu16s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu0s_Vp_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu0s_Vp_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu16s(Test_BFu0s_Vp_BFu16s, "BFu0s_Vp_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu17i()
{
  {
    init_simple_test("BFu0s_Vp_BFu17i");
    static BFu0s_Vp_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu0s_Vp_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu17i)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu17i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "BFu0s_Vp_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "BFu0s_Vp_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu17i(Test_BFu0s_Vp_BFu17i, "BFu0s_Vp_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu17ll()
{
  {
    init_simple_test("BFu0s_Vp_BFu17ll");
    static BFu0s_Vp_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu0s_Vp_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu17ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu17ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "BFu0s_Vp_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "BFu0s_Vp_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu17ll(Test_BFu0s_Vp_BFu17ll, "BFu0s_Vp_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu1c()
{
  {
    init_simple_test("BFu0s_Vp_BFu1c");
    static BFu0s_Vp_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu1c)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu1c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0s_Vp_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu1c(Test_BFu0s_Vp_BFu1c, "BFu0s_Vp_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu1i()
{
  {
    init_simple_test("BFu0s_Vp_BFu1i");
    static BFu0s_Vp_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu1i)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu1i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0s_Vp_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu1i(Test_BFu0s_Vp_BFu1i, "BFu0s_Vp_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu1ll()
{
  {
    init_simple_test("BFu0s_Vp_BFu1ll");
    static BFu0s_Vp_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu1ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu1ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0s_Vp_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu1ll(Test_BFu0s_Vp_BFu1ll, "BFu0s_Vp_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu1s()
{
  {
    init_simple_test("BFu0s_Vp_BFu1s");
    static BFu0s_Vp_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu1s)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu1s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu0s_Vp_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu1s(Test_BFu0s_Vp_BFu1s, "BFu0s_Vp_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu31i()
{
  {
    init_simple_test("BFu0s_Vp_BFu31i");
    static BFu0s_Vp_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Vp_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu31i)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu31i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "BFu0s_Vp_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "BFu0s_Vp_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu31i(Test_BFu0s_Vp_BFu31i, "BFu0s_Vp_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu31ll()
{
  {
    init_simple_test("BFu0s_Vp_BFu31ll");
    static BFu0s_Vp_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Vp_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu31ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu31ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "BFu0s_Vp_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "BFu0s_Vp_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu31ll(Test_BFu0s_Vp_BFu31ll, "BFu0s_Vp_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu32i()
{
  {
    init_simple_test("BFu0s_Vp_BFu32i");
    static BFu0s_Vp_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Vp_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu32i)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu32i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "BFu0s_Vp_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "BFu0s_Vp_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu32i(Test_BFu0s_Vp_BFu32i, "BFu0s_Vp_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu32ll()
{
  {
    init_simple_test("BFu0s_Vp_BFu32ll");
    static BFu0s_Vp_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Vp_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu32ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu32ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "BFu0s_Vp_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "BFu0s_Vp_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu32ll(Test_BFu0s_Vp_BFu32ll, "BFu0s_Vp_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu33()
{
  {
    init_simple_test("BFu0s_Vp_BFu33");
    static BFu0s_Vp_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(BFu0s_Vp_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu33)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu33.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "BFu0s_Vp_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "BFu0s_Vp_BFu33");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu33(Test_BFu0s_Vp_BFu33, "BFu0s_Vp_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu7c()
{
  {
    init_simple_test("BFu0s_Vp_BFu7c");
    static BFu0s_Vp_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu7c)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu7c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0s_Vp_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0s_Vp_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu7c(Test_BFu0s_Vp_BFu7c, "BFu0s_Vp_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu7i()
{
  {
    init_simple_test("BFu0s_Vp_BFu7i");
    static BFu0s_Vp_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu7i)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu7i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0s_Vp_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0s_Vp_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu7i(Test_BFu0s_Vp_BFu7i, "BFu0s_Vp_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu7ll()
{
  {
    init_simple_test("BFu0s_Vp_BFu7ll");
    static BFu0s_Vp_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu7ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu7ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0s_Vp_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0s_Vp_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu7ll(Test_BFu0s_Vp_BFu7ll, "BFu0s_Vp_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu7s()
{
  {
    init_simple_test("BFu0s_Vp_BFu7s");
    static BFu0s_Vp_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu7s)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu7s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu0s_Vp_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu0s_Vp_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu7s(Test_BFu0s_Vp_BFu7s, "BFu0s_Vp_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu8c()
{
  {
    init_simple_test("BFu0s_Vp_BFu8c");
    static BFu0s_Vp_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu8c)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu8c.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu0s_Vp_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu0s_Vp_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu8c(Test_BFu0s_Vp_BFu8c, "BFu0s_Vp_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu8i()
{
  {
    init_simple_test("BFu0s_Vp_BFu8i");
    static BFu0s_Vp_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu8i)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu8i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu0s_Vp_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu0s_Vp_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu8i(Test_BFu0s_Vp_BFu8i, "BFu0s_Vp_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu8ll()
{
  {
    init_simple_test("BFu0s_Vp_BFu8ll");
    static BFu0s_Vp_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu8ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu8ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu0s_Vp_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu0s_Vp_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu8ll(Test_BFu0s_Vp_BFu8ll, "BFu0s_Vp_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu8s()
{
  {
    init_simple_test("BFu0s_Vp_BFu8s");
    static BFu0s_Vp_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu8s)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu8s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu0s_Vp_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu0s_Vp_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu8s(Test_BFu0s_Vp_BFu8s, "BFu0s_Vp_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu9i()
{
  {
    init_simple_test("BFu0s_Vp_BFu9i");
    static BFu0s_Vp_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Vp_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu9i)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu9i.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "BFu0s_Vp_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "BFu0s_Vp_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu9i(Test_BFu0s_Vp_BFu9i, "BFu0s_Vp_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu9ll()
{
  {
    init_simple_test("BFu0s_Vp_BFu9ll");
    static BFu0s_Vp_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Vp_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu9ll)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu9ll.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "BFu0s_Vp_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "BFu0s_Vp_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu9ll(Test_BFu0s_Vp_BFu9ll, "BFu0s_Vp_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_BFu9s()
{
  {
    init_simple_test("BFu0s_Vp_BFu9s");
    static BFu0s_Vp_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Vp_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_BFu9s)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_BFu9s.v1");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "BFu0s_Vp_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "BFu0s_Vp_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_BFu9s(Test_BFu0s_Vp_BFu9s, "BFu0s_Vp_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_C()
{
  {
    init_simple_test("BFu0s_Vp_C");
    static BFu0s_Vp_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_C)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_C.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_C.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_C(Test_BFu0s_Vp_C, "BFu0s_Vp_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_D()
{
  {
    init_simple_test("BFu0s_Vp_D");
    static BFu0s_Vp_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_Vp_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_D)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_D.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_D.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_D(Test_BFu0s_Vp_D, "BFu0s_Vp_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_F()
{
  {
    init_simple_test("BFu0s_Vp_F");
    static BFu0s_Vp_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Vp_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_F)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_F.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_F.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_F(Test_BFu0s_Vp_F, "BFu0s_Vp_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_I()
{
  {
    init_simple_test("BFu0s_Vp_I");
    static BFu0s_Vp_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Vp_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_I)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_I.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_I.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_I(Test_BFu0s_Vp_I, "BFu0s_Vp_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_Ip()
{
  {
    init_simple_test("BFu0s_Vp_Ip");
    static BFu0s_Vp_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(BFu0s_Vp_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_Ip)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_Ip.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_Ip(Test_BFu0s_Vp_Ip, "BFu0s_Vp_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_L()
{
  {
    init_simple_test("BFu0s_Vp_L");
    static BFu0s_Vp_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_Vp_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_L)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_L.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_L.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_L(Test_BFu0s_Vp_L, "BFu0s_Vp_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_S()
{
  {
    init_simple_test("BFu0s_Vp_S");
    static BFu0s_Vp_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Vp_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_S)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_S.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_S.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_S(Test_BFu0s_Vp_S, "BFu0s_Vp_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_Uc()
{
  {
    init_simple_test("BFu0s_Vp_Uc");
    static BFu0s_Vp_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu0s_Vp_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_Uc)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_Uc.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_Uc(Test_BFu0s_Vp_Uc, "BFu0s_Vp_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_Ui()
{
  {
    init_simple_test("BFu0s_Vp_Ui");
    static BFu0s_Vp_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu0s_Vp_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_Ui)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_Ui.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_Ui(Test_BFu0s_Vp_Ui, "BFu0s_Vp_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_Ul()
{
  {
    init_simple_test("BFu0s_Vp_Ul");
    static BFu0s_Vp_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu0s_Vp_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_Ul)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_Ul.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_Ul(Test_BFu0s_Vp_Ul, "BFu0s_Vp_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_Us()
{
  {
    init_simple_test("BFu0s_Vp_Us");
    static BFu0s_Vp_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu0s_Vp_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_Us)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_Us.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_Us(Test_BFu0s_Vp_Us, "BFu0s_Vp_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu0s_Vp_Vp()
{
  {
    init_simple_test("BFu0s_Vp_Vp");
    static BFu0s_Vp_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(BFu0s_Vp_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu0s_Vp_Vp)");
    check_field_offset(lv, v1, 0, "BFu0s_Vp_Vp.v1");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu0s_Vp_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu0s_Vp_Vp(Test_BFu0s_Vp_Vp, "BFu0s_Vp_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu0c");
    static BFu15i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c(Test_BFu15i_BFu0c, "BFu15i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu0c");
    static BFu15i_BFu0c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu0c(Test_BFu15i_BFu0c_BFu0c, "BFu15i_BFu0c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu0i");
    static BFu15i_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu0i(Test_BFu15i_BFu0c_BFu0i, "BFu15i_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu0ll");
    static BFu15i_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu0ll(Test_BFu15i_BFu0c_BFu0ll, "BFu15i_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu0s");
    static BFu15i_BFu0c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu0s(Test_BFu15i_BFu0c_BFu0s, "BFu15i_BFu0c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu15i()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu15i");
    static BFu15i_BFu0c_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu15i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu15i(Test_BFu15i_BFu0c_BFu15i, "BFu15i_BFu0c_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu15ll()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu15ll");
    static BFu15i_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu15i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu15ll(Test_BFu15i_BFu0c_BFu15ll, "BFu15i_BFu0c_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu15s()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu15s");
    static BFu15i_BFu0c_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu15i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu15s(Test_BFu15i_BFu0c_BFu15s, "BFu15i_BFu0c_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu16i()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu16i");
    static BFu15i_BFu0c_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu15i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu16i(Test_BFu15i_BFu0c_BFu16i, "BFu15i_BFu0c_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu16ll()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu16ll");
    static BFu15i_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu15i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu16ll(Test_BFu15i_BFu0c_BFu16ll, "BFu15i_BFu0c_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu16s()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu16s");
    static BFu15i_BFu0c_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu15i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu16s(Test_BFu15i_BFu0c_BFu16s, "BFu15i_BFu0c_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu17i()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu17i");
    static BFu15i_BFu0c_BFu17i lv;
    check2(sizeof(lv), 5, "sizeof(BFu15i_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu15i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu15i_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu17i(Test_BFu15i_BFu0c_BFu17i, "BFu15i_BFu0c_BFu17i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu17ll()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu17ll");
    static BFu15i_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 5, "sizeof(BFu15i_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu15i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu15i_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu17ll(Test_BFu15i_BFu0c_BFu17ll, "BFu15i_BFu0c_BFu17ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu1c()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu1c");
    static BFu15i_BFu0c_BFu1c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15i_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu1c(Test_BFu15i_BFu0c_BFu1c, "BFu15i_BFu0c_BFu1c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu1i()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu1i");
    static BFu15i_BFu0c_BFu1i lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15i_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu1i(Test_BFu15i_BFu0c_BFu1i, "BFu15i_BFu0c_BFu1i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu1ll()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu1ll");
    static BFu15i_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15i_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu1ll(Test_BFu15i_BFu0c_BFu1ll, "BFu15i_BFu0c_BFu1ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu1s()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu1s");
    static BFu15i_BFu0c_BFu1s lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15i_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu1s(Test_BFu15i_BFu0c_BFu1s, "BFu15i_BFu0c_BFu1s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu31i()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu31i");
    static BFu15i_BFu0c_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu15i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu15i_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu31i(Test_BFu15i_BFu0c_BFu31i, "BFu15i_BFu0c_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu31ll()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu31ll");
    static BFu15i_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu15i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu15i_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu31ll(Test_BFu15i_BFu0c_BFu31ll, "BFu15i_BFu0c_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu32i()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu32i");
    static BFu15i_BFu0c_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu15i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu15i_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu32i(Test_BFu15i_BFu0c_BFu32i, "BFu15i_BFu0c_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu32ll()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu32ll");
    static BFu15i_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu15i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu15i_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu32ll(Test_BFu15i_BFu0c_BFu32ll, "BFu15i_BFu0c_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu33()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu33");
    static BFu15i_BFu0c_BFu33 lv;
    check2(sizeof(lv), 7, "sizeof(BFu15i_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, 1, "BFu15i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, hide_ull(1LL<<32), "BFu15i_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu33(Test_BFu15i_BFu0c_BFu33, "BFu15i_BFu0c_BFu33", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu7c()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu7c");
    static BFu15i_BFu0c_BFu7c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu7c(Test_BFu15i_BFu0c_BFu7c, "BFu15i_BFu0c_BFu7c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu7i()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu7i");
    static BFu15i_BFu0c_BFu7i lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu7i(Test_BFu15i_BFu0c_BFu7i, "BFu15i_BFu0c_BFu7i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu7ll()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu7ll");
    static BFu15i_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu7ll(Test_BFu15i_BFu0c_BFu7ll, "BFu15i_BFu0c_BFu7ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu7s()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu7s");
    static BFu15i_BFu0c_BFu7s lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu7s(Test_BFu15i_BFu0c_BFu7s, "BFu15i_BFu0c_BFu7s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu8c()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu8c");
    static BFu15i_BFu0c_BFu8c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu15i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu8c(Test_BFu15i_BFu0c_BFu8c, "BFu15i_BFu0c_BFu8c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu8i()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu8i");
    static BFu15i_BFu0c_BFu8i lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu15i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu8i(Test_BFu15i_BFu0c_BFu8i, "BFu15i_BFu0c_BFu8i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu8ll()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu8ll");
    static BFu15i_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu15i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu8ll(Test_BFu15i_BFu0c_BFu8ll, "BFu15i_BFu0c_BFu8ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu8s()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu8s");
    static BFu15i_BFu0c_BFu8s lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu15i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu8s(Test_BFu15i_BFu0c_BFu8s, "BFu15i_BFu0c_BFu8s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu9i()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu9i");
    static BFu15i_BFu0c_BFu9i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu15i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu9i(Test_BFu15i_BFu0c_BFu9i, "BFu15i_BFu0c_BFu9i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu9ll()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu9ll");
    static BFu15i_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu15i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu9ll(Test_BFu15i_BFu0c_BFu9ll, "BFu15i_BFu0c_BFu9ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_BFu9s()
{
  {
    init_simple_test("BFu15i_BFu0c_BFu9s");
    static BFu15i_BFu0c_BFu9s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu15i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_BFu9s(Test_BFu15i_BFu0c_BFu9s, "BFu15i_BFu0c_BFu9s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_C()
{
  {
    init_simple_test("BFu15i_BFu0c_C");
    static BFu15i_BFu0c_C lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_C");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_C(Test_BFu15i_BFu0c_C, "BFu15i_BFu0c_C", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_D()
{
  {
    init_simple_test("BFu15i_BFu0c_D");
    static BFu15i_BFu0c_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_D");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_D(Test_BFu15i_BFu0c_D, "BFu15i_BFu0c_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_F()
{
  {
    init_simple_test("BFu15i_BFu0c_F");
    static BFu15i_BFu0c_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_F");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_F(Test_BFu15i_BFu0c_F, "BFu15i_BFu0c_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_I()
{
  {
    init_simple_test("BFu15i_BFu0c_I");
    static BFu15i_BFu0c_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_I");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_I(Test_BFu15i_BFu0c_I, "BFu15i_BFu0c_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_Ip()
{
  {
    init_simple_test("BFu15i_BFu0c_Ip");
    static BFu15i_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_Ip");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_Ip(Test_BFu15i_BFu0c_Ip, "BFu15i_BFu0c_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_L()
{
  {
    init_simple_test("BFu15i_BFu0c_L");
    static BFu15i_BFu0c_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_L");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_L(Test_BFu15i_BFu0c_L, "BFu15i_BFu0c_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_S()
{
  {
    init_simple_test("BFu15i_BFu0c_S");
    static BFu15i_BFu0c_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_S");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_S(Test_BFu15i_BFu0c_S, "BFu15i_BFu0c_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_Uc()
{
  {
    init_simple_test("BFu15i_BFu0c_Uc");
    static BFu15i_BFu0c_Uc lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_Uc");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_Uc(Test_BFu15i_BFu0c_Uc, "BFu15i_BFu0c_Uc", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_Ui()
{
  {
    init_simple_test("BFu15i_BFu0c_Ui");
    static BFu15i_BFu0c_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_Ui");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_Ui(Test_BFu15i_BFu0c_Ui, "BFu15i_BFu0c_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_Ul()
{
  {
    init_simple_test("BFu15i_BFu0c_Ul");
    static BFu15i_BFu0c_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_Ul");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_Ul(Test_BFu15i_BFu0c_Ul, "BFu15i_BFu0c_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_Us()
{
  {
    init_simple_test("BFu15i_BFu0c_Us");
    static BFu15i_BFu0c_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_Us");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_Us(Test_BFu15i_BFu0c_Us, "BFu15i_BFu0c_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0c_Vp()
{
  {
    init_simple_test("BFu15i_BFu0c_Vp");
    static BFu15i_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0c_Vp");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0c_Vp(Test_BFu15i_BFu0c_Vp, "BFu15i_BFu0c_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu0i");
    static BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i(Test_BFu15i_BFu0i, "BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu0c");
    static BFu15i_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu0i_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu0c(Test_BFu15i_BFu0i_BFu0c, "BFu15i_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu0i");
    static BFu15i_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu0i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu0i(Test_BFu15i_BFu0i_BFu0i, "BFu15i_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu0ll");
    static BFu15i_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu0i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu0ll(Test_BFu15i_BFu0i_BFu0ll, "BFu15i_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu0s");
    static BFu15i_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu0i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu0s(Test_BFu15i_BFu0i_BFu0s, "BFu15i_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu15i()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu15i");
    static BFu15i_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu15i_BFu0i_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "BFu15i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu15i(Test_BFu15i_BFu0i_BFu15i, "BFu15i_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu15ll()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu15ll");
    static BFu15i_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu15i_BFu0i_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "BFu15i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu15ll(Test_BFu15i_BFu0i_BFu15ll, "BFu15i_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu15s()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu15s");
    static BFu15i_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu15i_BFu0i_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "BFu15i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu15s(Test_BFu15i_BFu0i_BFu15s, "BFu15i_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu16i()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu16i");
    static BFu15i_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu15i_BFu0i_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "BFu15i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu16i(Test_BFu15i_BFu0i_BFu16i, "BFu15i_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu16ll()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu16ll");
    static BFu15i_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu15i_BFu0i_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "BFu15i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu16ll(Test_BFu15i_BFu0i_BFu16ll, "BFu15i_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu16s()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu16s");
    static BFu15i_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu15i_BFu0i_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "BFu15i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu16s(Test_BFu15i_BFu0i_BFu16s, "BFu15i_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu17i()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu17i");
    static BFu15i_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu15i_BFu0i_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "BFu15i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "BFu15i_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu17i(Test_BFu15i_BFu0i_BFu17i, "BFu15i_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu17ll()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu17ll");
    static BFu15i_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu15i_BFu0i_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "BFu15i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "BFu15i_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu17ll(Test_BFu15i_BFu0i_BFu17ll, "BFu15i_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu1c()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu1c");
    static BFu15i_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "BFu15i_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu1c(Test_BFu15i_BFu0i_BFu1c, "BFu15i_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu1i()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu1i");
    static BFu15i_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "BFu15i_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu1i(Test_BFu15i_BFu0i_BFu1i, "BFu15i_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu1ll()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu1ll");
    static BFu15i_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "BFu15i_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu1ll(Test_BFu15i_BFu0i_BFu1ll, "BFu15i_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu1s()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu1s");
    static BFu15i_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "BFu15i_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu1s(Test_BFu15i_BFu0i_BFu1s, "BFu15i_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu31i()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu31i");
    static BFu15i_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu0i_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "BFu15i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "BFu15i_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu31i(Test_BFu15i_BFu0i_BFu31i, "BFu15i_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu31ll()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu31ll");
    static BFu15i_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu0i_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "BFu15i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "BFu15i_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu31ll(Test_BFu15i_BFu0i_BFu31ll, "BFu15i_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu32i()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu32i");
    static BFu15i_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu0i_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "BFu15i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "BFu15i_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu32i(Test_BFu15i_BFu0i_BFu32i, "BFu15i_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu32ll()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu32ll");
    static BFu15i_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu0i_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "BFu15i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "BFu15i_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu32ll(Test_BFu15i_BFu0i_BFu32ll, "BFu15i_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu33()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu33");
    static BFu15i_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(BFu15i_BFu0i_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, 1, "BFu15i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, hide_ull(1LL<<32), "BFu15i_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu33(Test_BFu15i_BFu0i_BFu33, "BFu15i_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu7c()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu7c");
    static BFu15i_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "BFu15i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu7c(Test_BFu15i_BFu0i_BFu7c, "BFu15i_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu7i()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu7i");
    static BFu15i_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "BFu15i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu7i(Test_BFu15i_BFu0i_BFu7i, "BFu15i_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu7ll()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu7ll");
    static BFu15i_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "BFu15i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu7ll(Test_BFu15i_BFu0i_BFu7ll, "BFu15i_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu7s()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu7s");
    static BFu15i_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "BFu15i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu7s(Test_BFu15i_BFu0i_BFu7s, "BFu15i_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu8c()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu8c");
    static BFu15i_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "BFu15i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu8c(Test_BFu15i_BFu0i_BFu8c, "BFu15i_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu8i()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu8i");
    static BFu15i_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "BFu15i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu8i(Test_BFu15i_BFu0i_BFu8i, "BFu15i_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu8ll()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu8ll");
    static BFu15i_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "BFu15i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu8ll(Test_BFu15i_BFu0i_BFu8ll, "BFu15i_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu8s()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu8s");
    static BFu15i_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "BFu15i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu8s(Test_BFu15i_BFu0i_BFu8s, "BFu15i_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu9i()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu9i");
    static BFu15i_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu15i_BFu0i_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "BFu15i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu9i(Test_BFu15i_BFu0i_BFu9i, "BFu15i_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu9ll()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu9ll");
    static BFu15i_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu15i_BFu0i_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "BFu15i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu9ll(Test_BFu15i_BFu0i_BFu9ll, "BFu15i_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_BFu9s()
{
  {
    init_simple_test("BFu15i_BFu0i_BFu9s");
    static BFu15i_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu15i_BFu0i_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "BFu15i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_BFu9s(Test_BFu15i_BFu0i_BFu9s, "BFu15i_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_C()
{
  {
    init_simple_test("BFu15i_BFu0i_C");
    static BFu15i_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_C(Test_BFu15i_BFu0i_C, "BFu15i_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_D()
{
  {
    init_simple_test("BFu15i_BFu0i_D");
    static BFu15i_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(BFu15i_BFu0i_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_D(Test_BFu15i_BFu0i_D, "BFu15i_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_F()
{
  {
    init_simple_test("BFu15i_BFu0i_F");
    static BFu15i_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu0i_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_F(Test_BFu15i_BFu0i_F, "BFu15i_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_I()
{
  {
    init_simple_test("BFu15i_BFu0i_I");
    static BFu15i_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu0i_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_I(Test_BFu15i_BFu0i_I, "BFu15i_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_Ip()
{
  {
    init_simple_test("BFu15i_BFu0i_Ip");
    static BFu15i_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu15i_BFu0i_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_Ip(Test_BFu15i_BFu0i_Ip, "BFu15i_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_L()
{
  {
    init_simple_test("BFu15i_BFu0i_L");
    static BFu15i_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(BFu15i_BFu0i_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_L(Test_BFu15i_BFu0i_L, "BFu15i_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_S()
{
  {
    init_simple_test("BFu15i_BFu0i_S");
    static BFu15i_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu15i_BFu0i_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_S(Test_BFu15i_BFu0i_S, "BFu15i_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_Uc()
{
  {
    init_simple_test("BFu15i_BFu0i_Uc");
    static BFu15i_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0i_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_Uc(Test_BFu15i_BFu0i_Uc, "BFu15i_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_Ui()
{
  {
    init_simple_test("BFu15i_BFu0i_Ui");
    static BFu15i_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu0i_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_Ui(Test_BFu15i_BFu0i_Ui, "BFu15i_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_Ul()
{
  {
    init_simple_test("BFu15i_BFu0i_Ul");
    static BFu15i_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(BFu15i_BFu0i_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_Ul(Test_BFu15i_BFu0i_Ul, "BFu15i_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_Us()
{
  {
    init_simple_test("BFu15i_BFu0i_Us");
    static BFu15i_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(BFu15i_BFu0i_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_Us(Test_BFu15i_BFu0i_Us, "BFu15i_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0i_Vp()
{
  {
    init_simple_test("BFu15i_BFu0i_Vp");
    static BFu15i_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu15i_BFu0i_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "BFu15i_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0i_Vp(Test_BFu15i_BFu0i_Vp, "BFu15i_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu0ll");
    static BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll(Test_BFu15i_BFu0ll, "BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu0c");
    static BFu15i_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu0ll_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu0c(Test_BFu15i_BFu0ll_BFu0c, "BFu15i_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu0i");
    static BFu15i_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu0ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu0i(Test_BFu15i_BFu0ll_BFu0i, "BFu15i_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu0ll");
    static BFu15i_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu0ll(Test_BFu15i_BFu0ll_BFu0ll, "BFu15i_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu0s");
    static BFu15i_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu0ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu0s(Test_BFu15i_BFu0ll_BFu0s, "BFu15i_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu15i()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu15i");
    static BFu15i_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0ll_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu15i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu15i(Test_BFu15i_BFu0ll_BFu15i, "BFu15i_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu15ll()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu15ll");
    static BFu15i_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu15i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu15ll(Test_BFu15i_BFu0ll_BFu15ll, "BFu15i_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu15s()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu15s");
    static BFu15i_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0ll_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "BFu15i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu15s(Test_BFu15i_BFu0ll_BFu15s, "BFu15i_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu16i()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu16i");
    static BFu15i_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0ll_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu15i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu16i(Test_BFu15i_BFu0ll_BFu16i, "BFu15i_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu16ll()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu16ll");
    static BFu15i_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu15i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu16ll(Test_BFu15i_BFu0ll_BFu16ll, "BFu15i_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu16s()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu16s");
    static BFu15i_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0ll_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "BFu15i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu16s(Test_BFu15i_BFu0ll_BFu16s, "BFu15i_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu17i()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu17i");
    static BFu15i_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu15i_BFu0ll_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "BFu15i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "BFu15i_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu17i(Test_BFu15i_BFu0ll_BFu17i, "BFu15i_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu17ll()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu17ll");
    static BFu15i_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(BFu15i_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "BFu15i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "BFu15i_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu17ll(Test_BFu15i_BFu0ll_BFu17ll, "BFu15i_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu1c()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu1c");
    static BFu15i_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu15i_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu1c(Test_BFu15i_BFu0ll_BFu1c, "BFu15i_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu1i()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu1i");
    static BFu15i_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu15i_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu1i(Test_BFu15i_BFu0ll_BFu1i, "BFu15i_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu1ll()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu1ll");
    static BFu15i_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu15i_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu1ll(Test_BFu15i_BFu0ll_BFu1ll, "BFu15i_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu1s()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu1s");
    static BFu15i_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "BFu15i_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu1s(Test_BFu15i_BFu0ll_BFu1s, "BFu15i_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu31i()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu31i");
    static BFu15i_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu15i_BFu0ll_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "BFu15i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "BFu15i_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu31i(Test_BFu15i_BFu0ll_BFu31i, "BFu15i_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu31ll()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu31ll");
    static BFu15i_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu15i_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "BFu15i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "BFu15i_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu31ll(Test_BFu15i_BFu0ll_BFu31ll, "BFu15i_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu32i()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu32i");
    static BFu15i_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu15i_BFu0ll_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "BFu15i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "BFu15i_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu32i(Test_BFu15i_BFu0ll_BFu32i, "BFu15i_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu32ll()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu32ll");
    static BFu15i_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu15i_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "BFu15i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "BFu15i_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu32ll(Test_BFu15i_BFu0ll_BFu32ll, "BFu15i_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu33()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu33");
    static BFu15i_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(BFu15i_BFu0ll_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "BFu15i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "BFu15i_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu33(Test_BFu15i_BFu0ll_BFu33, "BFu15i_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu7c()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu7c");
    static BFu15i_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu15i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu7c(Test_BFu15i_BFu0ll_BFu7c, "BFu15i_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu7i()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu7i");
    static BFu15i_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu15i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu7i(Test_BFu15i_BFu0ll_BFu7i, "BFu15i_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu7ll()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu7ll");
    static BFu15i_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu15i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu7ll(Test_BFu15i_BFu0ll_BFu7ll, "BFu15i_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu7s()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu7s");
    static BFu15i_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "BFu15i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu7s(Test_BFu15i_BFu0ll_BFu7s, "BFu15i_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu8c()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu8c");
    static BFu15i_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu15i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu8c(Test_BFu15i_BFu0ll_BFu8c, "BFu15i_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu8i()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu8i");
    static BFu15i_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu15i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu8i(Test_BFu15i_BFu0ll_BFu8i, "BFu15i_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu8ll()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu8ll");
    static BFu15i_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu15i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu8ll(Test_BFu15i_BFu0ll_BFu8ll, "BFu15i_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu8s()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu8s");
    static BFu15i_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "BFu15i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu8s(Test_BFu15i_BFu0ll_BFu8s, "BFu15i_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu9i()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu9i");
    static BFu15i_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0ll_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "BFu15i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu9i(Test_BFu15i_BFu0ll_BFu9i, "BFu15i_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu9ll()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu9ll");
    static BFu15i_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "BFu15i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu9ll(Test_BFu15i_BFu0ll_BFu9ll, "BFu15i_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_BFu9s()
{
  {
    init_simple_test("BFu15i_BFu0ll_BFu9s");
    static BFu15i_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0ll_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "BFu15i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_BFu9s(Test_BFu15i_BFu0ll_BFu9s, "BFu15i_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_C()
{
  {
    init_simple_test("BFu15i_BFu0ll_C");
    static BFu15i_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_C(Test_BFu15i_BFu0ll_C, "BFu15i_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_D()
{
  {
    init_simple_test("BFu15i_BFu0ll_D");
    static BFu15i_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu15i_BFu0ll_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_D(Test_BFu15i_BFu0ll_D, "BFu15i_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_F()
{
  {
    init_simple_test("BFu15i_BFu0ll_F");
    static BFu15i_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu15i_BFu0ll_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_F(Test_BFu15i_BFu0ll_F, "BFu15i_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_I()
{
  {
    init_simple_test("BFu15i_BFu0ll_I");
    static BFu15i_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu15i_BFu0ll_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_I(Test_BFu15i_BFu0ll_I, "BFu15i_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_Ip()
{
  {
    init_simple_test("BFu15i_BFu0ll_Ip");
    static BFu15i_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(BFu15i_BFu0ll_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_Ip(Test_BFu15i_BFu0ll_Ip, "BFu15i_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_L()
{
  {
    init_simple_test("BFu15i_BFu0ll_L");
    static BFu15i_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu15i_BFu0ll_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_L(Test_BFu15i_BFu0ll_L, "BFu15i_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_S()
{
  {
    init_simple_test("BFu15i_BFu0ll_S");
    static BFu15i_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0ll_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_S(Test_BFu15i_BFu0ll_S, "BFu15i_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_Uc()
{
  {
    init_simple_test("BFu15i_BFu0ll_Uc");
    static BFu15i_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(BFu15i_BFu0ll_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_Uc(Test_BFu15i_BFu0ll_Uc, "BFu15i_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_Ui()
{
  {
    init_simple_test("BFu15i_BFu0ll_Ui");
    static BFu15i_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu15i_BFu0ll_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_Ui(Test_BFu15i_BFu0ll_Ui, "BFu15i_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_Ul()
{
  {
    init_simple_test("BFu15i_BFu0ll_Ul");
    static BFu15i_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu15i_BFu0ll_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_Ul(Test_BFu15i_BFu0ll_Ul, "BFu15i_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_Us()
{
  {
    init_simple_test("BFu15i_BFu0ll_Us");
    static BFu15i_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0ll_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_Us(Test_BFu15i_BFu0ll_Us, "BFu15i_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0ll_Vp()
{
  {
    init_simple_test("BFu15i_BFu0ll_Vp");
    static BFu15i_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(BFu15i_BFu0ll_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "BFu15i_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0ll_Vp(Test_BFu15i_BFu0ll_Vp, "BFu15i_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu0s");
    static BFu15i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s(Test_BFu15i_BFu0s, "BFu15i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu0c");
    static BFu15i_BFu0s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu0s_BFu0c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu0c(Test_BFu15i_BFu0s_BFu0c, "BFu15i_BFu0s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu0i");
    static BFu15i_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu0s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu0i(Test_BFu15i_BFu0s_BFu0i, "BFu15i_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu0ll");
    static BFu15i_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu0s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu0ll(Test_BFu15i_BFu0s_BFu0ll, "BFu15i_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu0s");
    static BFu15i_BFu0s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu0s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu0s(Test_BFu15i_BFu0s_BFu0s, "BFu15i_BFu0s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu15i()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu15i");
    static BFu15i_BFu0s_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0s_BFu15i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu15i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu15i(Test_BFu15i_BFu0s_BFu15i, "BFu15i_BFu0s_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu15ll()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu15ll");
    static BFu15i_BFu0s_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0s_BFu15ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu15i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu15ll(Test_BFu15i_BFu0s_BFu15ll, "BFu15i_BFu0s_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu15s()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu15s");
    static BFu15i_BFu0s_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0s_BFu15s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu15i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu15s(Test_BFu15i_BFu0s_BFu15s, "BFu15i_BFu0s_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu16i()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu16i");
    static BFu15i_BFu0s_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0s_BFu16i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu15i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu16i(Test_BFu15i_BFu0s_BFu16i, "BFu15i_BFu0s_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu16ll()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu16ll");
    static BFu15i_BFu0s_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0s_BFu16ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu15i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu16ll(Test_BFu15i_BFu0s_BFu16ll, "BFu15i_BFu0s_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu16s()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu16s");
    static BFu15i_BFu0s_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0s_BFu16s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu15i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu15i_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu16s(Test_BFu15i_BFu0s_BFu16s, "BFu15i_BFu0s_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu17i()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu17i");
    static BFu15i_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0s_BFu17i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu15i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu15i_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu17i(Test_BFu15i_BFu0s_BFu17i, "BFu15i_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu17ll()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu17ll");
    static BFu15i_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(BFu15i_BFu0s_BFu17ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu15i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu15i_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu17ll(Test_BFu15i_BFu0s_BFu17ll, "BFu15i_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu1c()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu1c");
    static BFu15i_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu1c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15i_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu1c(Test_BFu15i_BFu0s_BFu1c, "BFu15i_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu1i()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu1i");
    static BFu15i_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu1i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15i_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu1i(Test_BFu15i_BFu0s_BFu1i, "BFu15i_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu1ll()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu1ll");
    static BFu15i_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu1ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15i_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu1ll(Test_BFu15i_BFu0s_BFu1ll, "BFu15i_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu1s()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu1s");
    static BFu15i_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu1s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15i_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu1s(Test_BFu15i_BFu0s_BFu1s, "BFu15i_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu31i()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu31i");
    static BFu15i_BFu0s_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0s_BFu31i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu15i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu15i_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu31i(Test_BFu15i_BFu0s_BFu31i, "BFu15i_BFu0s_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu31ll()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu31ll");
    static BFu15i_BFu0s_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0s_BFu31ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu15i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu15i_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu31ll(Test_BFu15i_BFu0s_BFu31ll, "BFu15i_BFu0s_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu32i()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu32i");
    static BFu15i_BFu0s_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0s_BFu32i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu15i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu15i_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu32i(Test_BFu15i_BFu0s_BFu32i, "BFu15i_BFu0s_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu32ll()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu32ll");
    static BFu15i_BFu0s_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0s_BFu32ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu15i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu15i_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu32ll(Test_BFu15i_BFu0s_BFu32ll, "BFu15i_BFu0s_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu33()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu33");
    static BFu15i_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(BFu15i_BFu0s_BFu33)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, 1, "BFu15i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, hide_ull(1LL<<32), "BFu15i_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu33(Test_BFu15i_BFu0s_BFu33, "BFu15i_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu7c()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu7c");
    static BFu15i_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu7c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu7c(Test_BFu15i_BFu0s_BFu7c, "BFu15i_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu7i()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu7i");
    static BFu15i_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu7i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu7i(Test_BFu15i_BFu0s_BFu7i, "BFu15i_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu7ll()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu7ll");
    static BFu15i_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu7ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu7ll(Test_BFu15i_BFu0s_BFu7ll, "BFu15i_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu7s()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu7s");
    static BFu15i_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu7s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15i_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu7s(Test_BFu15i_BFu0s_BFu7s, "BFu15i_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu8c()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu8c");
    static BFu15i_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu8c)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu15i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu8c(Test_BFu15i_BFu0s_BFu8c, "BFu15i_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu8i()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu8i");
    static BFu15i_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu8i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu15i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu8i(Test_BFu15i_BFu0s_BFu8i, "BFu15i_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu8ll()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu8ll");
    static BFu15i_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu8ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu15i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu8ll(Test_BFu15i_BFu0s_BFu8ll, "BFu15i_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu8s()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu8s");
    static BFu15i_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_BFu8s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu15i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu15i_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu8s(Test_BFu15i_BFu0s_BFu8s, "BFu15i_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu9i()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu9i");
    static BFu15i_BFu0s_BFu9i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0s_BFu9i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu15i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu9i(Test_BFu15i_BFu0s_BFu9i, "BFu15i_BFu0s_BFu9i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu9ll()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu9ll");
    static BFu15i_BFu0s_BFu9ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0s_BFu9ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu15i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu9ll(Test_BFu15i_BFu0s_BFu9ll, "BFu15i_BFu0s_BFu9ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_BFu9s()
{
  {
    init_simple_test("BFu15i_BFu0s_BFu9s");
    static BFu15i_BFu0s_BFu9s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0s_BFu9s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, 1, "BFu15i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, 2, 0, 9, hide_ull(1LL<<8), "BFu15i_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_BFu9s(Test_BFu15i_BFu0s_BFu9s, "BFu15i_BFu0s_BFu9s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_C()
{
  {
    init_simple_test("BFu15i_BFu0s_C");
    static BFu15i_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_C)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_C");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_C(Test_BFu15i_BFu0s_C, "BFu15i_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_D()
{
  {
    init_simple_test("BFu15i_BFu0s_D");
    static BFu15i_BFu0s_D lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_BFu0s_D)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_D");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_D(Test_BFu15i_BFu0s_D, "BFu15i_BFu0s_D", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_F()
{
  {
    init_simple_test("BFu15i_BFu0s_F");
    static BFu15i_BFu0s_F lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0s_F)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_F");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_F(Test_BFu15i_BFu0s_F, "BFu15i_BFu0s_F", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_I()
{
  {
    init_simple_test("BFu15i_BFu0s_I");
    static BFu15i_BFu0s_I lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0s_I)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_I");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_I(Test_BFu15i_BFu0s_I, "BFu15i_BFu0s_I", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_Ip()
{
  {
    init_simple_test("BFu15i_BFu0s_Ip");
    static BFu15i_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0s_Ip)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_Ip");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_Ip(Test_BFu15i_BFu0s_Ip, "BFu15i_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_L()
{
  {
    init_simple_test("BFu15i_BFu0s_L");
    static BFu15i_BFu0s_L lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_BFu0s_L)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_L");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_L(Test_BFu15i_BFu0s_L, "BFu15i_BFu0s_L", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_S()
{
  {
    init_simple_test("BFu15i_BFu0s_S");
    static BFu15i_BFu0s_S lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0s_S)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_S");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_S(Test_BFu15i_BFu0s_S, "BFu15i_BFu0s_S", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_Uc()
{
  {
    init_simple_test("BFu15i_BFu0s_Uc");
    static BFu15i_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(BFu15i_BFu0s_Uc)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_Uc");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_Uc(Test_BFu15i_BFu0s_Uc, "BFu15i_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_Ui()
{
  {
    init_simple_test("BFu15i_BFu0s_Ui");
    static BFu15i_BFu0s_Ui lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu0s_Ui)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_Ui");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_Ui(Test_BFu15i_BFu0s_Ui, "BFu15i_BFu0s_Ui", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_Ul()
{
  {
    init_simple_test("BFu15i_BFu0s_Ul");
    static BFu15i_BFu0s_Ul lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_BFu0s_Ul)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_Ul");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_Ul(Test_BFu15i_BFu0s_Ul, "BFu15i_BFu0s_Ul", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_Us()
{
  {
    init_simple_test("BFu15i_BFu0s_Us");
    static BFu15i_BFu0s_Us lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu0s_Us)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_Us");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_Us(Test_BFu15i_BFu0s_Us, "BFu15i_BFu0s_Us", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu0s_Vp()
{
  {
    init_simple_test("BFu15i_BFu0s_Vp");
    static BFu15i_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_BFu0s_Vp)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu0s_Vp");
    check_field_offset(lv, v2, 2, "BFu15i_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu0s_Vp(Test_BFu15i_BFu0s_Vp, "BFu15i_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15i_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu15i_BFu0c");
    static BFu15i_BFu15i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15i_BFu0c(Test_BFu15i_BFu15i_BFu0c, "BFu15i_BFu15i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15i_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu15i_BFu0i");
    static BFu15i_BFu15i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu15i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15i_BFu0i(Test_BFu15i_BFu15i_BFu0i, "BFu15i_BFu15i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15i_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu15i_BFu0ll");
    static BFu15i_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu15i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15i_BFu0ll(Test_BFu15i_BFu15i_BFu0ll, "BFu15i_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15i_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu15i_BFu0s");
    static BFu15i_BFu15i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu15i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15i_BFu0s(Test_BFu15i_BFu15i_BFu0s, "BFu15i_BFu15i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15ll_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu15ll_BFu0c");
    static BFu15i_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15ll_BFu0c(Test_BFu15i_BFu15ll_BFu0c, "BFu15i_BFu15ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15ll_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu15ll_BFu0i");
    static BFu15i_BFu15ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu15ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15ll_BFu0i(Test_BFu15i_BFu15ll_BFu0i, "BFu15i_BFu15ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15ll_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu15ll_BFu0ll");
    static BFu15i_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15ll_BFu0ll(Test_BFu15i_BFu15ll_BFu0ll, "BFu15i_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15ll_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu15ll_BFu0s");
    static BFu15i_BFu15ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu15ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15ll_BFu0s(Test_BFu15i_BFu15ll_BFu0s, "BFu15i_BFu15ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15s_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu15s_BFu0c");
    static BFu15i_BFu15s_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15s_BFu0c(Test_BFu15i_BFu15s_BFu0c, "BFu15i_BFu15s_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15s_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu15s_BFu0i");
    static BFu15i_BFu15s_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu15s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15s_BFu0i(Test_BFu15i_BFu15s_BFu0i, "BFu15i_BFu15s_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15s_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu15s_BFu0ll");
    static BFu15i_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu15s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15s_BFu0ll(Test_BFu15i_BFu15s_BFu0ll, "BFu15i_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu15s_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu15s_BFu0s");
    static BFu15i_BFu15s_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu15s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 15, 1, "BFu15i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 15, hide_ull(1LL<<14), "BFu15i_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu15s_BFu0s(Test_BFu15i_BFu15s_BFu0s, "BFu15i_BFu15s_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16i_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu16i_BFu0c");
    static BFu15i_BFu16i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16i_BFu0c(Test_BFu15i_BFu16i_BFu0c, "BFu15i_BFu16i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16i_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu16i_BFu0i");
    static BFu15i_BFu16i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu16i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16i_BFu0i(Test_BFu15i_BFu16i_BFu0i, "BFu15i_BFu16i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16i_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu16i_BFu0ll");
    static BFu15i_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu16i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16i_BFu0ll(Test_BFu15i_BFu16i_BFu0ll, "BFu15i_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16i_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu16i_BFu0s");
    static BFu15i_BFu16i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu16i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16i_BFu0s(Test_BFu15i_BFu16i_BFu0s, "BFu15i_BFu16i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16ll_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu16ll_BFu0c");
    static BFu15i_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16ll_BFu0c(Test_BFu15i_BFu16ll_BFu0c, "BFu15i_BFu16ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16ll_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu16ll_BFu0i");
    static BFu15i_BFu16ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu16ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16ll_BFu0i(Test_BFu15i_BFu16ll_BFu0i, "BFu15i_BFu16ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16ll_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu16ll_BFu0ll");
    static BFu15i_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16ll_BFu0ll(Test_BFu15i_BFu16ll_BFu0ll, "BFu15i_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16ll_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu16ll_BFu0s");
    static BFu15i_BFu16ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu16ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16ll_BFu0s(Test_BFu15i_BFu16ll_BFu0s, "BFu15i_BFu16ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16s_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu16s_BFu0c");
    static BFu15i_BFu16s_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16s_BFu0c(Test_BFu15i_BFu16s_BFu0c, "BFu15i_BFu16s_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16s_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu16s_BFu0i");
    static BFu15i_BFu16s_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu16s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16s_BFu0i(Test_BFu15i_BFu16s_BFu0i, "BFu15i_BFu16s_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16s_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu16s_BFu0ll");
    static BFu15i_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu16s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16s_BFu0ll(Test_BFu15i_BFu16s_BFu0ll, "BFu15i_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu16s_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu16s_BFu0s");
    static BFu15i_BFu16s_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu16s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 16, 1, "BFu15i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 16, hide_ull(1LL<<15), "BFu15i_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu16s_BFu0s(Test_BFu15i_BFu16s_BFu0s, "BFu15i_BFu16s_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu17i_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu17i_BFu0c");
    static BFu15i_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu15i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu15i_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu17i_BFu0c(Test_BFu15i_BFu17i_BFu0c, "BFu15i_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu17i_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu17i_BFu0i");
    static BFu15i_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu17i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu15i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu15i_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu17i_BFu0i(Test_BFu15i_BFu17i_BFu0i, "BFu15i_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu17i_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu17i_BFu0ll");
    static BFu15i_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu17i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu15i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu15i_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu17i_BFu0ll(Test_BFu15i_BFu17i_BFu0ll, "BFu15i_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu17i_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu17i_BFu0s");
    static BFu15i_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu17i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu15i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu15i_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu17i_BFu0s(Test_BFu15i_BFu17i_BFu0s, "BFu15i_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu17ll_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu17ll_BFu0c");
    static BFu15i_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu15i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu15i_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu17ll_BFu0c(Test_BFu15i_BFu17ll_BFu0c, "BFu15i_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu17ll_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu17ll_BFu0i");
    static BFu15i_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu17ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu15i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu15i_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu17ll_BFu0i(Test_BFu15i_BFu17ll_BFu0i, "BFu15i_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu17ll_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu17ll_BFu0ll");
    static BFu15i_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu15i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu15i_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu17ll_BFu0ll(Test_BFu15i_BFu17ll_BFu0ll, "BFu15i_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu17ll_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu17ll_BFu0s");
    static BFu15i_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_BFu17ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 17, 1, "BFu15i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 17, hide_ull(1LL<<16), "BFu15i_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu17ll_BFu0s(Test_BFu15i_BFu17ll_BFu0s, "BFu15i_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1c_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu1c_BFu0c");
    static BFu15i_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1c_BFu0c(Test_BFu15i_BFu1c_BFu0c, "BFu15i_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1c_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu1c_BFu0i");
    static BFu15i_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu1c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1c_BFu0i(Test_BFu15i_BFu1c_BFu0i, "BFu15i_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1c_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu1c_BFu0ll");
    static BFu15i_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu1c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1c_BFu0ll(Test_BFu15i_BFu1c_BFu0ll, "BFu15i_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1c_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu1c_BFu0s");
    static BFu15i_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu1c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1c_BFu0s(Test_BFu15i_BFu1c_BFu0s, "BFu15i_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1i_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu1i_BFu0c");
    static BFu15i_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1i_BFu0c(Test_BFu15i_BFu1i_BFu0c, "BFu15i_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1i_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu1i_BFu0i");
    static BFu15i_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu1i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1i_BFu0i(Test_BFu15i_BFu1i_BFu0i, "BFu15i_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1i_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu1i_BFu0ll");
    static BFu15i_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu1i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1i_BFu0ll(Test_BFu15i_BFu1i_BFu0ll, "BFu15i_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1i_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu1i_BFu0s");
    static BFu15i_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu1i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1i_BFu0s(Test_BFu15i_BFu1i_BFu0s, "BFu15i_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1ll_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu1ll_BFu0c");
    static BFu15i_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1ll_BFu0c(Test_BFu15i_BFu1ll_BFu0c, "BFu15i_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1ll_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu1ll_BFu0i");
    static BFu15i_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu1ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1ll_BFu0i(Test_BFu15i_BFu1ll_BFu0i, "BFu15i_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1ll_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu1ll_BFu0ll");
    static BFu15i_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1ll_BFu0ll(Test_BFu15i_BFu1ll_BFu0ll, "BFu15i_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1ll_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu1ll_BFu0s");
    static BFu15i_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu1ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1ll_BFu0s(Test_BFu15i_BFu1ll_BFu0s, "BFu15i_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1s_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu1s_BFu0c");
    static BFu15i_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1s_BFu0c(Test_BFu15i_BFu1s_BFu0c, "BFu15i_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1s_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu1s_BFu0i");
    static BFu15i_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu1s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1s_BFu0i(Test_BFu15i_BFu1s_BFu0i, "BFu15i_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1s_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu1s_BFu0ll");
    static BFu15i_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu1s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1s_BFu0ll(Test_BFu15i_BFu1s_BFu0ll, "BFu15i_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu1s_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu1s_BFu0s");
    static BFu15i_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu15i_BFu1s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 1, 1, "BFu15i_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu1s_BFu0s(Test_BFu15i_BFu1s_BFu0s, "BFu15i_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu31i_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu31i_BFu0c");
    static BFu15i_BFu31i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu15i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu15i_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu31i_BFu0c(Test_BFu15i_BFu31i_BFu0c, "BFu15i_BFu31i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu31i_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu31i_BFu0i");
    static BFu15i_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu31i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu15i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu15i_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu31i_BFu0i(Test_BFu15i_BFu31i_BFu0i, "BFu15i_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu31i_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu31i_BFu0ll");
    static BFu15i_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu31i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu15i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu15i_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu31i_BFu0ll(Test_BFu15i_BFu31i_BFu0ll, "BFu15i_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu31i_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu31i_BFu0s");
    static BFu15i_BFu31i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu31i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu15i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu15i_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu31i_BFu0s(Test_BFu15i_BFu31i_BFu0s, "BFu15i_BFu31i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu31ll_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu31ll_BFu0c");
    static BFu15i_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu15i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu15i_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu31ll_BFu0c(Test_BFu15i_BFu31ll_BFu0c, "BFu15i_BFu31ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu31ll_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu31ll_BFu0i");
    static BFu15i_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu31ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu15i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu15i_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu31ll_BFu0i(Test_BFu15i_BFu31ll_BFu0i, "BFu15i_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu31ll_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu31ll_BFu0ll");
    static BFu15i_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu15i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu15i_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu31ll_BFu0ll(Test_BFu15i_BFu31ll_BFu0ll, "BFu15i_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu31ll_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu31ll_BFu0s");
    static BFu15i_BFu31ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu31ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 31, 1, "BFu15i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 31, hide_ull(1LL<<30), "BFu15i_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu31ll_BFu0s(Test_BFu15i_BFu31ll_BFu0s, "BFu15i_BFu31ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu32i_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu32i_BFu0c");
    static BFu15i_BFu32i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu15i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu15i_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu32i_BFu0c(Test_BFu15i_BFu32i_BFu0c, "BFu15i_BFu32i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu32i_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu32i_BFu0i");
    static BFu15i_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu32i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu15i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu15i_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu32i_BFu0i(Test_BFu15i_BFu32i_BFu0i, "BFu15i_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu32i_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu32i_BFu0ll");
    static BFu15i_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu32i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu15i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu15i_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu32i_BFu0ll(Test_BFu15i_BFu32i_BFu0ll, "BFu15i_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu32i_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu32i_BFu0s");
    static BFu15i_BFu32i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu32i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu15i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu15i_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu32i_BFu0s(Test_BFu15i_BFu32i_BFu0s, "BFu15i_BFu32i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu32ll_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu32ll_BFu0c");
    static BFu15i_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu15i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu15i_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu32ll_BFu0c(Test_BFu15i_BFu32ll_BFu0c, "BFu15i_BFu32ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu32ll_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu32ll_BFu0i");
    static BFu15i_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu32ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu15i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu15i_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu32ll_BFu0i(Test_BFu15i_BFu32ll_BFu0i, "BFu15i_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu32ll_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu32ll_BFu0ll");
    static BFu15i_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu15i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu15i_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu32ll_BFu0ll(Test_BFu15i_BFu32ll_BFu0ll, "BFu15i_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu32ll_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu32ll_BFu0s");
    static BFu15i_BFu32ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu32ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 32, 1, "BFu15i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 32, hide_ull(1LL<<31), "BFu15i_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu32ll_BFu0s(Test_BFu15i_BFu32ll_BFu0s, "BFu15i_BFu32ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu33_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu33_BFu0c");
    static BFu15i_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 33, 1, "BFu15i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 33, hide_ull(1LL<<32), "BFu15i_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu33_BFu0c(Test_BFu15i_BFu33_BFu0c, "BFu15i_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu33_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu33_BFu0i");
    static BFu15i_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu33_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 33, 1, "BFu15i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 33, hide_ull(1LL<<32), "BFu15i_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu33_BFu0i(Test_BFu15i_BFu33_BFu0i, "BFu15i_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu33_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu33_BFu0ll");
    static BFu15i_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_BFu33_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 33, 1, "BFu15i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 33, hide_ull(1LL<<32), "BFu15i_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu33_BFu0ll(Test_BFu15i_BFu33_BFu0ll, "BFu15i_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu33_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu33_BFu0s");
    static BFu15i_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_BFu33_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 33, 1, "BFu15i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 33, hide_ull(1LL<<32), "BFu15i_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu33_BFu0s(Test_BFu15i_BFu33_BFu0s, "BFu15i_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7c_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu7c_BFu0c");
    static BFu15i_BFu7c_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7c_BFu0c(Test_BFu15i_BFu7c_BFu0c, "BFu15i_BFu7c_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7c_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu7c_BFu0i");
    static BFu15i_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu7c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7c_BFu0i(Test_BFu15i_BFu7c_BFu0i, "BFu15i_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7c_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu7c_BFu0ll");
    static BFu15i_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu7c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7c_BFu0ll(Test_BFu15i_BFu7c_BFu0ll, "BFu15i_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7c_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu7c_BFu0s");
    static BFu15i_BFu7c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu7c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7c_BFu0s(Test_BFu15i_BFu7c_BFu0s, "BFu15i_BFu7c_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7i_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu7i_BFu0c");
    static BFu15i_BFu7i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7i_BFu0c(Test_BFu15i_BFu7i_BFu0c, "BFu15i_BFu7i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7i_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu7i_BFu0i");
    static BFu15i_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu7i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7i_BFu0i(Test_BFu15i_BFu7i_BFu0i, "BFu15i_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7i_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu7i_BFu0ll");
    static BFu15i_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu7i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7i_BFu0ll(Test_BFu15i_BFu7i_BFu0ll, "BFu15i_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7i_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu7i_BFu0s");
    static BFu15i_BFu7i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu7i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7i_BFu0s(Test_BFu15i_BFu7i_BFu0s, "BFu15i_BFu7i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7ll_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu7ll_BFu0c");
    static BFu15i_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7ll_BFu0c(Test_BFu15i_BFu7ll_BFu0c, "BFu15i_BFu7ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7ll_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu7ll_BFu0i");
    static BFu15i_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu7ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7ll_BFu0i(Test_BFu15i_BFu7ll_BFu0i, "BFu15i_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7ll_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu7ll_BFu0ll");
    static BFu15i_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7ll_BFu0ll(Test_BFu15i_BFu7ll_BFu0ll, "BFu15i_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7ll_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu7ll_BFu0s");
    static BFu15i_BFu7ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu7ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7ll_BFu0s(Test_BFu15i_BFu7ll_BFu0s, "BFu15i_BFu7ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7s_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu7s_BFu0c");
    static BFu15i_BFu7s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7s_BFu0c(Test_BFu15i_BFu7s_BFu0c, "BFu15i_BFu7s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7s_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu7s_BFu0i");
    static BFu15i_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu7s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7s_BFu0i(Test_BFu15i_BFu7s_BFu0i, "BFu15i_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7s_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu7s_BFu0ll");
    static BFu15i_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu7s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7s_BFu0ll(Test_BFu15i_BFu7s_BFu0ll, "BFu15i_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu7s_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu7s_BFu0s");
    static BFu15i_BFu7s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu7s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 7, 1, "BFu15i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 7, hide_ull(1LL<<6), "BFu15i_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu7s_BFu0s(Test_BFu15i_BFu7s_BFu0s, "BFu15i_BFu7s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8c_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu8c_BFu0c");
    static BFu15i_BFu8c_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8c_BFu0c(Test_BFu15i_BFu8c_BFu0c, "BFu15i_BFu8c_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8c_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu8c_BFu0i");
    static BFu15i_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu8c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8c_BFu0i(Test_BFu15i_BFu8c_BFu0i, "BFu15i_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8c_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu8c_BFu0ll");
    static BFu15i_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu8c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8c_BFu0ll(Test_BFu15i_BFu8c_BFu0ll, "BFu15i_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8c_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu8c_BFu0s");
    static BFu15i_BFu8c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu8c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8c_BFu0s(Test_BFu15i_BFu8c_BFu0s, "BFu15i_BFu8c_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8i_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu8i_BFu0c");
    static BFu15i_BFu8i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8i_BFu0c(Test_BFu15i_BFu8i_BFu0c, "BFu15i_BFu8i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8i_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu8i_BFu0i");
    static BFu15i_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu8i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8i_BFu0i(Test_BFu15i_BFu8i_BFu0i, "BFu15i_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8i_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu8i_BFu0ll");
    static BFu15i_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu8i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8i_BFu0ll(Test_BFu15i_BFu8i_BFu0ll, "BFu15i_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8i_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu8i_BFu0s");
    static BFu15i_BFu8i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu8i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8i_BFu0s(Test_BFu15i_BFu8i_BFu0s, "BFu15i_BFu8i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8ll_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu8ll_BFu0c");
    static BFu15i_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8ll_BFu0c(Test_BFu15i_BFu8ll_BFu0c, "BFu15i_BFu8ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8ll_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu8ll_BFu0i");
    static BFu15i_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu8ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8ll_BFu0i(Test_BFu15i_BFu8ll_BFu0i, "BFu15i_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8ll_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu8ll_BFu0ll");
    static BFu15i_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8ll_BFu0ll(Test_BFu15i_BFu8ll_BFu0ll, "BFu15i_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8ll_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu8ll_BFu0s");
    static BFu15i_BFu8ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu8ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8ll_BFu0s(Test_BFu15i_BFu8ll_BFu0s, "BFu15i_BFu8ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8s_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu8s_BFu0c");
    static BFu15i_BFu8s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8s_BFu0c(Test_BFu15i_BFu8s_BFu0c, "BFu15i_BFu8s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8s_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu8s_BFu0i");
    static BFu15i_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu8s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8s_BFu0i(Test_BFu15i_BFu8s_BFu0i, "BFu15i_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8s_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu8s_BFu0ll");
    static BFu15i_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu8s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8s_BFu0ll(Test_BFu15i_BFu8s_BFu0ll, "BFu15i_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu8s_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu8s_BFu0s");
    static BFu15i_BFu8s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu8s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 8, 1, "BFu15i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 8, hide_ull(1LL<<7), "BFu15i_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu8s_BFu0s(Test_BFu15i_BFu8s_BFu0s, "BFu15i_BFu8s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9i_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu9i_BFu0c");
    static BFu15i_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9i_BFu0c(Test_BFu15i_BFu9i_BFu0c, "BFu15i_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9i_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu9i_BFu0i");
    static BFu15i_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu9i_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9i_BFu0i(Test_BFu15i_BFu9i_BFu0i, "BFu15i_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9i_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu9i_BFu0ll");
    static BFu15i_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu9i_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9i_BFu0ll(Test_BFu15i_BFu9i_BFu0ll, "BFu15i_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9i_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu9i_BFu0s");
    static BFu15i_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu9i_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9i_BFu0s(Test_BFu15i_BFu9i_BFu0s, "BFu15i_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9ll_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu9ll_BFu0c");
    static BFu15i_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9ll_BFu0c(Test_BFu15i_BFu9ll_BFu0c, "BFu15i_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9ll_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu9ll_BFu0i");
    static BFu15i_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu9ll_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9ll_BFu0i(Test_BFu15i_BFu9ll_BFu0i, "BFu15i_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9ll_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu9ll_BFu0ll");
    static BFu15i_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9ll_BFu0ll(Test_BFu15i_BFu9ll_BFu0ll, "BFu15i_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9ll_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu9ll_BFu0s");
    static BFu15i_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu9ll_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9ll_BFu0s(Test_BFu15i_BFu9ll_BFu0s, "BFu15i_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9s_BFu0c()
{
  {
    init_simple_test("BFu15i_BFu9s_BFu0c");
    static BFu15i_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9s_BFu0c(Test_BFu15i_BFu9s_BFu0c, "BFu15i_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9s_BFu0i()
{
  {
    init_simple_test("BFu15i_BFu9s_BFu0i");
    static BFu15i_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu9s_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9s_BFu0i(Test_BFu15i_BFu9s_BFu0i, "BFu15i_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9s_BFu0ll()
{
  {
    init_simple_test("BFu15i_BFu9s_BFu0ll");
    static BFu15i_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_BFu9s_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9s_BFu0ll(Test_BFu15i_BFu9s_BFu0ll, "BFu15i_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_BFu9s_BFu0s()
{
  {
    init_simple_test("BFu15i_BFu9s_BFu0s");
    static BFu15i_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_BFu9s_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 9, 1, "BFu15i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 7, 9, hide_ull(1LL<<8), "BFu15i_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15i_BFu9s_BFu0s(Test_BFu15i_BFu9s_BFu0s, "BFu15i_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_C_BFu0c()
{
  {
    init_simple_test("BFu15i_C_BFu0c");
    static BFu15i_C_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_C_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_C_BFu0c(Test_BFu15i_C_BFu0c, "BFu15i_C_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_C_BFu0i()
{
  {
    init_simple_test("BFu15i_C_BFu0i");
    static BFu15i_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_C_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_C_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_C_BFu0i(Test_BFu15i_C_BFu0i, "BFu15i_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_C_BFu0ll()
{
  {
    init_simple_test("BFu15i_C_BFu0ll");
    static BFu15i_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_C_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_C_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_C_BFu0ll(Test_BFu15i_C_BFu0ll, "BFu15i_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_C_BFu0s()
{
  {
    init_simple_test("BFu15i_C_BFu0s");
    static BFu15i_C_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_C_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_C_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_C_BFu0s(Test_BFu15i_C_BFu0s, "BFu15i_C_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_D_BFu0c()
{
  {
    init_simple_test("BFu15i_D_BFu0c");
    static BFu15i_D_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_D_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_D_BFu0c(Test_BFu15i_D_BFu0c, "BFu15i_D_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_D_BFu0i()
{
  {
    init_simple_test("BFu15i_D_BFu0i");
    static BFu15i_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(BFu15i_D_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_D_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_D_BFu0i(Test_BFu15i_D_BFu0i, "BFu15i_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_D_BFu0ll()
{
  {
    init_simple_test("BFu15i_D_BFu0ll");
    static BFu15i_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu15i_D_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_D_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_D_BFu0ll(Test_BFu15i_D_BFu0ll, "BFu15i_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_D_BFu0s()
{
  {
    init_simple_test("BFu15i_D_BFu0s");
    static BFu15i_D_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_D_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_D_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_D_BFu0s(Test_BFu15i_D_BFu0s, "BFu15i_D_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_F_BFu0c()
{
  {
    init_simple_test("BFu15i_F_BFu0c");
    static BFu15i_F_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_F_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_F_BFu0c(Test_BFu15i_F_BFu0c, "BFu15i_F_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_F_BFu0i()
{
  {
    init_simple_test("BFu15i_F_BFu0i");
    static BFu15i_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_F_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_F_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_F_BFu0i(Test_BFu15i_F_BFu0i, "BFu15i_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_F_BFu0ll()
{
  {
    init_simple_test("BFu15i_F_BFu0ll");
    static BFu15i_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_F_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_F_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_F_BFu0ll(Test_BFu15i_F_BFu0ll, "BFu15i_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_F_BFu0s()
{
  {
    init_simple_test("BFu15i_F_BFu0s");
    static BFu15i_F_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_F_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_F_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_F_BFu0s(Test_BFu15i_F_BFu0s, "BFu15i_F_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_I_BFu0c()
{
  {
    init_simple_test("BFu15i_I_BFu0c");
    static BFu15i_I_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_I_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_I_BFu0c(Test_BFu15i_I_BFu0c, "BFu15i_I_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_I_BFu0i()
{
  {
    init_simple_test("BFu15i_I_BFu0i");
    static BFu15i_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_I_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_I_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_I_BFu0i(Test_BFu15i_I_BFu0i, "BFu15i_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_I_BFu0ll()
{
  {
    init_simple_test("BFu15i_I_BFu0ll");
    static BFu15i_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_I_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_I_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_I_BFu0ll(Test_BFu15i_I_BFu0ll, "BFu15i_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_I_BFu0s()
{
  {
    init_simple_test("BFu15i_I_BFu0s");
    static BFu15i_I_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_I_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_I_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_I_BFu0s(Test_BFu15i_I_BFu0s, "BFu15i_I_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ip_BFu0c()
{
  {
    init_simple_test("BFu15i_Ip_BFu0c");
    static BFu15i_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ip_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ip_BFu0c(Test_BFu15i_Ip_BFu0c, "BFu15i_Ip_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ip_BFu0i()
{
  {
    init_simple_test("BFu15i_Ip_BFu0i");
    static BFu15i_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu15i_Ip_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ip_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ip_BFu0i(Test_BFu15i_Ip_BFu0i, "BFu15i_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ip_BFu0ll()
{
  {
    init_simple_test("BFu15i_Ip_BFu0ll");
    static BFu15i_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(BFu15i_Ip_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ip_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ip_BFu0ll(Test_BFu15i_Ip_BFu0ll, "BFu15i_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ip_BFu0s()
{
  {
    init_simple_test("BFu15i_Ip_BFu0s");
    static BFu15i_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_Ip_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ip_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ip_BFu0s(Test_BFu15i_Ip_BFu0s, "BFu15i_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_L_BFu0c()
{
  {
    init_simple_test("BFu15i_L_BFu0c");
    static BFu15i_L_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_L_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_L_BFu0c(Test_BFu15i_L_BFu0c, "BFu15i_L_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_L_BFu0i()
{
  {
    init_simple_test("BFu15i_L_BFu0i");
    static BFu15i_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(BFu15i_L_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_L_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_L_BFu0i(Test_BFu15i_L_BFu0i, "BFu15i_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_L_BFu0ll()
{
  {
    init_simple_test("BFu15i_L_BFu0ll");
    static BFu15i_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu15i_L_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_L_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_L_BFu0ll(Test_BFu15i_L_BFu0ll, "BFu15i_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_L_BFu0s()
{
  {
    init_simple_test("BFu15i_L_BFu0s");
    static BFu15i_L_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_L_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_L_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_L_BFu0s(Test_BFu15i_L_BFu0s, "BFu15i_L_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_S_BFu0c()
{
  {
    init_simple_test("BFu15i_S_BFu0c");
    static BFu15i_S_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_S_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_S_BFu0c(Test_BFu15i_S_BFu0c, "BFu15i_S_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_S_BFu0i()
{
  {
    init_simple_test("BFu15i_S_BFu0i");
    static BFu15i_S_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_S_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_S_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_S_BFu0i(Test_BFu15i_S_BFu0i, "BFu15i_S_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_S_BFu0ll()
{
  {
    init_simple_test("BFu15i_S_BFu0ll");
    static BFu15i_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_S_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_S_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_S_BFu0ll(Test_BFu15i_S_BFu0ll, "BFu15i_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_S_BFu0s()
{
  {
    init_simple_test("BFu15i_S_BFu0s");
    static BFu15i_S_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_S_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_S_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_S_BFu0s(Test_BFu15i_S_BFu0s, "BFu15i_S_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Uc_BFu0c()
{
  {
    init_simple_test("BFu15i_Uc_BFu0c");
    static BFu15i_Uc_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15i_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Uc_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Uc_BFu0c(Test_BFu15i_Uc_BFu0c, "BFu15i_Uc_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Uc_BFu0i()
{
  {
    init_simple_test("BFu15i_Uc_BFu0i");
    static BFu15i_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_Uc_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Uc_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Uc_BFu0i(Test_BFu15i_Uc_BFu0i, "BFu15i_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Uc_BFu0ll()
{
  {
    init_simple_test("BFu15i_Uc_BFu0ll");
    static BFu15i_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_Uc_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Uc_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Uc_BFu0ll(Test_BFu15i_Uc_BFu0ll, "BFu15i_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Uc_BFu0s()
{
  {
    init_simple_test("BFu15i_Uc_BFu0s");
    static BFu15i_Uc_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15i_Uc_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Uc_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Uc_BFu0s(Test_BFu15i_Uc_BFu0s, "BFu15i_Uc_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ui_BFu0c()
{
  {
    init_simple_test("BFu15i_Ui_BFu0c");
    static BFu15i_Ui_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ui_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ui_BFu0c(Test_BFu15i_Ui_BFu0c, "BFu15i_Ui_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ui_BFu0i()
{
  {
    init_simple_test("BFu15i_Ui_BFu0i");
    static BFu15i_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_Ui_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ui_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ui_BFu0i(Test_BFu15i_Ui_BFu0i, "BFu15i_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ui_BFu0ll()
{
  {
    init_simple_test("BFu15i_Ui_BFu0ll");
    static BFu15i_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(BFu15i_Ui_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ui_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ui_BFu0ll(Test_BFu15i_Ui_BFu0ll, "BFu15i_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ui_BFu0s()
{
  {
    init_simple_test("BFu15i_Ui_BFu0s");
    static BFu15i_Ui_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(BFu15i_Ui_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ui_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ui_BFu0s(Test_BFu15i_Ui_BFu0s, "BFu15i_Ui_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ul_BFu0c()
{
  {
    init_simple_test("BFu15i_Ul_BFu0c");
    static BFu15i_Ul_BFu0c lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ul_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ul_BFu0c(Test_BFu15i_Ul_BFu0c, "BFu15i_Ul_BFu0c", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ul_BFu0i()
{
  {
    init_simple_test("BFu15i_Ul_BFu0i");
    static BFu15i_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(BFu15i_Ul_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ul_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ul_BFu0i(Test_BFu15i_Ul_BFu0i, "BFu15i_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ul_BFu0ll()
{
  {
    init_simple_test("BFu15i_Ul_BFu0ll");
    static BFu15i_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(BFu15i_Ul_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ul_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ul_BFu0ll(Test_BFu15i_Ul_BFu0ll, "BFu15i_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Ul_BFu0s()
{
  {
    init_simple_test("BFu15i_Ul_BFu0s");
    static BFu15i_Ul_BFu0s lv;
    check2(sizeof(lv), 10, "sizeof(BFu15i_Ul_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Ul_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Ul_BFu0s(Test_BFu15i_Ul_BFu0s, "BFu15i_Ul_BFu0s", 10);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Us_BFu0c()
{
  {
    init_simple_test("BFu15i_Us_BFu0c");
    static BFu15i_Us_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Us_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Us_BFu0c(Test_BFu15i_Us_BFu0c, "BFu15i_Us_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Us_BFu0i()
{
  {
    init_simple_test("BFu15i_Us_BFu0i");
    static BFu15i_Us_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_Us_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Us_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Us_BFu0i(Test_BFu15i_Us_BFu0i, "BFu15i_Us_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Us_BFu0ll()
{
  {
    init_simple_test("BFu15i_Us_BFu0ll");
    static BFu15i_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15i_Us_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Us_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Us_BFu0ll(Test_BFu15i_Us_BFu0ll, "BFu15i_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Us_BFu0s()
{
  {
    init_simple_test("BFu15i_Us_BFu0s");
    static BFu15i_Us_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15i_Us_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Us_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Us_BFu0s(Test_BFu15i_Us_BFu0s, "BFu15i_Us_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Vp_BFu0c()
{
  {
    init_simple_test("BFu15i_Vp_BFu0c");
    static BFu15i_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15i_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Vp_BFu0c");
    check_field_offset(lv, v2, 2, "BFu15i_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Vp_BFu0c(Test_BFu15i_Vp_BFu0c, "BFu15i_Vp_BFu0c", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Vp_BFu0i()
{
  {
    init_simple_test("BFu15i_Vp_BFu0i");
    static BFu15i_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(BFu15i_Vp_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Vp_BFu0i");
    check_field_offset(lv, v2, 2, "BFu15i_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Vp_BFu0i(Test_BFu15i_Vp_BFu0i, "BFu15i_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Vp_BFu0ll()
{
  {
    init_simple_test("BFu15i_Vp_BFu0ll");
    static BFu15i_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(BFu15i_Vp_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Vp_BFu0ll");
    check_field_offset(lv, v2, 2, "BFu15i_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Vp_BFu0ll(Test_BFu15i_Vp_BFu0ll, "BFu15i_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15i_Vp_BFu0s()
{
  {
    init_simple_test("BFu15i_Vp_BFu0s");
    static BFu15i_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(BFu15i_Vp_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15i_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15i_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15i_Vp_BFu0s");
    check_field_offset(lv, v2, 2, "BFu15i_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vBFu15i_Vp_BFu0s(Test_BFu15i_Vp_BFu0s, "BFu15i_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c()
{
  {
    init_simple_test("BFu15ll_BFu0c");
    static BFu15ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c(Test_BFu15ll_BFu0c, "BFu15ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu0c()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu0c");
    static BFu15ll_BFu0c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(BFu15ll_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu0c(Test_BFu15ll_BFu0c_BFu0c, "BFu15ll_BFu0c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu0i()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu0i");
    static BFu15ll_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(BFu15ll_BFu0c_BFu0i)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15ll_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu0i(Test_BFu15ll_BFu0c_BFu0i, "BFu15ll_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu0ll()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu0ll");
    static BFu15ll_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(BFu15ll_BFu0c_BFu0ll)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15ll_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu0ll(Test_BFu15ll_BFu0c_BFu0ll, "BFu15ll_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu0s()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu0s");
    static BFu15ll_BFu0c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(BFu15ll_BFu0c_BFu0s)");
    check2(__alignof__(lv), ABISELECT(1,1), "__alignof__(BFu15ll_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu0s(Test_BFu15ll_BFu0c_BFu0s, "BFu15ll_BFu0c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu15i()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu15i");
    static BFu15ll_BFu0c_BFu15i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15ll_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu15ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu15i(Test_BFu15ll_BFu0c_BFu15i, "BFu15ll_BFu0c_BFu15i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu15ll()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu15ll");
    static BFu15ll_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu15ll_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu15ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu15ll(Test_BFu15ll_BFu0c_BFu15ll, "BFu15ll_BFu0c_BFu15ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu15s()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu15s");
    static BFu15ll_BFu0c_BFu15s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15ll_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, 1, "BFu15ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 2, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu15s(Test_BFu15ll_BFu0c_BFu15s, "BFu15ll_BFu0c_BFu15s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu16i()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu16i");
    static BFu15ll_BFu0c_BFu16i lv;
    check2(sizeof(lv), 4, "sizeof(BFu15ll_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu15ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu15ll_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu16i(Test_BFu15ll_BFu0c_BFu16i, "BFu15ll_BFu0c_BFu16i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu16ll()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu16ll");
    static BFu15ll_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 4, "sizeof(BFu15ll_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu15ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu15ll_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu16ll(Test_BFu15ll_BFu0c_BFu16ll, "BFu15ll_BFu0c_BFu16ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu16s()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu16s");
    static BFu15ll_BFu0c_BFu16s lv;
    check2(sizeof(lv), 4, "sizeof(BFu15ll_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, 1, "BFu15ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 2, 0, 16, hide_ull(1LL<<15), "BFu15ll_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu16s(Test_BFu15ll_BFu0c_BFu16s, "BFu15ll_BFu0c_BFu16s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu17i()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu17i");
    static BFu15ll_BFu0c_BFu17i lv;
    check2(sizeof(lv), 5, "sizeof(BFu15ll_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu15ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu15ll_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu17i(Test_BFu15ll_BFu0c_BFu17i, "BFu15ll_BFu0c_BFu17i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu17ll()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu17ll");
    static BFu15ll_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 5, "sizeof(BFu15ll_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, 1, "BFu15ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 2, 0, 17, hide_ull(1LL<<16), "BFu15ll_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu17ll(Test_BFu15ll_BFu0c_BFu17ll, "BFu15ll_BFu0c_BFu17ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu1c()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu1c");
    static BFu15ll_BFu0c_BFu1c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15ll_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15ll_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu1c(Test_BFu15ll_BFu0c_BFu1c, "BFu15ll_BFu0c_BFu1c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu1i()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu1i");
    static BFu15ll_BFu0c_BFu1i lv;
    check2(sizeof(lv), 3, "sizeof(BFu15ll_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15ll_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu1i(Test_BFu15ll_BFu0c_BFu1i, "BFu15ll_BFu0c_BFu1i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu1ll()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu1ll");
    static BFu15ll_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 3, "sizeof(BFu15ll_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15ll_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu1ll(Test_BFu15ll_BFu0c_BFu1ll, "BFu15ll_BFu0c_BFu1ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu1s()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu1s");
    static BFu15ll_BFu0c_BFu1s lv;
    check2(sizeof(lv), 3, "sizeof(BFu15ll_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, 2, 0, 1, 1, "BFu15ll_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu1s(Test_BFu15ll_BFu0c_BFu1s, "BFu15ll_BFu0c_BFu1s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu31i()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu31i");
    static BFu15ll_BFu0c_BFu31i lv;
    check2(sizeof(lv), 6, "sizeof(BFu15ll_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu15ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu15ll_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu31i(Test_BFu15ll_BFu0c_BFu31i, "BFu15ll_BFu0c_BFu31i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu31ll()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu31ll");
    static BFu15ll_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu15ll_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, 1, "BFu15ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 2, 0, 31, hide_ull(1LL<<30), "BFu15ll_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu31ll(Test_BFu15ll_BFu0c_BFu31ll, "BFu15ll_BFu0c_BFu31ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu32i()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu32i");
    static BFu15ll_BFu0c_BFu32i lv;
    check2(sizeof(lv), 6, "sizeof(BFu15ll_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu15ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu15ll_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu32i(Test_BFu15ll_BFu0c_BFu32i, "BFu15ll_BFu0c_BFu32i", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu32ll()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu32ll");
    static BFu15ll_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 6, "sizeof(BFu15ll_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, 1, "BFu15ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 2, 0, 32, hide_ull(1LL<<31), "BFu15ll_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu32ll(Test_BFu15ll_BFu0c_BFu32ll, "BFu15ll_BFu0c_BFu32ll", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu33()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu33");
    static BFu15ll_BFu0c_BFu33 lv;
    check2(sizeof(lv), 7, "sizeof(BFu15ll_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, 1, "BFu15ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 2, 0, 33, hide_ull(1LL<<32), "BFu15ll_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu33(Test_BFu15ll_BFu0c_BFu33, "BFu15ll_BFu0c_BFu33", 7);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu7c()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu7c");
    static BFu15ll_BFu0c_BFu7c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15ll_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15ll_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu7c(Test_BFu15ll_BFu0c_BFu7c, "BFu15ll_BFu0c_BFu7c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu7i()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu7i");
    static BFu15ll_BFu0c_BFu7i lv;
    check2(sizeof(lv), 3, "sizeof(BFu15ll_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15ll_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu7i(Test_BFu15ll_BFu0c_BFu7i, "BFu15ll_BFu0c_BFu7i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu7ll()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu7ll");
    static BFu15ll_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 3, "sizeof(BFu15ll_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15ll_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu7ll(Test_BFu15ll_BFu0c_BFu7ll, "BFu15ll_BFu0c_BFu7ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu7s()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu7s");
    static BFu15ll_BFu0c_BFu7s lv;
    check2(sizeof(lv), 3, "sizeof(BFu15ll_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, 1, "BFu15ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 2, 0, 7, hide_ull(1LL<<6), "BFu15ll_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu7s(Test_BFu15ll_BFu0c_BFu7s, "BFu15ll_BFu0c_BFu7s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu8c()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu8c");
    static BFu15ll_BFu0c_BFu8c lv;
    check2(sizeof(lv), 3, "sizeof(BFu15ll_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu15ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu15ll_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu8c(Test_BFu15ll_BFu0c_BFu8c, "BFu15ll_BFu0c_BFu8c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_BFu15ll_BFu0c_BFu8i()
{
  {
    init_simple_test("BFu15ll_BFu0c_BFu8i");
    static BFu15ll_BFu0c_BFu8i lv;
    check2(sizeof(lv), 3, "sizeof(BFu15ll_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(BFu15ll_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 15, 1, "BFu15ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 15, hide_ull(1LL<<14), "BFu15ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, 1, "BFu15ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 2, 0, 8, hide_ull(1LL<<7), "BFu15ll_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vBFu15ll_BFu0c_BFu8i(Test_BFu15ll_BFu0c_BFu8i, "BFu15ll_BFu0c_BFu8i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

