// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
// RUN: c_compiler -c -o %t1.o -I "common" "common/testsuite.c"
// RUN: cxx_compiler cxx_rtti -c %s -I "common" -o %t2.o
// RUN: linker -o %t2%exeext  %t1.o %t2.o
// RUN: runtool %t2%exeext | checker "TEST PASSED"
#include "testsuite.h"
#ifdef __cplusplus
struct __attribute__((packed)) aBFu33_BFu0c_Vp { unsigned long long v1:33; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu33_BFu0i { unsigned long long v1:33; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu0c { unsigned long long v1:33; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu0i { unsigned long long v1:33; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu0ll { unsigned long long v1:33; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu0s { unsigned long long v1:33; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu15i { unsigned long long v1:33; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu15ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu15s { unsigned long long v1:33; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu16i { unsigned long long v1:33; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu16ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu16s { unsigned long long v1:33; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu17i { unsigned long long v1:33; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu17ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu1c { unsigned long long v1:33; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu1i { unsigned long long v1:33; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu1ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu1s { unsigned long long v1:33; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu31i { unsigned long long v1:33; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu31ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu32i { unsigned long long v1:33; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu32ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu33 { unsigned long long v1:33; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu7c { unsigned long long v1:33; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu7i { unsigned long long v1:33; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu7ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu7s { unsigned long long v1:33; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu8c { unsigned long long v1:33; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu8i { unsigned long long v1:33; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu8ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu8s { unsigned long long v1:33; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu9i { unsigned long long v1:33; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu9ll { unsigned long long v1:33; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu33_BFu0i_BFu9s { unsigned long long v1:33; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu33_BFu0i_C { unsigned long long v1:33; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu33_BFu0i_D { unsigned long long v1:33; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu33_BFu0i_F { unsigned long long v1:33; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu33_BFu0i_I { unsigned long long v1:33; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Ip { unsigned long long v1:33; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu33_BFu0i_L { unsigned long long v1:33; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu33_BFu0i_S { unsigned long long v1:33; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Uc { unsigned long long v1:33; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Ui { unsigned long long v1:33; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Ul { unsigned long long v1:33; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Us { unsigned long long v1:33; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu33_BFu0i_Vp { unsigned long long v1:33; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu33_BFu0ll { unsigned long long v1:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu0c { unsigned long long v1:33; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu0i { unsigned long long v1:33; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu0ll { unsigned long long v1:33; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu0s { unsigned long long v1:33; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu15i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu15ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu15s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu16i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu16ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu16s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu17i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu17ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu1c { unsigned long long v1:33; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu1i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu1ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu1s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu31i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu31ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu32i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu32ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu33 { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu7c { unsigned long long v1:33; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu7i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu7ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu7s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu8c { unsigned long long v1:33; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu8i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu8ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu8s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu9i { unsigned long long v1:33; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu9ll { unsigned long long v1:33; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu33_BFu0ll_BFu9s { unsigned long long v1:33; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu33_BFu0ll_C { unsigned long long v1:33; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_D { unsigned long long v1:33; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_F { unsigned long long v1:33; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_I { unsigned long long v1:33; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Ip { unsigned long long v1:33; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_L { unsigned long long v1:33; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_S { unsigned long long v1:33; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Uc { unsigned long long v1:33; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Ui { unsigned long long v1:33; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Ul { unsigned long long v1:33; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Us { unsigned long long v1:33; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu33_BFu0ll_Vp { unsigned long long v1:33; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu33_BFu0s { unsigned long long v1:33; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu0c { unsigned long long v1:33; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu0i { unsigned long long v1:33; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu0ll { unsigned long long v1:33; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu0s { unsigned long long v1:33; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu15i { unsigned long long v1:33; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu15ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu15s { unsigned long long v1:33; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu16i { unsigned long long v1:33; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu16ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu16s { unsigned long long v1:33; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu17i { unsigned long long v1:33; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu17ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu1c { unsigned long long v1:33; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu1i { unsigned long long v1:33; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu1ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu1s { unsigned long long v1:33; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu31i { unsigned long long v1:33; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu31ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu32i { unsigned long long v1:33; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu32ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu33 { unsigned long long v1:33; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu7c { unsigned long long v1:33; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu7i { unsigned long long v1:33; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu7ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu7s { unsigned long long v1:33; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu8c { unsigned long long v1:33; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu8i { unsigned long long v1:33; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu8ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu8s { unsigned long long v1:33; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu9i { unsigned long long v1:33; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu9ll { unsigned long long v1:33; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu33_BFu0s_BFu9s { unsigned long long v1:33; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu33_BFu0s_C { unsigned long long v1:33; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu33_BFu0s_D { unsigned long long v1:33; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu33_BFu0s_F { unsigned long long v1:33; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu33_BFu0s_I { unsigned long long v1:33; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Ip { unsigned long long v1:33; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu33_BFu0s_L { unsigned long long v1:33; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu33_BFu0s_S { unsigned long long v1:33; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Uc { unsigned long long v1:33; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Ui { unsigned long long v1:33; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Ul { unsigned long long v1:33; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Us { unsigned long long v1:33; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu33_BFu0s_Vp { unsigned long long v1:33; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu33_BFu15i_BFu0c { unsigned long long v1:33; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu15i_BFu0i { unsigned long long v1:33; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu15i_BFu0ll { unsigned long long v1:33; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu15i_BFu0s { unsigned long long v1:33; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu15ll_BFu0c { unsigned long long v1:33; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu15ll_BFu0i { unsigned long long v1:33; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu15ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu15ll_BFu0s { unsigned long long v1:33; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu15s_BFu0c { unsigned long long v1:33; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu15s_BFu0i { unsigned long long v1:33; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu15s_BFu0ll { unsigned long long v1:33; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu15s_BFu0s { unsigned long long v1:33; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu16i_BFu0c { unsigned long long v1:33; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu16i_BFu0i { unsigned long long v1:33; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu16i_BFu0ll { unsigned long long v1:33; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu16i_BFu0s { unsigned long long v1:33; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu16ll_BFu0c { unsigned long long v1:33; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu16ll_BFu0i { unsigned long long v1:33; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu16ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu16ll_BFu0s { unsigned long long v1:33; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu16s_BFu0c { unsigned long long v1:33; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu16s_BFu0i { unsigned long long v1:33; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu16s_BFu0ll { unsigned long long v1:33; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu16s_BFu0s { unsigned long long v1:33; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu17i_BFu0c { unsigned long long v1:33; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu17i_BFu0i { unsigned long long v1:33; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu17i_BFu0ll { unsigned long long v1:33; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu17i_BFu0s { unsigned long long v1:33; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu17ll_BFu0c { unsigned long long v1:33; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu17ll_BFu0i { unsigned long long v1:33; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu17ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu17ll_BFu0s { unsigned long long v1:33; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu1c_BFu0c { unsigned long long v1:33; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu1c_BFu0i { unsigned long long v1:33; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu1c_BFu0ll { unsigned long long v1:33; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu1c_BFu0s { unsigned long long v1:33; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu1i_BFu0c { unsigned long long v1:33; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu1i_BFu0i { unsigned long long v1:33; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu1i_BFu0ll { unsigned long long v1:33; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu1i_BFu0s { unsigned long long v1:33; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu1ll_BFu0c { unsigned long long v1:33; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu1ll_BFu0i { unsigned long long v1:33; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu1ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu1ll_BFu0s { unsigned long long v1:33; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu1s_BFu0c { unsigned long long v1:33; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu1s_BFu0i { unsigned long long v1:33; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu1s_BFu0ll { unsigned long long v1:33; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu1s_BFu0s { unsigned long long v1:33; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu31i_BFu0c { unsigned long long v1:33; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu31i_BFu0i { unsigned long long v1:33; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu31i_BFu0ll { unsigned long long v1:33; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu31i_BFu0s { unsigned long long v1:33; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu31ll_BFu0c { unsigned long long v1:33; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu31ll_BFu0i { unsigned long long v1:33; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu31ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu31ll_BFu0s { unsigned long long v1:33; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu32i_BFu0c { unsigned long long v1:33; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu32i_BFu0i { unsigned long long v1:33; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu32i_BFu0ll { unsigned long long v1:33; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu32i_BFu0s { unsigned long long v1:33; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu32ll_BFu0c { unsigned long long v1:33; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu32ll_BFu0i { unsigned long long v1:33; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu32ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu32ll_BFu0s { unsigned long long v1:33; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu33_BFu0c { unsigned long long v1:33; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu33_BFu0i { unsigned long long v1:33; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu33_BFu0ll { unsigned long long v1:33; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu33_BFu0s { unsigned long long v1:33; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu7c_BFu0c { unsigned long long v1:33; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu7c_BFu0i { unsigned long long v1:33; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu7c_BFu0ll { unsigned long long v1:33; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu7c_BFu0s { unsigned long long v1:33; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu7i_BFu0c { unsigned long long v1:33; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu7i_BFu0i { unsigned long long v1:33; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu7i_BFu0ll { unsigned long long v1:33; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu7i_BFu0s { unsigned long long v1:33; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu7ll_BFu0c { unsigned long long v1:33; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu7ll_BFu0i { unsigned long long v1:33; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu7ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu7ll_BFu0s { unsigned long long v1:33; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu7s_BFu0c { unsigned long long v1:33; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu7s_BFu0i { unsigned long long v1:33; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu7s_BFu0ll { unsigned long long v1:33; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu7s_BFu0s { unsigned long long v1:33; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu8c_BFu0c { unsigned long long v1:33; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu8c_BFu0i { unsigned long long v1:33; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu8c_BFu0ll { unsigned long long v1:33; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu8c_BFu0s { unsigned long long v1:33; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu8i_BFu0c { unsigned long long v1:33; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu8i_BFu0i { unsigned long long v1:33; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu8i_BFu0ll { unsigned long long v1:33; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu8i_BFu0s { unsigned long long v1:33; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu8ll_BFu0c { unsigned long long v1:33; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu8ll_BFu0i { unsigned long long v1:33; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu8ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu8ll_BFu0s { unsigned long long v1:33; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu8s_BFu0c { unsigned long long v1:33; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu8s_BFu0i { unsigned long long v1:33; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu8s_BFu0ll { unsigned long long v1:33; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu8s_BFu0s { unsigned long long v1:33; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu9i_BFu0c { unsigned long long v1:33; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu9i_BFu0i { unsigned long long v1:33; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu9i_BFu0ll { unsigned long long v1:33; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu9i_BFu0s { unsigned long long v1:33; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu9ll_BFu0c { unsigned long long v1:33; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu9ll_BFu0i { unsigned long long v1:33; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu9ll_BFu0ll { unsigned long long v1:33; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu9ll_BFu0s { unsigned long long v1:33; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu33_BFu9s_BFu0c { unsigned long long v1:33; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu33_BFu9s_BFu0i { unsigned long long v1:33; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu33_BFu9s_BFu0ll { unsigned long long v1:33; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_BFu9s_BFu0s { unsigned long long v1:33; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu33_C_BFu0c { unsigned long long v1:33; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_C_BFu0i { unsigned long long v1:33; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_C_BFu0ll { unsigned long long v1:33; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_C_BFu0s { unsigned long long v1:33; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_D_BFu0c { unsigned long long v1:33; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_D_BFu0i { unsigned long long v1:33; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_D_BFu0ll { unsigned long long v1:33; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_D_BFu0s { unsigned long long v1:33; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_F_BFu0c { unsigned long long v1:33; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_F_BFu0i { unsigned long long v1:33; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_F_BFu0ll { unsigned long long v1:33; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_F_BFu0s { unsigned long long v1:33; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_I_BFu0c { unsigned long long v1:33; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_I_BFu0i { unsigned long long v1:33; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_I_BFu0ll { unsigned long long v1:33; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_I_BFu0s { unsigned long long v1:33; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Ip_BFu0c { unsigned long long v1:33; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Ip_BFu0i { unsigned long long v1:33; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Ip_BFu0ll { unsigned long long v1:33; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Ip_BFu0s { unsigned long long v1:33; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_L_BFu0c { unsigned long long v1:33; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_L_BFu0i { unsigned long long v1:33; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_L_BFu0ll { unsigned long long v1:33; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_L_BFu0s { unsigned long long v1:33; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_S_BFu0c { unsigned long long v1:33; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_S_BFu0i { unsigned long long v1:33; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_S_BFu0ll { unsigned long long v1:33; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_S_BFu0s { unsigned long long v1:33; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Uc_BFu0c { unsigned long long v1:33; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Uc_BFu0i { unsigned long long v1:33; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Uc_BFu0ll { unsigned long long v1:33; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Uc_BFu0s { unsigned long long v1:33; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Ui_BFu0c { unsigned long long v1:33; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Ui_BFu0i { unsigned long long v1:33; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Ui_BFu0ll { unsigned long long v1:33; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Ui_BFu0s { unsigned long long v1:33; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Ul_BFu0c { unsigned long long v1:33; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Ul_BFu0i { unsigned long long v1:33; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Ul_BFu0ll { unsigned long long v1:33; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Ul_BFu0s { unsigned long long v1:33; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Us_BFu0c { unsigned long long v1:33; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Us_BFu0i { unsigned long long v1:33; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Us_BFu0ll { unsigned long long v1:33; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Us_BFu0s { unsigned long long v1:33; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu33_Vp_BFu0c { unsigned long long v1:33; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu33_Vp_BFu0i { unsigned long long v1:33; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu33_Vp_BFu0ll { unsigned long long v1:33; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu33_Vp_BFu0s { unsigned long long v1:33; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0c { unsigned char v1:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu0c { unsigned char v1:7; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu0i { unsigned char v1:7; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu0ll { unsigned char v1:7; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu0s { unsigned char v1:7; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu15i { unsigned char v1:7; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu15ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu15s { unsigned char v1:7; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu16i { unsigned char v1:7; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu16ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu16s { unsigned char v1:7; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu17i { unsigned char v1:7; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu17ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu1c { unsigned char v1:7; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu1i { unsigned char v1:7; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu1ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu1s { unsigned char v1:7; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu31i { unsigned char v1:7; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu31ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu32i { unsigned char v1:7; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu32ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu33 { unsigned char v1:7; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu7c { unsigned char v1:7; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu7i { unsigned char v1:7; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu7ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu7s { unsigned char v1:7; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu8c { unsigned char v1:7; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu8i { unsigned char v1:7; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu8ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu8s { unsigned char v1:7; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu9i { unsigned char v1:7; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu9ll { unsigned char v1:7; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0c_BFu9s { unsigned char v1:7; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0c_C { unsigned char v1:7; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_D { unsigned char v1:7; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_F { unsigned char v1:7; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_I { unsigned char v1:7; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Ip { unsigned char v1:7; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_L { unsigned char v1:7; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_S { unsigned char v1:7; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Uc { unsigned char v1:7; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Ui { unsigned char v1:7; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Ul { unsigned char v1:7; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Us { unsigned char v1:7; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7c_BFu0c_Vp { unsigned char v1:7; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu7c_BFu0i { unsigned char v1:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu0c { unsigned char v1:7; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu0i { unsigned char v1:7; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu0ll { unsigned char v1:7; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu0s { unsigned char v1:7; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu15i { unsigned char v1:7; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu15ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu15s { unsigned char v1:7; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu16i { unsigned char v1:7; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu16ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu16s { unsigned char v1:7; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu17i { unsigned char v1:7; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu17ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu1c { unsigned char v1:7; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu1i { unsigned char v1:7; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu1ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu1s { unsigned char v1:7; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu31i { unsigned char v1:7; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu31ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu32i { unsigned char v1:7; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu32ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu33 { unsigned char v1:7; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu7c { unsigned char v1:7; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu7i { unsigned char v1:7; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu7ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu7s { unsigned char v1:7; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu8c { unsigned char v1:7; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu8i { unsigned char v1:7; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu8ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu8s { unsigned char v1:7; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu9i { unsigned char v1:7; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu9ll { unsigned char v1:7; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0i_BFu9s { unsigned char v1:7; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0i_C { unsigned char v1:7; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_D { unsigned char v1:7; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_F { unsigned char v1:7; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_I { unsigned char v1:7; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Ip { unsigned char v1:7; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_L { unsigned char v1:7; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_S { unsigned char v1:7; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Uc { unsigned char v1:7; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Ui { unsigned char v1:7; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Ul { unsigned char v1:7; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Us { unsigned char v1:7; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7c_BFu0i_Vp { unsigned char v1:7; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll { unsigned char v1:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu0c { unsigned char v1:7; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu0i { unsigned char v1:7; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu0ll { unsigned char v1:7; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu0s { unsigned char v1:7; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu15i { unsigned char v1:7; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu15ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu15s { unsigned char v1:7; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu16i { unsigned char v1:7; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu16ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu16s { unsigned char v1:7; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu17i { unsigned char v1:7; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu17ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu1c { unsigned char v1:7; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu1i { unsigned char v1:7; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu1ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu1s { unsigned char v1:7; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu31i { unsigned char v1:7; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu31ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu32i { unsigned char v1:7; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu32ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu33 { unsigned char v1:7; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu7c { unsigned char v1:7; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu7i { unsigned char v1:7; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu7ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu7s { unsigned char v1:7; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu8c { unsigned char v1:7; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu8i { unsigned char v1:7; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu8ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu8s { unsigned char v1:7; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu9i { unsigned char v1:7; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu9ll { unsigned char v1:7; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0ll_BFu9s { unsigned char v1:7; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0ll_C { unsigned char v1:7; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_D { unsigned char v1:7; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_F { unsigned char v1:7; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_I { unsigned char v1:7; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Ip { unsigned char v1:7; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_L { unsigned char v1:7; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_S { unsigned char v1:7; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Uc { unsigned char v1:7; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Ui { unsigned char v1:7; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Ul { unsigned char v1:7; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Us { unsigned char v1:7; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7c_BFu0ll_Vp { unsigned char v1:7; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu7c_BFu0s { unsigned char v1:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu0c { unsigned char v1:7; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu0i { unsigned char v1:7; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu0ll { unsigned char v1:7; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu0s { unsigned char v1:7; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu15i { unsigned char v1:7; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu15ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu15s { unsigned char v1:7; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu16i { unsigned char v1:7; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu16ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu16s { unsigned char v1:7; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu17i { unsigned char v1:7; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu17ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu1c { unsigned char v1:7; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu1i { unsigned char v1:7; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu1ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu1s { unsigned char v1:7; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu31i { unsigned char v1:7; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu31ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu32i { unsigned char v1:7; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu32ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu33 { unsigned char v1:7; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu7c { unsigned char v1:7; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu7i { unsigned char v1:7; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu7ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu7s { unsigned char v1:7; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu8c { unsigned char v1:7; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu8i { unsigned char v1:7; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu8ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu8s { unsigned char v1:7; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu9i { unsigned char v1:7; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu9ll { unsigned char v1:7; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0s_BFu9s { unsigned char v1:7; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7c_BFu0s_C { unsigned char v1:7; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_D { unsigned char v1:7; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_F { unsigned char v1:7; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_I { unsigned char v1:7; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Ip { unsigned char v1:7; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_L { unsigned char v1:7; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_S { unsigned char v1:7; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Uc { unsigned char v1:7; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Ui { unsigned char v1:7; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Ul { unsigned char v1:7; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Us { unsigned char v1:7; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7c_BFu0s_Vp { unsigned char v1:7; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu7c_BFu15i_BFu0c { unsigned char v1:7; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu15i_BFu0i { unsigned char v1:7; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu15i_BFu0ll { unsigned char v1:7; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu15i_BFu0s { unsigned char v1:7; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu15ll_BFu0c { unsigned char v1:7; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu15ll_BFu0i { unsigned char v1:7; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu15ll_BFu0ll { unsigned char v1:7; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu15ll_BFu0s { unsigned char v1:7; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu15s_BFu0c { unsigned char v1:7; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu15s_BFu0i { unsigned char v1:7; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu15s_BFu0ll { unsigned char v1:7; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu15s_BFu0s { unsigned char v1:7; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu16i_BFu0c { unsigned char v1:7; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu16i_BFu0i { unsigned char v1:7; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu16i_BFu0ll { unsigned char v1:7; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu16i_BFu0s { unsigned char v1:7; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu16ll_BFu0c { unsigned char v1:7; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu16ll_BFu0i { unsigned char v1:7; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu16ll_BFu0ll { unsigned char v1:7; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu16ll_BFu0s { unsigned char v1:7; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu16s_BFu0c { unsigned char v1:7; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu16s_BFu0i { unsigned char v1:7; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu16s_BFu0ll { unsigned char v1:7; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu16s_BFu0s { unsigned char v1:7; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu17i_BFu0c { unsigned char v1:7; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu17i_BFu0i { unsigned char v1:7; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu17i_BFu0ll { unsigned char v1:7; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu17i_BFu0s { unsigned char v1:7; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu17ll_BFu0c { unsigned char v1:7; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu17ll_BFu0i { unsigned char v1:7; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu17ll_BFu0ll { unsigned char v1:7; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu17ll_BFu0s { unsigned char v1:7; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu1c_BFu0c { unsigned char v1:7; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu1c_BFu0i { unsigned char v1:7; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu1c_BFu0ll { unsigned char v1:7; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu1c_BFu0s { unsigned char v1:7; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu1i_BFu0c { unsigned char v1:7; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu1i_BFu0i { unsigned char v1:7; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu1i_BFu0ll { unsigned char v1:7; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu1i_BFu0s { unsigned char v1:7; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu1ll_BFu0c { unsigned char v1:7; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu1ll_BFu0i { unsigned char v1:7; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu1ll_BFu0ll { unsigned char v1:7; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu1ll_BFu0s { unsigned char v1:7; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu1s_BFu0c { unsigned char v1:7; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu1s_BFu0i { unsigned char v1:7; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu1s_BFu0ll { unsigned char v1:7; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu1s_BFu0s { unsigned char v1:7; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu31i_BFu0c { unsigned char v1:7; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu31i_BFu0i { unsigned char v1:7; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu31i_BFu0ll { unsigned char v1:7; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu31i_BFu0s { unsigned char v1:7; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu31ll_BFu0c { unsigned char v1:7; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu31ll_BFu0i { unsigned char v1:7; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu31ll_BFu0ll { unsigned char v1:7; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu31ll_BFu0s { unsigned char v1:7; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu32i_BFu0c { unsigned char v1:7; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu32i_BFu0i { unsigned char v1:7; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu32i_BFu0ll { unsigned char v1:7; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu32i_BFu0s { unsigned char v1:7; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu32ll_BFu0c { unsigned char v1:7; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu32ll_BFu0i { unsigned char v1:7; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu32ll_BFu0ll { unsigned char v1:7; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu32ll_BFu0s { unsigned char v1:7; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu33_BFu0c { unsigned char v1:7; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu33_BFu0i { unsigned char v1:7; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu33_BFu0ll { unsigned char v1:7; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu33_BFu0s { unsigned char v1:7; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu7c_BFu0c { unsigned char v1:7; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu7c_BFu0i { unsigned char v1:7; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu7c_BFu0ll { unsigned char v1:7; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu7c_BFu0s { unsigned char v1:7; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu7i_BFu0c { unsigned char v1:7; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu7i_BFu0i { unsigned char v1:7; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu7i_BFu0ll { unsigned char v1:7; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu7i_BFu0s { unsigned char v1:7; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu7ll_BFu0c { unsigned char v1:7; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu7ll_BFu0i { unsigned char v1:7; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu7ll_BFu0ll { unsigned char v1:7; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu7ll_BFu0s { unsigned char v1:7; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu7s_BFu0c { unsigned char v1:7; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu7s_BFu0i { unsigned char v1:7; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu7s_BFu0ll { unsigned char v1:7; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu7s_BFu0s { unsigned char v1:7; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu8c_BFu0c { unsigned char v1:7; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu8c_BFu0i { unsigned char v1:7; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu8c_BFu0ll { unsigned char v1:7; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu8c_BFu0s { unsigned char v1:7; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu8i_BFu0c { unsigned char v1:7; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu8i_BFu0i { unsigned char v1:7; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu8i_BFu0ll { unsigned char v1:7; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu8i_BFu0s { unsigned char v1:7; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu8ll_BFu0c { unsigned char v1:7; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu8ll_BFu0i { unsigned char v1:7; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu8ll_BFu0ll { unsigned char v1:7; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu8ll_BFu0s { unsigned char v1:7; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu8s_BFu0c { unsigned char v1:7; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu8s_BFu0i { unsigned char v1:7; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu8s_BFu0ll { unsigned char v1:7; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu8s_BFu0s { unsigned char v1:7; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu9i_BFu0c { unsigned char v1:7; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu9i_BFu0i { unsigned char v1:7; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu9i_BFu0ll { unsigned char v1:7; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu9i_BFu0s { unsigned char v1:7; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu9ll_BFu0c { unsigned char v1:7; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu9ll_BFu0i { unsigned char v1:7; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu9ll_BFu0ll { unsigned char v1:7; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu9ll_BFu0s { unsigned char v1:7; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_BFu9s_BFu0c { unsigned char v1:7; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_BFu9s_BFu0i { unsigned char v1:7; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_BFu9s_BFu0ll { unsigned char v1:7; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_BFu9s_BFu0s { unsigned char v1:7; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_C_BFu0c { unsigned char v1:7; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_C_BFu0i { unsigned char v1:7; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_C_BFu0ll { unsigned char v1:7; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_C_BFu0s { unsigned char v1:7; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_D_BFu0c { unsigned char v1:7; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_D_BFu0i { unsigned char v1:7; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_D_BFu0ll { unsigned char v1:7; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_D_BFu0s { unsigned char v1:7; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_F_BFu0c { unsigned char v1:7; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_F_BFu0i { unsigned char v1:7; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_F_BFu0ll { unsigned char v1:7; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_F_BFu0s { unsigned char v1:7; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_I_BFu0c { unsigned char v1:7; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_I_BFu0i { unsigned char v1:7; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_I_BFu0ll { unsigned char v1:7; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_I_BFu0s { unsigned char v1:7; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Ip_BFu0c { unsigned char v1:7; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Ip_BFu0i { unsigned char v1:7; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Ip_BFu0ll { unsigned char v1:7; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Ip_BFu0s { unsigned char v1:7; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_L_BFu0c { unsigned char v1:7; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_L_BFu0i { unsigned char v1:7; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_L_BFu0ll { unsigned char v1:7; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_L_BFu0s { unsigned char v1:7; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_S_BFu0c { unsigned char v1:7; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_S_BFu0i { unsigned char v1:7; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_S_BFu0ll { unsigned char v1:7; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_S_BFu0s { unsigned char v1:7; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Uc_BFu0c { unsigned char v1:7; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Uc_BFu0i { unsigned char v1:7; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Uc_BFu0ll { unsigned char v1:7; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Uc_BFu0s { unsigned char v1:7; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Ui_BFu0c { unsigned char v1:7; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Ui_BFu0i { unsigned char v1:7; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Ui_BFu0ll { unsigned char v1:7; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Ui_BFu0s { unsigned char v1:7; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Ul_BFu0c { unsigned char v1:7; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Ul_BFu0i { unsigned char v1:7; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Ul_BFu0ll { unsigned char v1:7; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Ul_BFu0s { unsigned char v1:7; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Us_BFu0c { unsigned char v1:7; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Us_BFu0i { unsigned char v1:7; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Us_BFu0ll { unsigned char v1:7; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Us_BFu0s { unsigned char v1:7; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7c_Vp_BFu0c { unsigned char v1:7; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7c_Vp_BFu0i { unsigned char v1:7; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7c_Vp_BFu0ll { unsigned char v1:7; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7c_Vp_BFu0s { unsigned char v1:7; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0c { unsigned int v1:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu0c { unsigned int v1:7; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu0i { unsigned int v1:7; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu0ll { unsigned int v1:7; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu0s { unsigned int v1:7; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu15i { unsigned int v1:7; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu15ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu15s { unsigned int v1:7; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu16i { unsigned int v1:7; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu16ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu16s { unsigned int v1:7; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu17i { unsigned int v1:7; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu17ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu1c { unsigned int v1:7; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu1i { unsigned int v1:7; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu1ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu1s { unsigned int v1:7; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu31i { unsigned int v1:7; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu31ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu32i { unsigned int v1:7; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu32ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu33 { unsigned int v1:7; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu7c { unsigned int v1:7; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu7i { unsigned int v1:7; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu7ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu7s { unsigned int v1:7; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu8c { unsigned int v1:7; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu8i { unsigned int v1:7; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu8ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu8s { unsigned int v1:7; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu9i { unsigned int v1:7; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu9ll { unsigned int v1:7; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0c_BFu9s { unsigned int v1:7; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0c_C { unsigned int v1:7; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_D { unsigned int v1:7; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_F { unsigned int v1:7; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_I { unsigned int v1:7; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Ip { unsigned int v1:7; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_L { unsigned int v1:7; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_S { unsigned int v1:7; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Uc { unsigned int v1:7; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Ui { unsigned int v1:7; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Ul { unsigned int v1:7; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Us { unsigned int v1:7; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7i_BFu0c_Vp { unsigned int v1:7; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu7i_BFu0i { unsigned int v1:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu0c { unsigned int v1:7; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu0i { unsigned int v1:7; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu0ll { unsigned int v1:7; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu0s { unsigned int v1:7; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu15i { unsigned int v1:7; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu15ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu15s { unsigned int v1:7; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu16i { unsigned int v1:7; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu16ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu16s { unsigned int v1:7; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu17i { unsigned int v1:7; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu17ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu1c { unsigned int v1:7; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu1i { unsigned int v1:7; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu1ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu1s { unsigned int v1:7; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu31i { unsigned int v1:7; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu31ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu32i { unsigned int v1:7; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu32ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu33 { unsigned int v1:7; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu7c { unsigned int v1:7; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu7i { unsigned int v1:7; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu7ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu7s { unsigned int v1:7; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu8c { unsigned int v1:7; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu8i { unsigned int v1:7; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu8ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu8s { unsigned int v1:7; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu9i { unsigned int v1:7; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu9ll { unsigned int v1:7; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0i_BFu9s { unsigned int v1:7; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0i_C { unsigned int v1:7; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_D { unsigned int v1:7; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_F { unsigned int v1:7; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_I { unsigned int v1:7; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Ip { unsigned int v1:7; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_L { unsigned int v1:7; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_S { unsigned int v1:7; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Uc { unsigned int v1:7; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Ui { unsigned int v1:7; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Ul { unsigned int v1:7; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Us { unsigned int v1:7; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7i_BFu0i_Vp { unsigned int v1:7; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll { unsigned int v1:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu0c { unsigned int v1:7; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu0i { unsigned int v1:7; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu0ll { unsigned int v1:7; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu0s { unsigned int v1:7; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu15i { unsigned int v1:7; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu15ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu15s { unsigned int v1:7; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu16i { unsigned int v1:7; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu16ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu16s { unsigned int v1:7; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu17i { unsigned int v1:7; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu17ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu1c { unsigned int v1:7; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu1i { unsigned int v1:7; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu1ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu1s { unsigned int v1:7; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu31i { unsigned int v1:7; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu31ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu32i { unsigned int v1:7; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu32ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu33 { unsigned int v1:7; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu7c { unsigned int v1:7; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu7i { unsigned int v1:7; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu7ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu7s { unsigned int v1:7; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu8c { unsigned int v1:7; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu8i { unsigned int v1:7; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu8ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu8s { unsigned int v1:7; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu9i { unsigned int v1:7; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu9ll { unsigned int v1:7; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0ll_BFu9s { unsigned int v1:7; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0ll_C { unsigned int v1:7; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_D { unsigned int v1:7; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_F { unsigned int v1:7; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_I { unsigned int v1:7; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Ip { unsigned int v1:7; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_L { unsigned int v1:7; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_S { unsigned int v1:7; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Uc { unsigned int v1:7; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Ui { unsigned int v1:7; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Ul { unsigned int v1:7; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Us { unsigned int v1:7; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7i_BFu0ll_Vp { unsigned int v1:7; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu7i_BFu0s { unsigned int v1:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu0c { unsigned int v1:7; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu0i { unsigned int v1:7; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu0ll { unsigned int v1:7; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu0s { unsigned int v1:7; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu15i { unsigned int v1:7; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu15ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu15s { unsigned int v1:7; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu16i { unsigned int v1:7; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu16ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu16s { unsigned int v1:7; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu17i { unsigned int v1:7; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu17ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu1c { unsigned int v1:7; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu1i { unsigned int v1:7; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu1ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu1s { unsigned int v1:7; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu31i { unsigned int v1:7; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu31ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu32i { unsigned int v1:7; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu32ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu33 { unsigned int v1:7; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu7c { unsigned int v1:7; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu7i { unsigned int v1:7; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu7ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu7s { unsigned int v1:7; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu8c { unsigned int v1:7; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu8i { unsigned int v1:7; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu8ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu8s { unsigned int v1:7; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu9i { unsigned int v1:7; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu9ll { unsigned int v1:7; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0s_BFu9s { unsigned int v1:7; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7i_BFu0s_C { unsigned int v1:7; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_D { unsigned int v1:7; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_F { unsigned int v1:7; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_I { unsigned int v1:7; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Ip { unsigned int v1:7; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_L { unsigned int v1:7; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_S { unsigned int v1:7; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Uc { unsigned int v1:7; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Ui { unsigned int v1:7; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Ul { unsigned int v1:7; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Us { unsigned int v1:7; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7i_BFu0s_Vp { unsigned int v1:7; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu7i_BFu15i_BFu0c { unsigned int v1:7; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu15i_BFu0i { unsigned int v1:7; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu15i_BFu0ll { unsigned int v1:7; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu15i_BFu0s { unsigned int v1:7; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu15ll_BFu0c { unsigned int v1:7; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu15ll_BFu0i { unsigned int v1:7; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu15ll_BFu0ll { unsigned int v1:7; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu15ll_BFu0s { unsigned int v1:7; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu15s_BFu0c { unsigned int v1:7; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu15s_BFu0i { unsigned int v1:7; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu15s_BFu0ll { unsigned int v1:7; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu15s_BFu0s { unsigned int v1:7; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu16i_BFu0c { unsigned int v1:7; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu16i_BFu0i { unsigned int v1:7; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu16i_BFu0ll { unsigned int v1:7; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu16i_BFu0s { unsigned int v1:7; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu16ll_BFu0c { unsigned int v1:7; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu16ll_BFu0i { unsigned int v1:7; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu16ll_BFu0ll { unsigned int v1:7; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu16ll_BFu0s { unsigned int v1:7; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu16s_BFu0c { unsigned int v1:7; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu16s_BFu0i { unsigned int v1:7; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu16s_BFu0ll { unsigned int v1:7; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu16s_BFu0s { unsigned int v1:7; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu17i_BFu0c { unsigned int v1:7; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu17i_BFu0i { unsigned int v1:7; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu17i_BFu0ll { unsigned int v1:7; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu17i_BFu0s { unsigned int v1:7; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu17ll_BFu0c { unsigned int v1:7; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu17ll_BFu0i { unsigned int v1:7; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu17ll_BFu0ll { unsigned int v1:7; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu17ll_BFu0s { unsigned int v1:7; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu1c_BFu0c { unsigned int v1:7; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu1c_BFu0i { unsigned int v1:7; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu1c_BFu0ll { unsigned int v1:7; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu1c_BFu0s { unsigned int v1:7; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu1i_BFu0c { unsigned int v1:7; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu1i_BFu0i { unsigned int v1:7; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu1i_BFu0ll { unsigned int v1:7; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu1i_BFu0s { unsigned int v1:7; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu1ll_BFu0c { unsigned int v1:7; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu1ll_BFu0i { unsigned int v1:7; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu1ll_BFu0ll { unsigned int v1:7; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu1ll_BFu0s { unsigned int v1:7; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu1s_BFu0c { unsigned int v1:7; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu1s_BFu0i { unsigned int v1:7; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu1s_BFu0ll { unsigned int v1:7; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu1s_BFu0s { unsigned int v1:7; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu31i_BFu0c { unsigned int v1:7; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu31i_BFu0i { unsigned int v1:7; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu31i_BFu0ll { unsigned int v1:7; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu31i_BFu0s { unsigned int v1:7; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu31ll_BFu0c { unsigned int v1:7; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu31ll_BFu0i { unsigned int v1:7; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu31ll_BFu0ll { unsigned int v1:7; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu31ll_BFu0s { unsigned int v1:7; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu32i_BFu0c { unsigned int v1:7; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu32i_BFu0i { unsigned int v1:7; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu32i_BFu0ll { unsigned int v1:7; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu32i_BFu0s { unsigned int v1:7; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu32ll_BFu0c { unsigned int v1:7; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu32ll_BFu0i { unsigned int v1:7; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu32ll_BFu0ll { unsigned int v1:7; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu32ll_BFu0s { unsigned int v1:7; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu33_BFu0c { unsigned int v1:7; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu33_BFu0i { unsigned int v1:7; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu33_BFu0ll { unsigned int v1:7; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu33_BFu0s { unsigned int v1:7; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu7c_BFu0c { unsigned int v1:7; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu7c_BFu0i { unsigned int v1:7; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu7c_BFu0ll { unsigned int v1:7; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu7c_BFu0s { unsigned int v1:7; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu7i_BFu0c { unsigned int v1:7; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu7i_BFu0i { unsigned int v1:7; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu7i_BFu0ll { unsigned int v1:7; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu7i_BFu0s { unsigned int v1:7; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu7ll_BFu0c { unsigned int v1:7; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu7ll_BFu0i { unsigned int v1:7; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu7ll_BFu0ll { unsigned int v1:7; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu7ll_BFu0s { unsigned int v1:7; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu7s_BFu0c { unsigned int v1:7; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu7s_BFu0i { unsigned int v1:7; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu7s_BFu0ll { unsigned int v1:7; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu7s_BFu0s { unsigned int v1:7; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu8c_BFu0c { unsigned int v1:7; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu8c_BFu0i { unsigned int v1:7; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu8c_BFu0ll { unsigned int v1:7; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu8c_BFu0s { unsigned int v1:7; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu8i_BFu0c { unsigned int v1:7; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu8i_BFu0i { unsigned int v1:7; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu8i_BFu0ll { unsigned int v1:7; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu8i_BFu0s { unsigned int v1:7; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu8ll_BFu0c { unsigned int v1:7; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu8ll_BFu0i { unsigned int v1:7; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu8ll_BFu0ll { unsigned int v1:7; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu8ll_BFu0s { unsigned int v1:7; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu8s_BFu0c { unsigned int v1:7; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu8s_BFu0i { unsigned int v1:7; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu8s_BFu0ll { unsigned int v1:7; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu8s_BFu0s { unsigned int v1:7; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu9i_BFu0c { unsigned int v1:7; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu9i_BFu0i { unsigned int v1:7; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu9i_BFu0ll { unsigned int v1:7; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu9i_BFu0s { unsigned int v1:7; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu9ll_BFu0c { unsigned int v1:7; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu9ll_BFu0i { unsigned int v1:7; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu9ll_BFu0ll { unsigned int v1:7; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu9ll_BFu0s { unsigned int v1:7; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_BFu9s_BFu0c { unsigned int v1:7; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_BFu9s_BFu0i { unsigned int v1:7; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_BFu9s_BFu0ll { unsigned int v1:7; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_BFu9s_BFu0s { unsigned int v1:7; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_C_BFu0c { unsigned int v1:7; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_C_BFu0i { unsigned int v1:7; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_C_BFu0ll { unsigned int v1:7; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_C_BFu0s { unsigned int v1:7; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_D_BFu0c { unsigned int v1:7; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_D_BFu0i { unsigned int v1:7; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_D_BFu0ll { unsigned int v1:7; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_D_BFu0s { unsigned int v1:7; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_F_BFu0c { unsigned int v1:7; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_F_BFu0i { unsigned int v1:7; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_F_BFu0ll { unsigned int v1:7; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_F_BFu0s { unsigned int v1:7; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_I_BFu0c { unsigned int v1:7; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_I_BFu0i { unsigned int v1:7; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_I_BFu0ll { unsigned int v1:7; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_I_BFu0s { unsigned int v1:7; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Ip_BFu0c { unsigned int v1:7; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Ip_BFu0i { unsigned int v1:7; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Ip_BFu0ll { unsigned int v1:7; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Ip_BFu0s { unsigned int v1:7; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_L_BFu0c { unsigned int v1:7; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_L_BFu0i { unsigned int v1:7; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_L_BFu0ll { unsigned int v1:7; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_L_BFu0s { unsigned int v1:7; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_S_BFu0c { unsigned int v1:7; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_S_BFu0i { unsigned int v1:7; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_S_BFu0ll { unsigned int v1:7; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_S_BFu0s { unsigned int v1:7; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Uc_BFu0c { unsigned int v1:7; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Uc_BFu0i { unsigned int v1:7; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Uc_BFu0ll { unsigned int v1:7; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Uc_BFu0s { unsigned int v1:7; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Ui_BFu0c { unsigned int v1:7; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Ui_BFu0i { unsigned int v1:7; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Ui_BFu0ll { unsigned int v1:7; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Ui_BFu0s { unsigned int v1:7; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Ul_BFu0c { unsigned int v1:7; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Ul_BFu0i { unsigned int v1:7; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Ul_BFu0ll { unsigned int v1:7; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Ul_BFu0s { unsigned int v1:7; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Us_BFu0c { unsigned int v1:7; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Us_BFu0i { unsigned int v1:7; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Us_BFu0ll { unsigned int v1:7; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Us_BFu0s { unsigned int v1:7; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7i_Vp_BFu0c { unsigned int v1:7; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7i_Vp_BFu0i { unsigned int v1:7; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7i_Vp_BFu0ll { unsigned int v1:7; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7i_Vp_BFu0s { unsigned int v1:7; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c { unsigned long long v1:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu0c { unsigned long long v1:7; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu0i { unsigned long long v1:7; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu0ll { unsigned long long v1:7; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu0s { unsigned long long v1:7; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu15i { unsigned long long v1:7; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu15ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu15s { unsigned long long v1:7; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu16i { unsigned long long v1:7; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu16ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu16s { unsigned long long v1:7; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu17i { unsigned long long v1:7; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu17ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu1c { unsigned long long v1:7; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu1i { unsigned long long v1:7; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu1ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu1s { unsigned long long v1:7; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu31i { unsigned long long v1:7; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu31ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu32i { unsigned long long v1:7; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu32ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu33 { unsigned long long v1:7; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu7c { unsigned long long v1:7; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu7i { unsigned long long v1:7; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu7ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu7s { unsigned long long v1:7; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu8c { unsigned long long v1:7; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu8i { unsigned long long v1:7; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu8ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu8s { unsigned long long v1:7; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu9i { unsigned long long v1:7; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu9ll { unsigned long long v1:7; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0c_BFu9s { unsigned long long v1:7; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0c_C { unsigned long long v1:7; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_D { unsigned long long v1:7; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_F { unsigned long long v1:7; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_I { unsigned long long v1:7; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Ip { unsigned long long v1:7; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_L { unsigned long long v1:7; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_S { unsigned long long v1:7; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Uc { unsigned long long v1:7; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Ui { unsigned long long v1:7; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Ul { unsigned long long v1:7; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Us { unsigned long long v1:7; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0c_Vp { unsigned long long v1:7; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i { unsigned long long v1:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu0c { unsigned long long v1:7; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu0i { unsigned long long v1:7; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu0ll { unsigned long long v1:7; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu0s { unsigned long long v1:7; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu15i { unsigned long long v1:7; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu15ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu15s { unsigned long long v1:7; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu16i { unsigned long long v1:7; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu16ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu16s { unsigned long long v1:7; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu17i { unsigned long long v1:7; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu17ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu1c { unsigned long long v1:7; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu1i { unsigned long long v1:7; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu1ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu1s { unsigned long long v1:7; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu31i { unsigned long long v1:7; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu31ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu32i { unsigned long long v1:7; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu32ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu33 { unsigned long long v1:7; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu7c { unsigned long long v1:7; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu7i { unsigned long long v1:7; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu7ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu7s { unsigned long long v1:7; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu8c { unsigned long long v1:7; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu8i { unsigned long long v1:7; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu8ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu8s { unsigned long long v1:7; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu9i { unsigned long long v1:7; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu9ll { unsigned long long v1:7; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0i_BFu9s { unsigned long long v1:7; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0i_C { unsigned long long v1:7; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_D { unsigned long long v1:7; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_F { unsigned long long v1:7; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_I { unsigned long long v1:7; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Ip { unsigned long long v1:7; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_L { unsigned long long v1:7; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_S { unsigned long long v1:7; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Uc { unsigned long long v1:7; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Ui { unsigned long long v1:7; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Ul { unsigned long long v1:7; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Us { unsigned long long v1:7; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0i_Vp { unsigned long long v1:7; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll { unsigned long long v1:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu0c { unsigned long long v1:7; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu0i { unsigned long long v1:7; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu0ll { unsigned long long v1:7; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu0s { unsigned long long v1:7; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu15i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu15ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu15s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu16i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu16ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu16s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu17i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu17ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu1c { unsigned long long v1:7; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu1i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu1ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu1s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu31i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu31ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu32i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu32ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu33 { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu7c { unsigned long long v1:7; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu7i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu7ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu7s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu8c { unsigned long long v1:7; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu8i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu8ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu8s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu9i { unsigned long long v1:7; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu9ll { unsigned long long v1:7; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_BFu9s { unsigned long long v1:7; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_C { unsigned long long v1:7; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_D { unsigned long long v1:7; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_F { unsigned long long v1:7; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_I { unsigned long long v1:7; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Ip { unsigned long long v1:7; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_L { unsigned long long v1:7; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_S { unsigned long long v1:7; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Uc { unsigned long long v1:7; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Ui { unsigned long long v1:7; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Ul { unsigned long long v1:7; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Us { unsigned long long v1:7; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0ll_Vp { unsigned long long v1:7; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s { unsigned long long v1:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu0c { unsigned long long v1:7; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu0i { unsigned long long v1:7; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu0ll { unsigned long long v1:7; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu0s { unsigned long long v1:7; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu15i { unsigned long long v1:7; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu15ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu15s { unsigned long long v1:7; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu16i { unsigned long long v1:7; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu16ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu16s { unsigned long long v1:7; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu17i { unsigned long long v1:7; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu17ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu1c { unsigned long long v1:7; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu1i { unsigned long long v1:7; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu1ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu1s { unsigned long long v1:7; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu31i { unsigned long long v1:7; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu31ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu32i { unsigned long long v1:7; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu32ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu33 { unsigned long long v1:7; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu7c { unsigned long long v1:7; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu7i { unsigned long long v1:7; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu7ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu7s { unsigned long long v1:7; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu8c { unsigned long long v1:7; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu8i { unsigned long long v1:7; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu8ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu8s { unsigned long long v1:7; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu9i { unsigned long long v1:7; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu9ll { unsigned long long v1:7; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0s_BFu9s { unsigned long long v1:7; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7ll_BFu0s_C { unsigned long long v1:7; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_D { unsigned long long v1:7; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_F { unsigned long long v1:7; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_I { unsigned long long v1:7; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Ip { unsigned long long v1:7; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_L { unsigned long long v1:7; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_S { unsigned long long v1:7; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Uc { unsigned long long v1:7; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Ui { unsigned long long v1:7; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Ul { unsigned long long v1:7; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Us { unsigned long long v1:7; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7ll_BFu0s_Vp { unsigned long long v1:7; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu7ll_BFu15i_BFu0c { unsigned long long v1:7; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu15i_BFu0i { unsigned long long v1:7; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu15i_BFu0ll { unsigned long long v1:7; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu15i_BFu0s { unsigned long long v1:7; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu15ll_BFu0c { unsigned long long v1:7; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu15ll_BFu0i { unsigned long long v1:7; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu15ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu15ll_BFu0s { unsigned long long v1:7; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu15s_BFu0c { unsigned long long v1:7; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu15s_BFu0i { unsigned long long v1:7; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu15s_BFu0ll { unsigned long long v1:7; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu15s_BFu0s { unsigned long long v1:7; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu16i_BFu0c { unsigned long long v1:7; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu16i_BFu0i { unsigned long long v1:7; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu16i_BFu0ll { unsigned long long v1:7; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu16i_BFu0s { unsigned long long v1:7; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu16ll_BFu0c { unsigned long long v1:7; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu16ll_BFu0i { unsigned long long v1:7; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu16ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu16ll_BFu0s { unsigned long long v1:7; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu16s_BFu0c { unsigned long long v1:7; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu16s_BFu0i { unsigned long long v1:7; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu16s_BFu0ll { unsigned long long v1:7; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu16s_BFu0s { unsigned long long v1:7; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu17i_BFu0c { unsigned long long v1:7; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu17i_BFu0i { unsigned long long v1:7; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu17i_BFu0ll { unsigned long long v1:7; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu17i_BFu0s { unsigned long long v1:7; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu17ll_BFu0c { unsigned long long v1:7; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu17ll_BFu0i { unsigned long long v1:7; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu17ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu17ll_BFu0s { unsigned long long v1:7; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu1c_BFu0c { unsigned long long v1:7; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu1c_BFu0i { unsigned long long v1:7; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu1c_BFu0ll { unsigned long long v1:7; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu1c_BFu0s { unsigned long long v1:7; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu1i_BFu0c { unsigned long long v1:7; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu1i_BFu0i { unsigned long long v1:7; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu1i_BFu0ll { unsigned long long v1:7; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu1i_BFu0s { unsigned long long v1:7; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu1ll_BFu0c { unsigned long long v1:7; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu1ll_BFu0i { unsigned long long v1:7; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu1ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu1ll_BFu0s { unsigned long long v1:7; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu1s_BFu0c { unsigned long long v1:7; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu1s_BFu0i { unsigned long long v1:7; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu1s_BFu0ll { unsigned long long v1:7; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu1s_BFu0s { unsigned long long v1:7; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu31i_BFu0c { unsigned long long v1:7; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu31i_BFu0i { unsigned long long v1:7; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu31i_BFu0ll { unsigned long long v1:7; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu31i_BFu0s { unsigned long long v1:7; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu31ll_BFu0c { unsigned long long v1:7; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu31ll_BFu0i { unsigned long long v1:7; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu31ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu31ll_BFu0s { unsigned long long v1:7; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu32i_BFu0c { unsigned long long v1:7; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu32i_BFu0i { unsigned long long v1:7; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu32i_BFu0ll { unsigned long long v1:7; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu32i_BFu0s { unsigned long long v1:7; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu32ll_BFu0c { unsigned long long v1:7; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu32ll_BFu0i { unsigned long long v1:7; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu32ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu32ll_BFu0s { unsigned long long v1:7; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu33_BFu0c { unsigned long long v1:7; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu33_BFu0i { unsigned long long v1:7; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu33_BFu0ll { unsigned long long v1:7; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu33_BFu0s { unsigned long long v1:7; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu7c_BFu0c { unsigned long long v1:7; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu7c_BFu0i { unsigned long long v1:7; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu7c_BFu0ll { unsigned long long v1:7; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu7c_BFu0s { unsigned long long v1:7; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu7i_BFu0c { unsigned long long v1:7; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu7i_BFu0i { unsigned long long v1:7; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu7i_BFu0ll { unsigned long long v1:7; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu7i_BFu0s { unsigned long long v1:7; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu7ll_BFu0c { unsigned long long v1:7; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu7ll_BFu0i { unsigned long long v1:7; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu7ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu7ll_BFu0s { unsigned long long v1:7; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu7s_BFu0c { unsigned long long v1:7; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu7s_BFu0i { unsigned long long v1:7; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu7s_BFu0ll { unsigned long long v1:7; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu7s_BFu0s { unsigned long long v1:7; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu8c_BFu0c { unsigned long long v1:7; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu8c_BFu0i { unsigned long long v1:7; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu8c_BFu0ll { unsigned long long v1:7; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu8c_BFu0s { unsigned long long v1:7; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu8i_BFu0c { unsigned long long v1:7; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu8i_BFu0i { unsigned long long v1:7; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu8i_BFu0ll { unsigned long long v1:7; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu8i_BFu0s { unsigned long long v1:7; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu8ll_BFu0c { unsigned long long v1:7; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu8ll_BFu0i { unsigned long long v1:7; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu8ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu8ll_BFu0s { unsigned long long v1:7; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu8s_BFu0c { unsigned long long v1:7; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu8s_BFu0i { unsigned long long v1:7; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu8s_BFu0ll { unsigned long long v1:7; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu8s_BFu0s { unsigned long long v1:7; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu9i_BFu0c { unsigned long long v1:7; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu9i_BFu0i { unsigned long long v1:7; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu9i_BFu0ll { unsigned long long v1:7; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu9i_BFu0s { unsigned long long v1:7; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu9ll_BFu0c { unsigned long long v1:7; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu9ll_BFu0i { unsigned long long v1:7; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu9ll_BFu0ll { unsigned long long v1:7; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu9ll_BFu0s { unsigned long long v1:7; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_BFu9s_BFu0c { unsigned long long v1:7; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_BFu9s_BFu0i { unsigned long long v1:7; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_BFu9s_BFu0ll { unsigned long long v1:7; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_BFu9s_BFu0s { unsigned long long v1:7; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_C_BFu0c { unsigned long long v1:7; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_C_BFu0i { unsigned long long v1:7; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_C_BFu0ll { unsigned long long v1:7; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_C_BFu0s { unsigned long long v1:7; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_D_BFu0c { unsigned long long v1:7; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_D_BFu0i { unsigned long long v1:7; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_D_BFu0ll { unsigned long long v1:7; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_D_BFu0s { unsigned long long v1:7; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_F_BFu0c { unsigned long long v1:7; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_F_BFu0i { unsigned long long v1:7; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_F_BFu0ll { unsigned long long v1:7; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_F_BFu0s { unsigned long long v1:7; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_I_BFu0c { unsigned long long v1:7; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_I_BFu0i { unsigned long long v1:7; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_I_BFu0ll { unsigned long long v1:7; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_I_BFu0s { unsigned long long v1:7; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Ip_BFu0c { unsigned long long v1:7; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Ip_BFu0i { unsigned long long v1:7; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Ip_BFu0ll { unsigned long long v1:7; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Ip_BFu0s { unsigned long long v1:7; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_L_BFu0c { unsigned long long v1:7; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_L_BFu0i { unsigned long long v1:7; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_L_BFu0ll { unsigned long long v1:7; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_L_BFu0s { unsigned long long v1:7; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_S_BFu0c { unsigned long long v1:7; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_S_BFu0i { unsigned long long v1:7; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_S_BFu0ll { unsigned long long v1:7; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_S_BFu0s { unsigned long long v1:7; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Uc_BFu0c { unsigned long long v1:7; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Uc_BFu0i { unsigned long long v1:7; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Uc_BFu0ll { unsigned long long v1:7; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Uc_BFu0s { unsigned long long v1:7; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Ui_BFu0c { unsigned long long v1:7; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Ui_BFu0i { unsigned long long v1:7; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Ui_BFu0ll { unsigned long long v1:7; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Ui_BFu0s { unsigned long long v1:7; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Ul_BFu0c { unsigned long long v1:7; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Ul_BFu0i { unsigned long long v1:7; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Ul_BFu0ll { unsigned long long v1:7; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Ul_BFu0s { unsigned long long v1:7; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Us_BFu0c { unsigned long long v1:7; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Us_BFu0i { unsigned long long v1:7; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Us_BFu0ll { unsigned long long v1:7; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Us_BFu0s { unsigned long long v1:7; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7ll_Vp_BFu0c { unsigned long long v1:7; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7ll_Vp_BFu0i { unsigned long long v1:7; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7ll_Vp_BFu0ll { unsigned long long v1:7; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7ll_Vp_BFu0s { unsigned long long v1:7; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0c { unsigned short v1:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu0c { unsigned short v1:7; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu0i { unsigned short v1:7; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu0ll { unsigned short v1:7; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu0s { unsigned short v1:7; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu15i { unsigned short v1:7; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu15ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu15s { unsigned short v1:7; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu16i { unsigned short v1:7; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu16ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu16s { unsigned short v1:7; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu17i { unsigned short v1:7; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu17ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu1c { unsigned short v1:7; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu1i { unsigned short v1:7; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu1ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu1s { unsigned short v1:7; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu31i { unsigned short v1:7; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu31ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu32i { unsigned short v1:7; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu32ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu33 { unsigned short v1:7; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu7c { unsigned short v1:7; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu7i { unsigned short v1:7; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu7ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu7s { unsigned short v1:7; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu8c { unsigned short v1:7; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu8i { unsigned short v1:7; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu8ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu8s { unsigned short v1:7; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu9i { unsigned short v1:7; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu9ll { unsigned short v1:7; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0c_BFu9s { unsigned short v1:7; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0c_C { unsigned short v1:7; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_D { unsigned short v1:7; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_F { unsigned short v1:7; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_I { unsigned short v1:7; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Ip { unsigned short v1:7; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_L { unsigned short v1:7; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_S { unsigned short v1:7; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Uc { unsigned short v1:7; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Ui { unsigned short v1:7; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Ul { unsigned short v1:7; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Us { unsigned short v1:7; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7s_BFu0c_Vp { unsigned short v1:7; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu7s_BFu0i { unsigned short v1:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu0c { unsigned short v1:7; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu0i { unsigned short v1:7; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu0ll { unsigned short v1:7; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu0s { unsigned short v1:7; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu15i { unsigned short v1:7; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu15ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu15s { unsigned short v1:7; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu16i { unsigned short v1:7; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu16ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu16s { unsigned short v1:7; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu17i { unsigned short v1:7; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu17ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu1c { unsigned short v1:7; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu1i { unsigned short v1:7; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu1ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu1s { unsigned short v1:7; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu31i { unsigned short v1:7; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu31ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu32i { unsigned short v1:7; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu32ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu33 { unsigned short v1:7; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu7c { unsigned short v1:7; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu7i { unsigned short v1:7; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu7ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu7s { unsigned short v1:7; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu8c { unsigned short v1:7; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu8i { unsigned short v1:7; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu8ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu8s { unsigned short v1:7; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu9i { unsigned short v1:7; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu9ll { unsigned short v1:7; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0i_BFu9s { unsigned short v1:7; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0i_C { unsigned short v1:7; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_D { unsigned short v1:7; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_F { unsigned short v1:7; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_I { unsigned short v1:7; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Ip { unsigned short v1:7; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_L { unsigned short v1:7; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_S { unsigned short v1:7; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Uc { unsigned short v1:7; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Ui { unsigned short v1:7; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Ul { unsigned short v1:7; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Us { unsigned short v1:7; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7s_BFu0i_Vp { unsigned short v1:7; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll { unsigned short v1:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu0c { unsigned short v1:7; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu0i { unsigned short v1:7; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu0ll { unsigned short v1:7; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu0s { unsigned short v1:7; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu15i { unsigned short v1:7; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu15ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu15s { unsigned short v1:7; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu16i { unsigned short v1:7; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu16ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu16s { unsigned short v1:7; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu17i { unsigned short v1:7; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu17ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu1c { unsigned short v1:7; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu1i { unsigned short v1:7; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu1ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu1s { unsigned short v1:7; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu31i { unsigned short v1:7; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu31ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu32i { unsigned short v1:7; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu32ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu33 { unsigned short v1:7; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu7c { unsigned short v1:7; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu7i { unsigned short v1:7; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu7ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu7s { unsigned short v1:7; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu8c { unsigned short v1:7; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu8i { unsigned short v1:7; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu8ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu8s { unsigned short v1:7; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu9i { unsigned short v1:7; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu9ll { unsigned short v1:7; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0ll_BFu9s { unsigned short v1:7; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0ll_C { unsigned short v1:7; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_D { unsigned short v1:7; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_F { unsigned short v1:7; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_I { unsigned short v1:7; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Ip { unsigned short v1:7; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_L { unsigned short v1:7; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_S { unsigned short v1:7; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Uc { unsigned short v1:7; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Ui { unsigned short v1:7; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Ul { unsigned short v1:7; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Us { unsigned short v1:7; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7s_BFu0ll_Vp { unsigned short v1:7; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu7s_BFu0s { unsigned short v1:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu0c { unsigned short v1:7; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu0i { unsigned short v1:7; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu0ll { unsigned short v1:7; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu0s { unsigned short v1:7; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu15i { unsigned short v1:7; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu15ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu15s { unsigned short v1:7; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu16i { unsigned short v1:7; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu16ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu16s { unsigned short v1:7; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu17i { unsigned short v1:7; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu17ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu1c { unsigned short v1:7; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu1i { unsigned short v1:7; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu1ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu1s { unsigned short v1:7; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu31i { unsigned short v1:7; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu31ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu32i { unsigned short v1:7; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu32ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu33 { unsigned short v1:7; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu7c { unsigned short v1:7; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu7i { unsigned short v1:7; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu7ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu7s { unsigned short v1:7; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu8c { unsigned short v1:7; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu8i { unsigned short v1:7; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu8ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu8s { unsigned short v1:7; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu9i { unsigned short v1:7; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu9ll { unsigned short v1:7; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0s_BFu9s { unsigned short v1:7; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu7s_BFu0s_C { unsigned short v1:7; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_D { unsigned short v1:7; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_F { unsigned short v1:7; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_I { unsigned short v1:7; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Ip { unsigned short v1:7; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_L { unsigned short v1:7; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_S { unsigned short v1:7; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Uc { unsigned short v1:7; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Ui { unsigned short v1:7; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Ul { unsigned short v1:7; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Us { unsigned short v1:7; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu7s_BFu0s_Vp { unsigned short v1:7; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu7s_BFu15i_BFu0c { unsigned short v1:7; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu15i_BFu0i { unsigned short v1:7; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu15i_BFu0ll { unsigned short v1:7; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu15i_BFu0s { unsigned short v1:7; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu15ll_BFu0c { unsigned short v1:7; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu15ll_BFu0i { unsigned short v1:7; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu15ll_BFu0ll { unsigned short v1:7; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu15ll_BFu0s { unsigned short v1:7; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu15s_BFu0c { unsigned short v1:7; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu15s_BFu0i { unsigned short v1:7; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu15s_BFu0ll { unsigned short v1:7; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu15s_BFu0s { unsigned short v1:7; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu16i_BFu0c { unsigned short v1:7; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu16i_BFu0i { unsigned short v1:7; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu16i_BFu0ll { unsigned short v1:7; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu16i_BFu0s { unsigned short v1:7; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu16ll_BFu0c { unsigned short v1:7; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu16ll_BFu0i { unsigned short v1:7; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu16ll_BFu0ll { unsigned short v1:7; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu16ll_BFu0s { unsigned short v1:7; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu16s_BFu0c { unsigned short v1:7; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu16s_BFu0i { unsigned short v1:7; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu16s_BFu0ll { unsigned short v1:7; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu16s_BFu0s { unsigned short v1:7; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu17i_BFu0c { unsigned short v1:7; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu17i_BFu0i { unsigned short v1:7; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu17i_BFu0ll { unsigned short v1:7; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu17i_BFu0s { unsigned short v1:7; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu17ll_BFu0c { unsigned short v1:7; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu17ll_BFu0i { unsigned short v1:7; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu17ll_BFu0ll { unsigned short v1:7; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu17ll_BFu0s { unsigned short v1:7; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu1c_BFu0c { unsigned short v1:7; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu1c_BFu0i { unsigned short v1:7; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu1c_BFu0ll { unsigned short v1:7; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu1c_BFu0s { unsigned short v1:7; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu1i_BFu0c { unsigned short v1:7; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu1i_BFu0i { unsigned short v1:7; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu1i_BFu0ll { unsigned short v1:7; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu1i_BFu0s { unsigned short v1:7; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu1ll_BFu0c { unsigned short v1:7; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu1ll_BFu0i { unsigned short v1:7; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu1ll_BFu0ll { unsigned short v1:7; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu1ll_BFu0s { unsigned short v1:7; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu1s_BFu0c { unsigned short v1:7; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu1s_BFu0i { unsigned short v1:7; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu1s_BFu0ll { unsigned short v1:7; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu1s_BFu0s { unsigned short v1:7; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu31i_BFu0c { unsigned short v1:7; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu31i_BFu0i { unsigned short v1:7; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu31i_BFu0ll { unsigned short v1:7; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu31i_BFu0s { unsigned short v1:7; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu31ll_BFu0c { unsigned short v1:7; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu31ll_BFu0i { unsigned short v1:7; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu31ll_BFu0ll { unsigned short v1:7; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu31ll_BFu0s { unsigned short v1:7; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu32i_BFu0c { unsigned short v1:7; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu32i_BFu0i { unsigned short v1:7; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu32i_BFu0ll { unsigned short v1:7; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu32i_BFu0s { unsigned short v1:7; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu32ll_BFu0c { unsigned short v1:7; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu32ll_BFu0i { unsigned short v1:7; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu32ll_BFu0ll { unsigned short v1:7; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu32ll_BFu0s { unsigned short v1:7; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu33_BFu0c { unsigned short v1:7; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu33_BFu0i { unsigned short v1:7; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu33_BFu0ll { unsigned short v1:7; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu33_BFu0s { unsigned short v1:7; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu7c_BFu0c { unsigned short v1:7; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu7c_BFu0i { unsigned short v1:7; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu7c_BFu0ll { unsigned short v1:7; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu7c_BFu0s { unsigned short v1:7; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu7i_BFu0c { unsigned short v1:7; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu7i_BFu0i { unsigned short v1:7; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu7i_BFu0ll { unsigned short v1:7; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu7i_BFu0s { unsigned short v1:7; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu7ll_BFu0c { unsigned short v1:7; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu7ll_BFu0i { unsigned short v1:7; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu7ll_BFu0ll { unsigned short v1:7; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu7ll_BFu0s { unsigned short v1:7; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu7s_BFu0c { unsigned short v1:7; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu7s_BFu0i { unsigned short v1:7; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu7s_BFu0ll { unsigned short v1:7; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu7s_BFu0s { unsigned short v1:7; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu8c_BFu0c { unsigned short v1:7; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu8c_BFu0i { unsigned short v1:7; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu8c_BFu0ll { unsigned short v1:7; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu8c_BFu0s { unsigned short v1:7; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu8i_BFu0c { unsigned short v1:7; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu8i_BFu0i { unsigned short v1:7; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu8i_BFu0ll { unsigned short v1:7; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu8i_BFu0s { unsigned short v1:7; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu8ll_BFu0c { unsigned short v1:7; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu8ll_BFu0i { unsigned short v1:7; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu8ll_BFu0ll { unsigned short v1:7; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu8ll_BFu0s { unsigned short v1:7; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu8s_BFu0c { unsigned short v1:7; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu8s_BFu0i { unsigned short v1:7; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu8s_BFu0ll { unsigned short v1:7; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu8s_BFu0s { unsigned short v1:7; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu9i_BFu0c { unsigned short v1:7; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu9i_BFu0i { unsigned short v1:7; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu9i_BFu0ll { unsigned short v1:7; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu9i_BFu0s { unsigned short v1:7; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu9ll_BFu0c { unsigned short v1:7; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu9ll_BFu0i { unsigned short v1:7; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu9ll_BFu0ll { unsigned short v1:7; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu9ll_BFu0s { unsigned short v1:7; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_BFu9s_BFu0c { unsigned short v1:7; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_BFu9s_BFu0i { unsigned short v1:7; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_BFu9s_BFu0ll { unsigned short v1:7; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_BFu9s_BFu0s { unsigned short v1:7; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_C_BFu0c { unsigned short v1:7; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_C_BFu0i { unsigned short v1:7; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_C_BFu0ll { unsigned short v1:7; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_C_BFu0s { unsigned short v1:7; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_D_BFu0c { unsigned short v1:7; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_D_BFu0i { unsigned short v1:7; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_D_BFu0ll { unsigned short v1:7; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_D_BFu0s { unsigned short v1:7; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_F_BFu0c { unsigned short v1:7; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_F_BFu0i { unsigned short v1:7; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_F_BFu0ll { unsigned short v1:7; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_F_BFu0s { unsigned short v1:7; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_I_BFu0c { unsigned short v1:7; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_I_BFu0i { unsigned short v1:7; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_I_BFu0ll { unsigned short v1:7; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_I_BFu0s { unsigned short v1:7; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Ip_BFu0c { unsigned short v1:7; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Ip_BFu0i { unsigned short v1:7; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Ip_BFu0ll { unsigned short v1:7; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Ip_BFu0s { unsigned short v1:7; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_L_BFu0c { unsigned short v1:7; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_L_BFu0i { unsigned short v1:7; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_L_BFu0ll { unsigned short v1:7; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_L_BFu0s { unsigned short v1:7; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_S_BFu0c { unsigned short v1:7; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_S_BFu0i { unsigned short v1:7; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_S_BFu0ll { unsigned short v1:7; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_S_BFu0s { unsigned short v1:7; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Uc_BFu0c { unsigned short v1:7; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Uc_BFu0i { unsigned short v1:7; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Uc_BFu0ll { unsigned short v1:7; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Uc_BFu0s { unsigned short v1:7; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Ui_BFu0c { unsigned short v1:7; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Ui_BFu0i { unsigned short v1:7; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Ui_BFu0ll { unsigned short v1:7; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Ui_BFu0s { unsigned short v1:7; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Ul_BFu0c { unsigned short v1:7; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Ul_BFu0i { unsigned short v1:7; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Ul_BFu0ll { unsigned short v1:7; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Ul_BFu0s { unsigned short v1:7; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Us_BFu0c { unsigned short v1:7; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Us_BFu0i { unsigned short v1:7; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Us_BFu0ll { unsigned short v1:7; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Us_BFu0s { unsigned short v1:7; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu7s_Vp_BFu0c { unsigned short v1:7; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu7s_Vp_BFu0i { unsigned short v1:7; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu7s_Vp_BFu0ll { unsigned short v1:7; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu7s_Vp_BFu0s { unsigned short v1:7; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0c { unsigned char v1:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu0c { unsigned char v1:8; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu0i { unsigned char v1:8; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu0ll { unsigned char v1:8; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu0s { unsigned char v1:8; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu15i { unsigned char v1:8; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu15ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu15s { unsigned char v1:8; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu16i { unsigned char v1:8; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu16ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu16s { unsigned char v1:8; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu17i { unsigned char v1:8; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu17ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu1c { unsigned char v1:8; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu1i { unsigned char v1:8; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu1ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu1s { unsigned char v1:8; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu31i { unsigned char v1:8; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu31ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu32i { unsigned char v1:8; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu32ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu33 { unsigned char v1:8; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu7c { unsigned char v1:8; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu7i { unsigned char v1:8; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu7ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu7s { unsigned char v1:8; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu8c { unsigned char v1:8; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu8i { unsigned char v1:8; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu8ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu8s { unsigned char v1:8; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu9i { unsigned char v1:8; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu9ll { unsigned char v1:8; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0c_BFu9s { unsigned char v1:8; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0c_C { unsigned char v1:8; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_D { unsigned char v1:8; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_F { unsigned char v1:8; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_I { unsigned char v1:8; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Ip { unsigned char v1:8; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_L { unsigned char v1:8; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_S { unsigned char v1:8; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Uc { unsigned char v1:8; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Ui { unsigned char v1:8; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Ul { unsigned char v1:8; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Us { unsigned char v1:8; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8c_BFu0c_Vp { unsigned char v1:8; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu8c_BFu0i { unsigned char v1:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu0c { unsigned char v1:8; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu0i { unsigned char v1:8; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu0ll { unsigned char v1:8; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu0s { unsigned char v1:8; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu15i { unsigned char v1:8; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu15ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu15s { unsigned char v1:8; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu16i { unsigned char v1:8; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu16ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu16s { unsigned char v1:8; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu17i { unsigned char v1:8; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu17ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu1c { unsigned char v1:8; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu1i { unsigned char v1:8; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu1ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu1s { unsigned char v1:8; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu31i { unsigned char v1:8; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu31ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu32i { unsigned char v1:8; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu32ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu33 { unsigned char v1:8; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu7c { unsigned char v1:8; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu7i { unsigned char v1:8; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu7ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu7s { unsigned char v1:8; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu8c { unsigned char v1:8; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu8i { unsigned char v1:8; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu8ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu8s { unsigned char v1:8; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu9i { unsigned char v1:8; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu9ll { unsigned char v1:8; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0i_BFu9s { unsigned char v1:8; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0i_C { unsigned char v1:8; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_D { unsigned char v1:8; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_F { unsigned char v1:8; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_I { unsigned char v1:8; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Ip { unsigned char v1:8; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_L { unsigned char v1:8; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_S { unsigned char v1:8; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Uc { unsigned char v1:8; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Ui { unsigned char v1:8; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Ul { unsigned char v1:8; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Us { unsigned char v1:8; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8c_BFu0i_Vp { unsigned char v1:8; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll { unsigned char v1:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu0c { unsigned char v1:8; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu0i { unsigned char v1:8; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu0ll { unsigned char v1:8; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu0s { unsigned char v1:8; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu15i { unsigned char v1:8; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu15ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu15s { unsigned char v1:8; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu16i { unsigned char v1:8; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu16ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu16s { unsigned char v1:8; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu17i { unsigned char v1:8; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu17ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu1c { unsigned char v1:8; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu1i { unsigned char v1:8; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu1ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu1s { unsigned char v1:8; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu31i { unsigned char v1:8; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu31ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu32i { unsigned char v1:8; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu32ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu33 { unsigned char v1:8; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu7c { unsigned char v1:8; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu7i { unsigned char v1:8; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu7ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu7s { unsigned char v1:8; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu8c { unsigned char v1:8; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu8i { unsigned char v1:8; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu8ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu8s { unsigned char v1:8; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu9i { unsigned char v1:8; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu9ll { unsigned char v1:8; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0ll_BFu9s { unsigned char v1:8; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0ll_C { unsigned char v1:8; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_D { unsigned char v1:8; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_F { unsigned char v1:8; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_I { unsigned char v1:8; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Ip { unsigned char v1:8; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_L { unsigned char v1:8; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_S { unsigned char v1:8; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Uc { unsigned char v1:8; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Ui { unsigned char v1:8; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Ul { unsigned char v1:8; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Us { unsigned char v1:8; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8c_BFu0ll_Vp { unsigned char v1:8; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu8c_BFu0s { unsigned char v1:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu0c { unsigned char v1:8; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu0i { unsigned char v1:8; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu0ll { unsigned char v1:8; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu0s { unsigned char v1:8; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu15i { unsigned char v1:8; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu15ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu15s { unsigned char v1:8; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu16i { unsigned char v1:8; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu16ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu16s { unsigned char v1:8; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu17i { unsigned char v1:8; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu17ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu1c { unsigned char v1:8; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu1i { unsigned char v1:8; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu1ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu1s { unsigned char v1:8; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu31i { unsigned char v1:8; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu31ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu32i { unsigned char v1:8; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu32ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu33 { unsigned char v1:8; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu7c { unsigned char v1:8; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu7i { unsigned char v1:8; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu7ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu7s { unsigned char v1:8; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu8c { unsigned char v1:8; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu8i { unsigned char v1:8; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu8ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu8s { unsigned char v1:8; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu9i { unsigned char v1:8; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu9ll { unsigned char v1:8; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0s_BFu9s { unsigned char v1:8; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8c_BFu0s_C { unsigned char v1:8; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_D { unsigned char v1:8; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_F { unsigned char v1:8; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_I { unsigned char v1:8; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Ip { unsigned char v1:8; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_L { unsigned char v1:8; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_S { unsigned char v1:8; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Uc { unsigned char v1:8; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Ui { unsigned char v1:8; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Ul { unsigned char v1:8; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Us { unsigned char v1:8; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8c_BFu0s_Vp { unsigned char v1:8; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu8c_BFu15i_BFu0c { unsigned char v1:8; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu15i_BFu0i { unsigned char v1:8; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu15i_BFu0ll { unsigned char v1:8; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu15i_BFu0s { unsigned char v1:8; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu15ll_BFu0c { unsigned char v1:8; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu15ll_BFu0i { unsigned char v1:8; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu15ll_BFu0ll { unsigned char v1:8; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu15ll_BFu0s { unsigned char v1:8; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu15s_BFu0c { unsigned char v1:8; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu15s_BFu0i { unsigned char v1:8; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu15s_BFu0ll { unsigned char v1:8; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu15s_BFu0s { unsigned char v1:8; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu16i_BFu0c { unsigned char v1:8; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu16i_BFu0i { unsigned char v1:8; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu16i_BFu0ll { unsigned char v1:8; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu16i_BFu0s { unsigned char v1:8; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu16ll_BFu0c { unsigned char v1:8; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu16ll_BFu0i { unsigned char v1:8; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu16ll_BFu0ll { unsigned char v1:8; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu16ll_BFu0s { unsigned char v1:8; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu16s_BFu0c { unsigned char v1:8; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu16s_BFu0i { unsigned char v1:8; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu16s_BFu0ll { unsigned char v1:8; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu16s_BFu0s { unsigned char v1:8; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu17i_BFu0c { unsigned char v1:8; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu17i_BFu0i { unsigned char v1:8; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu17i_BFu0ll { unsigned char v1:8; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu17i_BFu0s { unsigned char v1:8; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu17ll_BFu0c { unsigned char v1:8; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu17ll_BFu0i { unsigned char v1:8; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu17ll_BFu0ll { unsigned char v1:8; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu17ll_BFu0s { unsigned char v1:8; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu1c_BFu0c { unsigned char v1:8; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu1c_BFu0i { unsigned char v1:8; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu1c_BFu0ll { unsigned char v1:8; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu1c_BFu0s { unsigned char v1:8; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu1i_BFu0c { unsigned char v1:8; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu1i_BFu0i { unsigned char v1:8; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu1i_BFu0ll { unsigned char v1:8; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu1i_BFu0s { unsigned char v1:8; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu1ll_BFu0c { unsigned char v1:8; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu1ll_BFu0i { unsigned char v1:8; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu1ll_BFu0ll { unsigned char v1:8; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu1ll_BFu0s { unsigned char v1:8; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu1s_BFu0c { unsigned char v1:8; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu1s_BFu0i { unsigned char v1:8; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu1s_BFu0ll { unsigned char v1:8; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu1s_BFu0s { unsigned char v1:8; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu31i_BFu0c { unsigned char v1:8; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu31i_BFu0i { unsigned char v1:8; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu31i_BFu0ll { unsigned char v1:8; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu31i_BFu0s { unsigned char v1:8; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu31ll_BFu0c { unsigned char v1:8; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu31ll_BFu0i { unsigned char v1:8; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu31ll_BFu0ll { unsigned char v1:8; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu31ll_BFu0s { unsigned char v1:8; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu32i_BFu0c { unsigned char v1:8; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu32i_BFu0i { unsigned char v1:8; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu32i_BFu0ll { unsigned char v1:8; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu32i_BFu0s { unsigned char v1:8; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu32ll_BFu0c { unsigned char v1:8; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu32ll_BFu0i { unsigned char v1:8; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu32ll_BFu0ll { unsigned char v1:8; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu32ll_BFu0s { unsigned char v1:8; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu33_BFu0c { unsigned char v1:8; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu33_BFu0i { unsigned char v1:8; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu33_BFu0ll { unsigned char v1:8; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu33_BFu0s { unsigned char v1:8; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu7c_BFu0c { unsigned char v1:8; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu7c_BFu0i { unsigned char v1:8; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu7c_BFu0ll { unsigned char v1:8; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu7c_BFu0s { unsigned char v1:8; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu7i_BFu0c { unsigned char v1:8; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu7i_BFu0i { unsigned char v1:8; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu7i_BFu0ll { unsigned char v1:8; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu7i_BFu0s { unsigned char v1:8; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu7ll_BFu0c { unsigned char v1:8; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu7ll_BFu0i { unsigned char v1:8; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu7ll_BFu0ll { unsigned char v1:8; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu7ll_BFu0s { unsigned char v1:8; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu7s_BFu0c { unsigned char v1:8; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu7s_BFu0i { unsigned char v1:8; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu7s_BFu0ll { unsigned char v1:8; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu7s_BFu0s { unsigned char v1:8; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu8c_BFu0c { unsigned char v1:8; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu8c_BFu0i { unsigned char v1:8; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu8c_BFu0ll { unsigned char v1:8; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu8c_BFu0s { unsigned char v1:8; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu8i_BFu0c { unsigned char v1:8; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu8i_BFu0i { unsigned char v1:8; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu8i_BFu0ll { unsigned char v1:8; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu8i_BFu0s { unsigned char v1:8; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu8ll_BFu0c { unsigned char v1:8; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu8ll_BFu0i { unsigned char v1:8; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu8ll_BFu0ll { unsigned char v1:8; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu8ll_BFu0s { unsigned char v1:8; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu8s_BFu0c { unsigned char v1:8; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu8s_BFu0i { unsigned char v1:8; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu8s_BFu0ll { unsigned char v1:8; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu8s_BFu0s { unsigned char v1:8; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu9i_BFu0c { unsigned char v1:8; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu9i_BFu0i { unsigned char v1:8; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu9i_BFu0ll { unsigned char v1:8; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu9i_BFu0s { unsigned char v1:8; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu9ll_BFu0c { unsigned char v1:8; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu9ll_BFu0i { unsigned char v1:8; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu9ll_BFu0ll { unsigned char v1:8; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu9ll_BFu0s { unsigned char v1:8; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_BFu9s_BFu0c { unsigned char v1:8; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_BFu9s_BFu0i { unsigned char v1:8; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_BFu9s_BFu0ll { unsigned char v1:8; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_BFu9s_BFu0s { unsigned char v1:8; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_C_BFu0c { unsigned char v1:8; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_C_BFu0i { unsigned char v1:8; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_C_BFu0ll { unsigned char v1:8; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_C_BFu0s { unsigned char v1:8; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_D_BFu0c { unsigned char v1:8; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_D_BFu0i { unsigned char v1:8; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_D_BFu0ll { unsigned char v1:8; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_D_BFu0s { unsigned char v1:8; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_F_BFu0c { unsigned char v1:8; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_F_BFu0i { unsigned char v1:8; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_F_BFu0ll { unsigned char v1:8; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_F_BFu0s { unsigned char v1:8; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_I_BFu0c { unsigned char v1:8; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_I_BFu0i { unsigned char v1:8; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_I_BFu0ll { unsigned char v1:8; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_I_BFu0s { unsigned char v1:8; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Ip_BFu0c { unsigned char v1:8; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Ip_BFu0i { unsigned char v1:8; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Ip_BFu0ll { unsigned char v1:8; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Ip_BFu0s { unsigned char v1:8; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_L_BFu0c { unsigned char v1:8; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_L_BFu0i { unsigned char v1:8; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_L_BFu0ll { unsigned char v1:8; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_L_BFu0s { unsigned char v1:8; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_S_BFu0c { unsigned char v1:8; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_S_BFu0i { unsigned char v1:8; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_S_BFu0ll { unsigned char v1:8; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_S_BFu0s { unsigned char v1:8; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Uc_BFu0c { unsigned char v1:8; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Uc_BFu0i { unsigned char v1:8; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Uc_BFu0ll { unsigned char v1:8; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Uc_BFu0s { unsigned char v1:8; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Ui_BFu0c { unsigned char v1:8; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Ui_BFu0i { unsigned char v1:8; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Ui_BFu0ll { unsigned char v1:8; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Ui_BFu0s { unsigned char v1:8; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Ul_BFu0c { unsigned char v1:8; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Ul_BFu0i { unsigned char v1:8; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Ul_BFu0ll { unsigned char v1:8; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Ul_BFu0s { unsigned char v1:8; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Us_BFu0c { unsigned char v1:8; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Us_BFu0i { unsigned char v1:8; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Us_BFu0ll { unsigned char v1:8; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Us_BFu0s { unsigned char v1:8; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8c_Vp_BFu0c { unsigned char v1:8; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8c_Vp_BFu0i { unsigned char v1:8; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8c_Vp_BFu0ll { unsigned char v1:8; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8c_Vp_BFu0s { unsigned char v1:8; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0c { unsigned int v1:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu0c { unsigned int v1:8; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu0i { unsigned int v1:8; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu0ll { unsigned int v1:8; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu0s { unsigned int v1:8; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu15i { unsigned int v1:8; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu15ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu15s { unsigned int v1:8; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu16i { unsigned int v1:8; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu16ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu16s { unsigned int v1:8; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu17i { unsigned int v1:8; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu17ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu1c { unsigned int v1:8; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu1i { unsigned int v1:8; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu1ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu1s { unsigned int v1:8; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu31i { unsigned int v1:8; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu31ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu32i { unsigned int v1:8; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu32ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu33 { unsigned int v1:8; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu7c { unsigned int v1:8; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu7i { unsigned int v1:8; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu7ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu7s { unsigned int v1:8; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu8c { unsigned int v1:8; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu8i { unsigned int v1:8; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu8ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu8s { unsigned int v1:8; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu9i { unsigned int v1:8; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu9ll { unsigned int v1:8; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0c_BFu9s { unsigned int v1:8; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0c_C { unsigned int v1:8; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_D { unsigned int v1:8; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_F { unsigned int v1:8; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_I { unsigned int v1:8; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Ip { unsigned int v1:8; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_L { unsigned int v1:8; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_S { unsigned int v1:8; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Uc { unsigned int v1:8; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Ui { unsigned int v1:8; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Ul { unsigned int v1:8; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Us { unsigned int v1:8; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8i_BFu0c_Vp { unsigned int v1:8; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu8i_BFu0i { unsigned int v1:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu0c { unsigned int v1:8; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu0i { unsigned int v1:8; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu0ll { unsigned int v1:8; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu0s { unsigned int v1:8; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu15i { unsigned int v1:8; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu15ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu15s { unsigned int v1:8; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu16i { unsigned int v1:8; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu16ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu16s { unsigned int v1:8; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu17i { unsigned int v1:8; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu17ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu1c { unsigned int v1:8; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu1i { unsigned int v1:8; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu1ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu1s { unsigned int v1:8; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu31i { unsigned int v1:8; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu31ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu32i { unsigned int v1:8; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu32ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu33 { unsigned int v1:8; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu7c { unsigned int v1:8; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu7i { unsigned int v1:8; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu7ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu7s { unsigned int v1:8; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu8c { unsigned int v1:8; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu8i { unsigned int v1:8; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu8ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu8s { unsigned int v1:8; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu9i { unsigned int v1:8; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu9ll { unsigned int v1:8; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0i_BFu9s { unsigned int v1:8; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0i_C { unsigned int v1:8; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_D { unsigned int v1:8; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_F { unsigned int v1:8; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_I { unsigned int v1:8; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Ip { unsigned int v1:8; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_L { unsigned int v1:8; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_S { unsigned int v1:8; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Uc { unsigned int v1:8; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Ui { unsigned int v1:8; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Ul { unsigned int v1:8; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Us { unsigned int v1:8; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8i_BFu0i_Vp { unsigned int v1:8; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll { unsigned int v1:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu0c { unsigned int v1:8; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu0i { unsigned int v1:8; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu0ll { unsigned int v1:8; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu0s { unsigned int v1:8; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu15i { unsigned int v1:8; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu15ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu15s { unsigned int v1:8; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu16i { unsigned int v1:8; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu16ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu16s { unsigned int v1:8; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu17i { unsigned int v1:8; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu17ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu1c { unsigned int v1:8; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu1i { unsigned int v1:8; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu1ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu1s { unsigned int v1:8; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu31i { unsigned int v1:8; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu31ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu32i { unsigned int v1:8; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu32ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu33 { unsigned int v1:8; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu7c { unsigned int v1:8; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu7i { unsigned int v1:8; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu7ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu7s { unsigned int v1:8; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu8c { unsigned int v1:8; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu8i { unsigned int v1:8; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu8ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu8s { unsigned int v1:8; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu9i { unsigned int v1:8; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu9ll { unsigned int v1:8; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0ll_BFu9s { unsigned int v1:8; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0ll_C { unsigned int v1:8; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_D { unsigned int v1:8; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_F { unsigned int v1:8; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_I { unsigned int v1:8; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Ip { unsigned int v1:8; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_L { unsigned int v1:8; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_S { unsigned int v1:8; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Uc { unsigned int v1:8; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Ui { unsigned int v1:8; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Ul { unsigned int v1:8; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Us { unsigned int v1:8; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8i_BFu0ll_Vp { unsigned int v1:8; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu8i_BFu0s { unsigned int v1:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu0c { unsigned int v1:8; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu0i { unsigned int v1:8; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu0ll { unsigned int v1:8; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu0s { unsigned int v1:8; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu15i { unsigned int v1:8; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu15ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu15s { unsigned int v1:8; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu16i { unsigned int v1:8; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu16ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu16s { unsigned int v1:8; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu17i { unsigned int v1:8; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu17ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu1c { unsigned int v1:8; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu1i { unsigned int v1:8; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu1ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu1s { unsigned int v1:8; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu31i { unsigned int v1:8; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu31ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu32i { unsigned int v1:8; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu32ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu33 { unsigned int v1:8; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu7c { unsigned int v1:8; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu7i { unsigned int v1:8; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu7ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu7s { unsigned int v1:8; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu8c { unsigned int v1:8; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu8i { unsigned int v1:8; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu8ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu8s { unsigned int v1:8; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu9i { unsigned int v1:8; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu9ll { unsigned int v1:8; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0s_BFu9s { unsigned int v1:8; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8i_BFu0s_C { unsigned int v1:8; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_D { unsigned int v1:8; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_F { unsigned int v1:8; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_I { unsigned int v1:8; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Ip { unsigned int v1:8; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_L { unsigned int v1:8; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_S { unsigned int v1:8; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Uc { unsigned int v1:8; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Ui { unsigned int v1:8; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Ul { unsigned int v1:8; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Us { unsigned int v1:8; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8i_BFu0s_Vp { unsigned int v1:8; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu8i_BFu15i_BFu0c { unsigned int v1:8; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu15i_BFu0i { unsigned int v1:8; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu15i_BFu0ll { unsigned int v1:8; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu15i_BFu0s { unsigned int v1:8; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu15ll_BFu0c { unsigned int v1:8; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu15ll_BFu0i { unsigned int v1:8; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu15ll_BFu0ll { unsigned int v1:8; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu15ll_BFu0s { unsigned int v1:8; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu15s_BFu0c { unsigned int v1:8; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu15s_BFu0i { unsigned int v1:8; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu15s_BFu0ll { unsigned int v1:8; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu15s_BFu0s { unsigned int v1:8; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu16i_BFu0c { unsigned int v1:8; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu16i_BFu0i { unsigned int v1:8; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu16i_BFu0ll { unsigned int v1:8; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu16i_BFu0s { unsigned int v1:8; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu16ll_BFu0c { unsigned int v1:8; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu16ll_BFu0i { unsigned int v1:8; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu16ll_BFu0ll { unsigned int v1:8; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu16ll_BFu0s { unsigned int v1:8; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu16s_BFu0c { unsigned int v1:8; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu16s_BFu0i { unsigned int v1:8; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu16s_BFu0ll { unsigned int v1:8; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu16s_BFu0s { unsigned int v1:8; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu17i_BFu0c { unsigned int v1:8; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu17i_BFu0i { unsigned int v1:8; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu17i_BFu0ll { unsigned int v1:8; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu17i_BFu0s { unsigned int v1:8; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu17ll_BFu0c { unsigned int v1:8; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu17ll_BFu0i { unsigned int v1:8; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu17ll_BFu0ll { unsigned int v1:8; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu17ll_BFu0s { unsigned int v1:8; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu1c_BFu0c { unsigned int v1:8; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu1c_BFu0i { unsigned int v1:8; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu1c_BFu0ll { unsigned int v1:8; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu1c_BFu0s { unsigned int v1:8; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu1i_BFu0c { unsigned int v1:8; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu1i_BFu0i { unsigned int v1:8; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu1i_BFu0ll { unsigned int v1:8; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu1i_BFu0s { unsigned int v1:8; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu1ll_BFu0c { unsigned int v1:8; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu1ll_BFu0i { unsigned int v1:8; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu1ll_BFu0ll { unsigned int v1:8; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu1ll_BFu0s { unsigned int v1:8; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu1s_BFu0c { unsigned int v1:8; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu1s_BFu0i { unsigned int v1:8; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu1s_BFu0ll { unsigned int v1:8; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu1s_BFu0s { unsigned int v1:8; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu31i_BFu0c { unsigned int v1:8; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu31i_BFu0i { unsigned int v1:8; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu31i_BFu0ll { unsigned int v1:8; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu31i_BFu0s { unsigned int v1:8; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu31ll_BFu0c { unsigned int v1:8; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu31ll_BFu0i { unsigned int v1:8; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu31ll_BFu0ll { unsigned int v1:8; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu31ll_BFu0s { unsigned int v1:8; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu32i_BFu0c { unsigned int v1:8; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu32i_BFu0i { unsigned int v1:8; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu32i_BFu0ll { unsigned int v1:8; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu32i_BFu0s { unsigned int v1:8; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu32ll_BFu0c { unsigned int v1:8; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu32ll_BFu0i { unsigned int v1:8; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu32ll_BFu0ll { unsigned int v1:8; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu32ll_BFu0s { unsigned int v1:8; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu33_BFu0c { unsigned int v1:8; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu33_BFu0i { unsigned int v1:8; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu33_BFu0ll { unsigned int v1:8; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu33_BFu0s { unsigned int v1:8; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu7c_BFu0c { unsigned int v1:8; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu7c_BFu0i { unsigned int v1:8; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu7c_BFu0ll { unsigned int v1:8; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu7c_BFu0s { unsigned int v1:8; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu7i_BFu0c { unsigned int v1:8; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu7i_BFu0i { unsigned int v1:8; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu7i_BFu0ll { unsigned int v1:8; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu7i_BFu0s { unsigned int v1:8; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu7ll_BFu0c { unsigned int v1:8; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu7ll_BFu0i { unsigned int v1:8; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu7ll_BFu0ll { unsigned int v1:8; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu7ll_BFu0s { unsigned int v1:8; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu7s_BFu0c { unsigned int v1:8; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu7s_BFu0i { unsigned int v1:8; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu7s_BFu0ll { unsigned int v1:8; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu7s_BFu0s { unsigned int v1:8; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu8c_BFu0c { unsigned int v1:8; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu8c_BFu0i { unsigned int v1:8; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu8c_BFu0ll { unsigned int v1:8; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu8c_BFu0s { unsigned int v1:8; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu8i_BFu0c { unsigned int v1:8; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu8i_BFu0i { unsigned int v1:8; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu8i_BFu0ll { unsigned int v1:8; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu8i_BFu0s { unsigned int v1:8; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu8ll_BFu0c { unsigned int v1:8; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu8ll_BFu0i { unsigned int v1:8; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu8ll_BFu0ll { unsigned int v1:8; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu8ll_BFu0s { unsigned int v1:8; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu8s_BFu0c { unsigned int v1:8; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu8s_BFu0i { unsigned int v1:8; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu8s_BFu0ll { unsigned int v1:8; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu8s_BFu0s { unsigned int v1:8; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu9i_BFu0c { unsigned int v1:8; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu9i_BFu0i { unsigned int v1:8; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu9i_BFu0ll { unsigned int v1:8; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu9i_BFu0s { unsigned int v1:8; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu9ll_BFu0c { unsigned int v1:8; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu9ll_BFu0i { unsigned int v1:8; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu9ll_BFu0ll { unsigned int v1:8; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu9ll_BFu0s { unsigned int v1:8; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_BFu9s_BFu0c { unsigned int v1:8; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_BFu9s_BFu0i { unsigned int v1:8; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_BFu9s_BFu0ll { unsigned int v1:8; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_BFu9s_BFu0s { unsigned int v1:8; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_C_BFu0c { unsigned int v1:8; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_C_BFu0i { unsigned int v1:8; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_C_BFu0ll { unsigned int v1:8; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_C_BFu0s { unsigned int v1:8; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_D_BFu0c { unsigned int v1:8; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_D_BFu0i { unsigned int v1:8; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_D_BFu0ll { unsigned int v1:8; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_D_BFu0s { unsigned int v1:8; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_F_BFu0c { unsigned int v1:8; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_F_BFu0i { unsigned int v1:8; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_F_BFu0ll { unsigned int v1:8; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_F_BFu0s { unsigned int v1:8; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_I_BFu0c { unsigned int v1:8; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_I_BFu0i { unsigned int v1:8; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_I_BFu0ll { unsigned int v1:8; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_I_BFu0s { unsigned int v1:8; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Ip_BFu0c { unsigned int v1:8; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Ip_BFu0i { unsigned int v1:8; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Ip_BFu0ll { unsigned int v1:8; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Ip_BFu0s { unsigned int v1:8; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_L_BFu0c { unsigned int v1:8; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_L_BFu0i { unsigned int v1:8; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_L_BFu0ll { unsigned int v1:8; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_L_BFu0s { unsigned int v1:8; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_S_BFu0c { unsigned int v1:8; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_S_BFu0i { unsigned int v1:8; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_S_BFu0ll { unsigned int v1:8; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_S_BFu0s { unsigned int v1:8; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Uc_BFu0c { unsigned int v1:8; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Uc_BFu0i { unsigned int v1:8; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Uc_BFu0ll { unsigned int v1:8; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Uc_BFu0s { unsigned int v1:8; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Ui_BFu0c { unsigned int v1:8; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Ui_BFu0i { unsigned int v1:8; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Ui_BFu0ll { unsigned int v1:8; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Ui_BFu0s { unsigned int v1:8; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Ul_BFu0c { unsigned int v1:8; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Ul_BFu0i { unsigned int v1:8; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Ul_BFu0ll { unsigned int v1:8; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Ul_BFu0s { unsigned int v1:8; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Us_BFu0c { unsigned int v1:8; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Us_BFu0i { unsigned int v1:8; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Us_BFu0ll { unsigned int v1:8; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Us_BFu0s { unsigned int v1:8; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8i_Vp_BFu0c { unsigned int v1:8; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8i_Vp_BFu0i { unsigned int v1:8; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8i_Vp_BFu0ll { unsigned int v1:8; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8i_Vp_BFu0s { unsigned int v1:8; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c { unsigned long long v1:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu0c { unsigned long long v1:8; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu0i { unsigned long long v1:8; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu0ll { unsigned long long v1:8; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu0s { unsigned long long v1:8; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu15i { unsigned long long v1:8; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu15ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu15s { unsigned long long v1:8; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu16i { unsigned long long v1:8; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu16ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu16s { unsigned long long v1:8; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu17i { unsigned long long v1:8; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu17ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu1c { unsigned long long v1:8; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu1i { unsigned long long v1:8; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu1ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu1s { unsigned long long v1:8; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu31i { unsigned long long v1:8; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu31ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu32i { unsigned long long v1:8; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu32ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu33 { unsigned long long v1:8; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu7c { unsigned long long v1:8; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu7i { unsigned long long v1:8; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu7ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu7s { unsigned long long v1:8; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu8c { unsigned long long v1:8; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu8i { unsigned long long v1:8; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu8ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu8s { unsigned long long v1:8; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu9i { unsigned long long v1:8; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu9ll { unsigned long long v1:8; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0c_BFu9s { unsigned long long v1:8; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0c_C { unsigned long long v1:8; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_D { unsigned long long v1:8; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_F { unsigned long long v1:8; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_I { unsigned long long v1:8; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Ip { unsigned long long v1:8; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_L { unsigned long long v1:8; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_S { unsigned long long v1:8; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Uc { unsigned long long v1:8; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Ui { unsigned long long v1:8; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Ul { unsigned long long v1:8; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Us { unsigned long long v1:8; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0c_Vp { unsigned long long v1:8; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i { unsigned long long v1:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu0c { unsigned long long v1:8; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu0i { unsigned long long v1:8; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu0ll { unsigned long long v1:8; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu0s { unsigned long long v1:8; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu15i { unsigned long long v1:8; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu15ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu15s { unsigned long long v1:8; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu16i { unsigned long long v1:8; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu16ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu16s { unsigned long long v1:8; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu17i { unsigned long long v1:8; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu17ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu1c { unsigned long long v1:8; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu1i { unsigned long long v1:8; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu1ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu1s { unsigned long long v1:8; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu31i { unsigned long long v1:8; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu31ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu32i { unsigned long long v1:8; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu32ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu33 { unsigned long long v1:8; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu7c { unsigned long long v1:8; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu7i { unsigned long long v1:8; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu7ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu7s { unsigned long long v1:8; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu8c { unsigned long long v1:8; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu8i { unsigned long long v1:8; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu8ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu8s { unsigned long long v1:8; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu9i { unsigned long long v1:8; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu9ll { unsigned long long v1:8; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0i_BFu9s { unsigned long long v1:8; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0i_C { unsigned long long v1:8; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_D { unsigned long long v1:8; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_F { unsigned long long v1:8; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_I { unsigned long long v1:8; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Ip { unsigned long long v1:8; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_L { unsigned long long v1:8; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_S { unsigned long long v1:8; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Uc { unsigned long long v1:8; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Ui { unsigned long long v1:8; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Ul { unsigned long long v1:8; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Us { unsigned long long v1:8; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0i_Vp { unsigned long long v1:8; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll { unsigned long long v1:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu0c { unsigned long long v1:8; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu0i { unsigned long long v1:8; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu0ll { unsigned long long v1:8; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu0s { unsigned long long v1:8; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu15i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu15ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu15s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu16i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu16ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu16s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu17i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu17ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu1c { unsigned long long v1:8; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu1i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu1ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu1s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu31i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu31ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu32i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu32ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu33 { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu7c { unsigned long long v1:8; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu7i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu7ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu7s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu8c { unsigned long long v1:8; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu8i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu8ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu8s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu9i { unsigned long long v1:8; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu9ll { unsigned long long v1:8; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_BFu9s { unsigned long long v1:8; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_C { unsigned long long v1:8; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_D { unsigned long long v1:8; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_F { unsigned long long v1:8; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_I { unsigned long long v1:8; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Ip { unsigned long long v1:8; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_L { unsigned long long v1:8; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_S { unsigned long long v1:8; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Uc { unsigned long long v1:8; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Ui { unsigned long long v1:8; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Ul { unsigned long long v1:8; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Us { unsigned long long v1:8; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0ll_Vp { unsigned long long v1:8; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s { unsigned long long v1:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu0c { unsigned long long v1:8; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu0i { unsigned long long v1:8; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu0ll { unsigned long long v1:8; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu0s { unsigned long long v1:8; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu15i { unsigned long long v1:8; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu15ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu15s { unsigned long long v1:8; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu16i { unsigned long long v1:8; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu16ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu16s { unsigned long long v1:8; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu17i { unsigned long long v1:8; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu17ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu1c { unsigned long long v1:8; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu1i { unsigned long long v1:8; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu1ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu1s { unsigned long long v1:8; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu31i { unsigned long long v1:8; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu31ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu32i { unsigned long long v1:8; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu32ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu33 { unsigned long long v1:8; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu7c { unsigned long long v1:8; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu7i { unsigned long long v1:8; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu7ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu7s { unsigned long long v1:8; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu8c { unsigned long long v1:8; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu8i { unsigned long long v1:8; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu8ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu8s { unsigned long long v1:8; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu9i { unsigned long long v1:8; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu9ll { unsigned long long v1:8; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0s_BFu9s { unsigned long long v1:8; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8ll_BFu0s_C { unsigned long long v1:8; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_D { unsigned long long v1:8; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_F { unsigned long long v1:8; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_I { unsigned long long v1:8; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Ip { unsigned long long v1:8; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_L { unsigned long long v1:8; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_S { unsigned long long v1:8; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Uc { unsigned long long v1:8; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Ui { unsigned long long v1:8; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Ul { unsigned long long v1:8; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Us { unsigned long long v1:8; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8ll_BFu0s_Vp { unsigned long long v1:8; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu8ll_BFu15i_BFu0c { unsigned long long v1:8; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu15i_BFu0i { unsigned long long v1:8; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu15i_BFu0ll { unsigned long long v1:8; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu15i_BFu0s { unsigned long long v1:8; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu15ll_BFu0c { unsigned long long v1:8; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu15ll_BFu0i { unsigned long long v1:8; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu15ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu15ll_BFu0s { unsigned long long v1:8; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu15s_BFu0c { unsigned long long v1:8; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu15s_BFu0i { unsigned long long v1:8; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu15s_BFu0ll { unsigned long long v1:8; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu15s_BFu0s { unsigned long long v1:8; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu16i_BFu0c { unsigned long long v1:8; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu16i_BFu0i { unsigned long long v1:8; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu16i_BFu0ll { unsigned long long v1:8; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu16i_BFu0s { unsigned long long v1:8; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu16ll_BFu0c { unsigned long long v1:8; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu16ll_BFu0i { unsigned long long v1:8; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu16ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu16ll_BFu0s { unsigned long long v1:8; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu16s_BFu0c { unsigned long long v1:8; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu16s_BFu0i { unsigned long long v1:8; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu16s_BFu0ll { unsigned long long v1:8; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu16s_BFu0s { unsigned long long v1:8; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu17i_BFu0c { unsigned long long v1:8; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu17i_BFu0i { unsigned long long v1:8; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu17i_BFu0ll { unsigned long long v1:8; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu17i_BFu0s { unsigned long long v1:8; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu17ll_BFu0c { unsigned long long v1:8; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu17ll_BFu0i { unsigned long long v1:8; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu17ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu17ll_BFu0s { unsigned long long v1:8; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu1c_BFu0c { unsigned long long v1:8; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu1c_BFu0i { unsigned long long v1:8; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu1c_BFu0ll { unsigned long long v1:8; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu1c_BFu0s { unsigned long long v1:8; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu1i_BFu0c { unsigned long long v1:8; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu1i_BFu0i { unsigned long long v1:8; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu1i_BFu0ll { unsigned long long v1:8; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu1i_BFu0s { unsigned long long v1:8; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu1ll_BFu0c { unsigned long long v1:8; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu1ll_BFu0i { unsigned long long v1:8; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu1ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu1ll_BFu0s { unsigned long long v1:8; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu1s_BFu0c { unsigned long long v1:8; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu1s_BFu0i { unsigned long long v1:8; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu1s_BFu0ll { unsigned long long v1:8; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu1s_BFu0s { unsigned long long v1:8; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu31i_BFu0c { unsigned long long v1:8; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu31i_BFu0i { unsigned long long v1:8; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu31i_BFu0ll { unsigned long long v1:8; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu31i_BFu0s { unsigned long long v1:8; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu31ll_BFu0c { unsigned long long v1:8; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu31ll_BFu0i { unsigned long long v1:8; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu31ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu31ll_BFu0s { unsigned long long v1:8; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu32i_BFu0c { unsigned long long v1:8; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu32i_BFu0i { unsigned long long v1:8; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu32i_BFu0ll { unsigned long long v1:8; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu32i_BFu0s { unsigned long long v1:8; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu32ll_BFu0c { unsigned long long v1:8; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu32ll_BFu0i { unsigned long long v1:8; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu32ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu32ll_BFu0s { unsigned long long v1:8; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu33_BFu0c { unsigned long long v1:8; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu33_BFu0i { unsigned long long v1:8; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu33_BFu0ll { unsigned long long v1:8; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu33_BFu0s { unsigned long long v1:8; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu7c_BFu0c { unsigned long long v1:8; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu7c_BFu0i { unsigned long long v1:8; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu7c_BFu0ll { unsigned long long v1:8; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu7c_BFu0s { unsigned long long v1:8; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu7i_BFu0c { unsigned long long v1:8; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu7i_BFu0i { unsigned long long v1:8; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu7i_BFu0ll { unsigned long long v1:8; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu7i_BFu0s { unsigned long long v1:8; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu7ll_BFu0c { unsigned long long v1:8; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu7ll_BFu0i { unsigned long long v1:8; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu7ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu7ll_BFu0s { unsigned long long v1:8; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu7s_BFu0c { unsigned long long v1:8; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu7s_BFu0i { unsigned long long v1:8; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu7s_BFu0ll { unsigned long long v1:8; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu7s_BFu0s { unsigned long long v1:8; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu8c_BFu0c { unsigned long long v1:8; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu8c_BFu0i { unsigned long long v1:8; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu8c_BFu0ll { unsigned long long v1:8; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu8c_BFu0s { unsigned long long v1:8; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu8i_BFu0c { unsigned long long v1:8; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu8i_BFu0i { unsigned long long v1:8; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu8i_BFu0ll { unsigned long long v1:8; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu8i_BFu0s { unsigned long long v1:8; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu8ll_BFu0c { unsigned long long v1:8; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu8ll_BFu0i { unsigned long long v1:8; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu8ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu8ll_BFu0s { unsigned long long v1:8; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu8s_BFu0c { unsigned long long v1:8; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu8s_BFu0i { unsigned long long v1:8; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu8s_BFu0ll { unsigned long long v1:8; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu8s_BFu0s { unsigned long long v1:8; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu9i_BFu0c { unsigned long long v1:8; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu9i_BFu0i { unsigned long long v1:8; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu9i_BFu0ll { unsigned long long v1:8; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu9i_BFu0s { unsigned long long v1:8; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu9ll_BFu0c { unsigned long long v1:8; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu9ll_BFu0i { unsigned long long v1:8; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu9ll_BFu0ll { unsigned long long v1:8; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu9ll_BFu0s { unsigned long long v1:8; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_BFu9s_BFu0c { unsigned long long v1:8; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_BFu9s_BFu0i { unsigned long long v1:8; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_BFu9s_BFu0ll { unsigned long long v1:8; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_BFu9s_BFu0s { unsigned long long v1:8; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_C_BFu0c { unsigned long long v1:8; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_C_BFu0i { unsigned long long v1:8; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_C_BFu0ll { unsigned long long v1:8; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_C_BFu0s { unsigned long long v1:8; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_D_BFu0c { unsigned long long v1:8; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_D_BFu0i { unsigned long long v1:8; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_D_BFu0ll { unsigned long long v1:8; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_D_BFu0s { unsigned long long v1:8; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_F_BFu0c { unsigned long long v1:8; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_F_BFu0i { unsigned long long v1:8; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_F_BFu0ll { unsigned long long v1:8; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_F_BFu0s { unsigned long long v1:8; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_I_BFu0c { unsigned long long v1:8; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_I_BFu0i { unsigned long long v1:8; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_I_BFu0ll { unsigned long long v1:8; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_I_BFu0s { unsigned long long v1:8; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Ip_BFu0c { unsigned long long v1:8; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Ip_BFu0i { unsigned long long v1:8; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Ip_BFu0ll { unsigned long long v1:8; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Ip_BFu0s { unsigned long long v1:8; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_L_BFu0c { unsigned long long v1:8; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_L_BFu0i { unsigned long long v1:8; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_L_BFu0ll { unsigned long long v1:8; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_L_BFu0s { unsigned long long v1:8; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_S_BFu0c { unsigned long long v1:8; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_S_BFu0i { unsigned long long v1:8; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_S_BFu0ll { unsigned long long v1:8; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_S_BFu0s { unsigned long long v1:8; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Uc_BFu0c { unsigned long long v1:8; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Uc_BFu0i { unsigned long long v1:8; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Uc_BFu0ll { unsigned long long v1:8; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Uc_BFu0s { unsigned long long v1:8; unsigned char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Ui_BFu0c { unsigned long long v1:8; unsigned int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Ui_BFu0i { unsigned long long v1:8; unsigned int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Ui_BFu0ll { unsigned long long v1:8; unsigned int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Ui_BFu0s { unsigned long long v1:8; unsigned int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Ul_BFu0c { unsigned long long v1:8; unsigned long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Ul_BFu0i { unsigned long long v1:8; unsigned long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Ul_BFu0ll { unsigned long long v1:8; unsigned long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Ul_BFu0s { unsigned long long v1:8; unsigned long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Us_BFu0c { unsigned long long v1:8; unsigned short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Us_BFu0i { unsigned long long v1:8; unsigned short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Us_BFu0ll { unsigned long long v1:8; unsigned short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Us_BFu0s { unsigned long long v1:8; unsigned short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8ll_Vp_BFu0c { unsigned long long v1:8; void * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8ll_Vp_BFu0i { unsigned long long v1:8; void * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8ll_Vp_BFu0ll { unsigned long long v1:8; void * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8ll_Vp_BFu0s { unsigned long long v1:8; void * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0c { unsigned short v1:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu0c { unsigned short v1:8; unsigned char :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu0i { unsigned short v1:8; unsigned char :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu0ll { unsigned short v1:8; unsigned char :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu0s { unsigned short v1:8; unsigned char :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu15i { unsigned short v1:8; unsigned char :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu15ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu15s { unsigned short v1:8; unsigned char :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu16i { unsigned short v1:8; unsigned char :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu16ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu16s { unsigned short v1:8; unsigned char :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu17i { unsigned short v1:8; unsigned char :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu17ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu1c { unsigned short v1:8; unsigned char :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu1i { unsigned short v1:8; unsigned char :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu1ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu1s { unsigned short v1:8; unsigned char :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu31i { unsigned short v1:8; unsigned char :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu31ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu32i { unsigned short v1:8; unsigned char :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu32ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu33 { unsigned short v1:8; unsigned char :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu7c { unsigned short v1:8; unsigned char :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu7i { unsigned short v1:8; unsigned char :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu7ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu7s { unsigned short v1:8; unsigned char :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu8c { unsigned short v1:8; unsigned char :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu8i { unsigned short v1:8; unsigned char :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu8ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu8s { unsigned short v1:8; unsigned char :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu9i { unsigned short v1:8; unsigned char :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu9ll { unsigned short v1:8; unsigned char :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0c_BFu9s { unsigned short v1:8; unsigned char :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0c_C { unsigned short v1:8; unsigned char :0; char v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_D { unsigned short v1:8; unsigned char :0; double v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_F { unsigned short v1:8; unsigned char :0; float v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_I { unsigned short v1:8; unsigned char :0; int v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Ip { unsigned short v1:8; unsigned char :0; int * v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_L { unsigned short v1:8; unsigned char :0; long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_S { unsigned short v1:8; unsigned char :0; short v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Uc { unsigned short v1:8; unsigned char :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Ui { unsigned short v1:8; unsigned char :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Ul { unsigned short v1:8; unsigned char :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Us { unsigned short v1:8; unsigned char :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8s_BFu0c_Vp { unsigned short v1:8; unsigned char :0; void * v2; };
struct __attribute__((packed)) aBFu8s_BFu0i { unsigned short v1:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu0c { unsigned short v1:8; unsigned int :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu0i { unsigned short v1:8; unsigned int :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu0ll { unsigned short v1:8; unsigned int :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu0s { unsigned short v1:8; unsigned int :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu15i { unsigned short v1:8; unsigned int :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu15ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu15s { unsigned short v1:8; unsigned int :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu16i { unsigned short v1:8; unsigned int :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu16ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu16s { unsigned short v1:8; unsigned int :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu17i { unsigned short v1:8; unsigned int :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu17ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu1c { unsigned short v1:8; unsigned int :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu1i { unsigned short v1:8; unsigned int :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu1ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu1s { unsigned short v1:8; unsigned int :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu31i { unsigned short v1:8; unsigned int :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu31ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu32i { unsigned short v1:8; unsigned int :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu32ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu33 { unsigned short v1:8; unsigned int :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu7c { unsigned short v1:8; unsigned int :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu7i { unsigned short v1:8; unsigned int :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu7ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu7s { unsigned short v1:8; unsigned int :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu8c { unsigned short v1:8; unsigned int :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu8i { unsigned short v1:8; unsigned int :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu8ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu8s { unsigned short v1:8; unsigned int :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu9i { unsigned short v1:8; unsigned int :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu9ll { unsigned short v1:8; unsigned int :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0i_BFu9s { unsigned short v1:8; unsigned int :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0i_C { unsigned short v1:8; unsigned int :0; char v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_D { unsigned short v1:8; unsigned int :0; double v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_F { unsigned short v1:8; unsigned int :0; float v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_I { unsigned short v1:8; unsigned int :0; int v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Ip { unsigned short v1:8; unsigned int :0; int * v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_L { unsigned short v1:8; unsigned int :0; long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_S { unsigned short v1:8; unsigned int :0; short v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Uc { unsigned short v1:8; unsigned int :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Ui { unsigned short v1:8; unsigned int :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Ul { unsigned short v1:8; unsigned int :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Us { unsigned short v1:8; unsigned int :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8s_BFu0i_Vp { unsigned short v1:8; unsigned int :0; void * v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll { unsigned short v1:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu0c { unsigned short v1:8; unsigned long long :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu0i { unsigned short v1:8; unsigned long long :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu0ll { unsigned short v1:8; unsigned long long :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu0s { unsigned short v1:8; unsigned long long :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu15i { unsigned short v1:8; unsigned long long :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu15ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu15s { unsigned short v1:8; unsigned long long :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu16i { unsigned short v1:8; unsigned long long :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu16ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu16s { unsigned short v1:8; unsigned long long :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu17i { unsigned short v1:8; unsigned long long :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu17ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu1c { unsigned short v1:8; unsigned long long :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu1i { unsigned short v1:8; unsigned long long :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu1ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu1s { unsigned short v1:8; unsigned long long :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu31i { unsigned short v1:8; unsigned long long :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu31ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu32i { unsigned short v1:8; unsigned long long :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu32ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu33 { unsigned short v1:8; unsigned long long :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu7c { unsigned short v1:8; unsigned long long :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu7i { unsigned short v1:8; unsigned long long :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu7ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu7s { unsigned short v1:8; unsigned long long :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu8c { unsigned short v1:8; unsigned long long :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu8i { unsigned short v1:8; unsigned long long :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu8ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu8s { unsigned short v1:8; unsigned long long :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu9i { unsigned short v1:8; unsigned long long :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu9ll { unsigned short v1:8; unsigned long long :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0ll_BFu9s { unsigned short v1:8; unsigned long long :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0ll_C { unsigned short v1:8; unsigned long long :0; char v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_D { unsigned short v1:8; unsigned long long :0; double v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_F { unsigned short v1:8; unsigned long long :0; float v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_I { unsigned short v1:8; unsigned long long :0; int v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Ip { unsigned short v1:8; unsigned long long :0; int * v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_L { unsigned short v1:8; unsigned long long :0; long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_S { unsigned short v1:8; unsigned long long :0; short v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Uc { unsigned short v1:8; unsigned long long :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Ui { unsigned short v1:8; unsigned long long :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Ul { unsigned short v1:8; unsigned long long :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Us { unsigned short v1:8; unsigned long long :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8s_BFu0ll_Vp { unsigned short v1:8; unsigned long long :0; void * v2; };
struct __attribute__((packed)) aBFu8s_BFu0s { unsigned short v1:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu0c { unsigned short v1:8; unsigned short :0; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu0i { unsigned short v1:8; unsigned short :0; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu0ll { unsigned short v1:8; unsigned short :0; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu0s { unsigned short v1:8; unsigned short :0; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu15i { unsigned short v1:8; unsigned short :0; unsigned int v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu15ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu15s { unsigned short v1:8; unsigned short :0; unsigned short v2:15; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu16i { unsigned short v1:8; unsigned short :0; unsigned int v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu16ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu16s { unsigned short v1:8; unsigned short :0; unsigned short v2:16; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu17i { unsigned short v1:8; unsigned short :0; unsigned int v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu17ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:17; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu1c { unsigned short v1:8; unsigned short :0; unsigned char v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu1i { unsigned short v1:8; unsigned short :0; unsigned int v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu1ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu1s { unsigned short v1:8; unsigned short :0; unsigned short v2:1; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu31i { unsigned short v1:8; unsigned short :0; unsigned int v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu31ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:31; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu32i { unsigned short v1:8; unsigned short :0; unsigned int v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu32ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:32; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu33 { unsigned short v1:8; unsigned short :0; unsigned long long v2:33; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu7c { unsigned short v1:8; unsigned short :0; unsigned char v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu7i { unsigned short v1:8; unsigned short :0; unsigned int v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu7ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu7s { unsigned short v1:8; unsigned short :0; unsigned short v2:7; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu8c { unsigned short v1:8; unsigned short :0; unsigned char v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu8i { unsigned short v1:8; unsigned short :0; unsigned int v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu8ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu8s { unsigned short v1:8; unsigned short :0; unsigned short v2:8; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu9i { unsigned short v1:8; unsigned short :0; unsigned int v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu9ll { unsigned short v1:8; unsigned short :0; unsigned long long v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0s_BFu9s { unsigned short v1:8; unsigned short :0; unsigned short v2:9; };
struct __attribute__((packed)) aBFu8s_BFu0s_C { unsigned short v1:8; unsigned short :0; char v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_D { unsigned short v1:8; unsigned short :0; double v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_F { unsigned short v1:8; unsigned short :0; float v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_I { unsigned short v1:8; unsigned short :0; int v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Ip { unsigned short v1:8; unsigned short :0; int * v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_L { unsigned short v1:8; unsigned short :0; long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_S { unsigned short v1:8; unsigned short :0; short v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Uc { unsigned short v1:8; unsigned short :0; unsigned char v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Ui { unsigned short v1:8; unsigned short :0; unsigned int v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Ul { unsigned short v1:8; unsigned short :0; unsigned long long v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Us { unsigned short v1:8; unsigned short :0; unsigned short v2; };
struct __attribute__((packed)) aBFu8s_BFu0s_Vp { unsigned short v1:8; unsigned short :0; void * v2; };
struct __attribute__((packed)) aBFu8s_BFu15i_BFu0c { unsigned short v1:8; unsigned int v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu15i_BFu0i { unsigned short v1:8; unsigned int v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu15i_BFu0ll { unsigned short v1:8; unsigned int v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu15i_BFu0s { unsigned short v1:8; unsigned int v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu15ll_BFu0c { unsigned short v1:8; unsigned long long v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu15ll_BFu0i { unsigned short v1:8; unsigned long long v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu15ll_BFu0ll { unsigned short v1:8; unsigned long long v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu15ll_BFu0s { unsigned short v1:8; unsigned long long v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu15s_BFu0c { unsigned short v1:8; unsigned short v2:15; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu15s_BFu0i { unsigned short v1:8; unsigned short v2:15; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu15s_BFu0ll { unsigned short v1:8; unsigned short v2:15; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu15s_BFu0s { unsigned short v1:8; unsigned short v2:15; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu16i_BFu0c { unsigned short v1:8; unsigned int v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu16i_BFu0i { unsigned short v1:8; unsigned int v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu16i_BFu0ll { unsigned short v1:8; unsigned int v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu16i_BFu0s { unsigned short v1:8; unsigned int v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu16ll_BFu0c { unsigned short v1:8; unsigned long long v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu16ll_BFu0i { unsigned short v1:8; unsigned long long v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu16ll_BFu0ll { unsigned short v1:8; unsigned long long v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu16ll_BFu0s { unsigned short v1:8; unsigned long long v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu16s_BFu0c { unsigned short v1:8; unsigned short v2:16; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu16s_BFu0i { unsigned short v1:8; unsigned short v2:16; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu16s_BFu0ll { unsigned short v1:8; unsigned short v2:16; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu16s_BFu0s { unsigned short v1:8; unsigned short v2:16; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu17i_BFu0c { unsigned short v1:8; unsigned int v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu17i_BFu0i { unsigned short v1:8; unsigned int v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu17i_BFu0ll { unsigned short v1:8; unsigned int v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu17i_BFu0s { unsigned short v1:8; unsigned int v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu17ll_BFu0c { unsigned short v1:8; unsigned long long v2:17; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu17ll_BFu0i { unsigned short v1:8; unsigned long long v2:17; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu17ll_BFu0ll { unsigned short v1:8; unsigned long long v2:17; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu17ll_BFu0s { unsigned short v1:8; unsigned long long v2:17; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu1c_BFu0c { unsigned short v1:8; unsigned char v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu1c_BFu0i { unsigned short v1:8; unsigned char v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu1c_BFu0ll { unsigned short v1:8; unsigned char v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu1c_BFu0s { unsigned short v1:8; unsigned char v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu1i_BFu0c { unsigned short v1:8; unsigned int v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu1i_BFu0i { unsigned short v1:8; unsigned int v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu1i_BFu0ll { unsigned short v1:8; unsigned int v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu1i_BFu0s { unsigned short v1:8; unsigned int v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu1ll_BFu0c { unsigned short v1:8; unsigned long long v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu1ll_BFu0i { unsigned short v1:8; unsigned long long v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu1ll_BFu0ll { unsigned short v1:8; unsigned long long v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu1ll_BFu0s { unsigned short v1:8; unsigned long long v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu1s_BFu0c { unsigned short v1:8; unsigned short v2:1; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu1s_BFu0i { unsigned short v1:8; unsigned short v2:1; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu1s_BFu0ll { unsigned short v1:8; unsigned short v2:1; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu1s_BFu0s { unsigned short v1:8; unsigned short v2:1; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu31i_BFu0c { unsigned short v1:8; unsigned int v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu31i_BFu0i { unsigned short v1:8; unsigned int v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu31i_BFu0ll { unsigned short v1:8; unsigned int v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu31i_BFu0s { unsigned short v1:8; unsigned int v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu31ll_BFu0c { unsigned short v1:8; unsigned long long v2:31; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu31ll_BFu0i { unsigned short v1:8; unsigned long long v2:31; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu31ll_BFu0ll { unsigned short v1:8; unsigned long long v2:31; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu31ll_BFu0s { unsigned short v1:8; unsigned long long v2:31; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu32i_BFu0c { unsigned short v1:8; unsigned int v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu32i_BFu0i { unsigned short v1:8; unsigned int v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu32i_BFu0ll { unsigned short v1:8; unsigned int v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu32i_BFu0s { unsigned short v1:8; unsigned int v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu32ll_BFu0c { unsigned short v1:8; unsigned long long v2:32; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu32ll_BFu0i { unsigned short v1:8; unsigned long long v2:32; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu32ll_BFu0ll { unsigned short v1:8; unsigned long long v2:32; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu32ll_BFu0s { unsigned short v1:8; unsigned long long v2:32; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu33_BFu0c { unsigned short v1:8; unsigned long long v2:33; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu33_BFu0i { unsigned short v1:8; unsigned long long v2:33; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu33_BFu0ll { unsigned short v1:8; unsigned long long v2:33; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu33_BFu0s { unsigned short v1:8; unsigned long long v2:33; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu7c_BFu0c { unsigned short v1:8; unsigned char v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu7c_BFu0i { unsigned short v1:8; unsigned char v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu7c_BFu0ll { unsigned short v1:8; unsigned char v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu7c_BFu0s { unsigned short v1:8; unsigned char v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu7i_BFu0c { unsigned short v1:8; unsigned int v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu7i_BFu0i { unsigned short v1:8; unsigned int v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu7i_BFu0ll { unsigned short v1:8; unsigned int v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu7i_BFu0s { unsigned short v1:8; unsigned int v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu7ll_BFu0c { unsigned short v1:8; unsigned long long v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu7ll_BFu0i { unsigned short v1:8; unsigned long long v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu7ll_BFu0ll { unsigned short v1:8; unsigned long long v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu7ll_BFu0s { unsigned short v1:8; unsigned long long v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu7s_BFu0c { unsigned short v1:8; unsigned short v2:7; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu7s_BFu0i { unsigned short v1:8; unsigned short v2:7; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu7s_BFu0ll { unsigned short v1:8; unsigned short v2:7; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu7s_BFu0s { unsigned short v1:8; unsigned short v2:7; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu8c_BFu0c { unsigned short v1:8; unsigned char v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu8c_BFu0i { unsigned short v1:8; unsigned char v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu8c_BFu0ll { unsigned short v1:8; unsigned char v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu8c_BFu0s { unsigned short v1:8; unsigned char v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu8i_BFu0c { unsigned short v1:8; unsigned int v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu8i_BFu0i { unsigned short v1:8; unsigned int v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu8i_BFu0ll { unsigned short v1:8; unsigned int v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu8i_BFu0s { unsigned short v1:8; unsigned int v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu8ll_BFu0c { unsigned short v1:8; unsigned long long v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu8ll_BFu0i { unsigned short v1:8; unsigned long long v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu8ll_BFu0ll { unsigned short v1:8; unsigned long long v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu8ll_BFu0s { unsigned short v1:8; unsigned long long v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu8s_BFu0c { unsigned short v1:8; unsigned short v2:8; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu8s_BFu0i { unsigned short v1:8; unsigned short v2:8; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu8s_BFu0ll { unsigned short v1:8; unsigned short v2:8; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu8s_BFu0s { unsigned short v1:8; unsigned short v2:8; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu9i_BFu0c { unsigned short v1:8; unsigned int v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu9i_BFu0i { unsigned short v1:8; unsigned int v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu9i_BFu0ll { unsigned short v1:8; unsigned int v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu9i_BFu0s { unsigned short v1:8; unsigned int v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu9ll_BFu0c { unsigned short v1:8; unsigned long long v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu9ll_BFu0i { unsigned short v1:8; unsigned long long v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu9ll_BFu0ll { unsigned short v1:8; unsigned long long v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu9ll_BFu0s { unsigned short v1:8; unsigned long long v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_BFu9s_BFu0c { unsigned short v1:8; unsigned short v2:9; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_BFu9s_BFu0i { unsigned short v1:8; unsigned short v2:9; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_BFu9s_BFu0ll { unsigned short v1:8; unsigned short v2:9; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_BFu9s_BFu0s { unsigned short v1:8; unsigned short v2:9; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_C_BFu0c { unsigned short v1:8; char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_C_BFu0i { unsigned short v1:8; char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_C_BFu0ll { unsigned short v1:8; char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_C_BFu0s { unsigned short v1:8; char v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_D_BFu0c { unsigned short v1:8; double v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_D_BFu0i { unsigned short v1:8; double v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_D_BFu0ll { unsigned short v1:8; double v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_D_BFu0s { unsigned short v1:8; double v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_F_BFu0c { unsigned short v1:8; float v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_F_BFu0i { unsigned short v1:8; float v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_F_BFu0ll { unsigned short v1:8; float v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_F_BFu0s { unsigned short v1:8; float v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_I_BFu0c { unsigned short v1:8; int v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_I_BFu0i { unsigned short v1:8; int v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_I_BFu0ll { unsigned short v1:8; int v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_I_BFu0s { unsigned short v1:8; int v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_Ip_BFu0c { unsigned short v1:8; int * v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_Ip_BFu0i { unsigned short v1:8; int * v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_Ip_BFu0ll { unsigned short v1:8; int * v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_Ip_BFu0s { unsigned short v1:8; int * v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_L_BFu0c { unsigned short v1:8; long long v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_L_BFu0i { unsigned short v1:8; long long v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_L_BFu0ll { unsigned short v1:8; long long v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_L_BFu0s { unsigned short v1:8; long long v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_S_BFu0c { unsigned short v1:8; short v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_S_BFu0i { unsigned short v1:8; short v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_S_BFu0ll { unsigned short v1:8; short v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_S_BFu0s { unsigned short v1:8; short v2; unsigned short :0; };
struct __attribute__((packed)) aBFu8s_Uc_BFu0c { unsigned short v1:8; unsigned char v2; unsigned char :0; };
struct __attribute__((packed)) aBFu8s_Uc_BFu0i { unsigned short v1:8; unsigned char v2; unsigned int :0; };
struct __attribute__((packed)) aBFu8s_Uc_BFu0ll { unsigned short v1:8; unsigned char v2; unsigned long long :0; };
struct __attribute__((packed)) aBFu8s_Uc_BFu0s { unsigned short v1:8; unsigned char v2; unsigned short :0; };
#endif // __cplusplus
#ifdef __cplusplus


static void Test_aBFu33_BFu0c_Vp()
{
  {
    init_simple_test("aBFu33_BFu0c_Vp");
    static aBFu33_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu33_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0c_Vp");
    check_field_offset(lv, v2, 5, "aBFu33_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0c_Vp(Test_aBFu33_BFu0c_Vp, "aBFu33_BFu0c_Vp", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu0i");
    static aBFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i(Test_aBFu33_BFu0i, "aBFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu0c");
    static aBFu33_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu0c(Test_aBFu33_BFu0i_BFu0c, "aBFu33_BFu0i_BFu0c", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu0i");
    static aBFu33_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu0i(Test_aBFu33_BFu0i_BFu0i, "aBFu33_BFu0i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu0ll");
    static aBFu33_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu0ll(Test_aBFu33_BFu0i_BFu0ll, "aBFu33_BFu0i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu0s");
    static aBFu33_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu0s(Test_aBFu33_BFu0i_BFu0s, "aBFu33_BFu0i_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu15i");
    static aBFu33_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu15i(Test_aBFu33_BFu0i_BFu15i, "aBFu33_BFu0i_BFu15i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu15ll");
    static aBFu33_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu15ll(Test_aBFu33_BFu0i_BFu15ll, "aBFu33_BFu0i_BFu15ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu15s");
    static aBFu33_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu15s(Test_aBFu33_BFu0i_BFu15s, "aBFu33_BFu0i_BFu15s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu16i");
    static aBFu33_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu16i(Test_aBFu33_BFu0i_BFu16i, "aBFu33_BFu0i_BFu16i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu16ll");
    static aBFu33_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu16ll(Test_aBFu33_BFu0i_BFu16ll, "aBFu33_BFu0i_BFu16ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu16s");
    static aBFu33_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu16s(Test_aBFu33_BFu0i_BFu16s, "aBFu33_BFu0i_BFu16s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu17i");
    static aBFu33_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(aBFu33_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, 1, "aBFu33_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu17i(Test_aBFu33_BFu0i_BFu17i, "aBFu33_BFu0i_BFu17i", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu17ll");
    static aBFu33_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(aBFu33_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, 1, "aBFu33_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu17ll(Test_aBFu33_BFu0i_BFu17ll, "aBFu33_BFu0i_BFu17ll", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu31i");
    static aBFu33_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, 1, "aBFu33_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu31i(Test_aBFu33_BFu0i_BFu31i, "aBFu33_BFu0i_BFu31i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu31ll");
    static aBFu33_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, 1, "aBFu33_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu31ll(Test_aBFu33_BFu0i_BFu31ll, "aBFu33_BFu0i_BFu31ll", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu32i");
    static aBFu33_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, 1, "aBFu33_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu32i(Test_aBFu33_BFu0i_BFu32i, "aBFu33_BFu0i_BFu32i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu32ll");
    static aBFu33_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, 1, "aBFu33_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu32ll(Test_aBFu33_BFu0i_BFu32ll, "aBFu33_BFu0i_BFu32ll", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu33");
    static aBFu33_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,13), "sizeof(aBFu33_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 33, 1, "aBFu33_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu33(Test_aBFu33_BFu0i_BFu33, "aBFu33_BFu0i_BFu33", ABISELECT(13,13));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu7c");
    static aBFu33_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu7c(Test_aBFu33_BFu0i_BFu7c, "aBFu33_BFu0i_BFu7c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu7i");
    static aBFu33_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu7i(Test_aBFu33_BFu0i_BFu7i, "aBFu33_BFu0i_BFu7i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu7ll");
    static aBFu33_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu7ll(Test_aBFu33_BFu0i_BFu7ll, "aBFu33_BFu0i_BFu7ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu33_BFu0i_BFu7s");
    static aBFu33_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_BFu7s(Test_aBFu33_BFu0i_BFu7s, "aBFu33_BFu0i_BFu7s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_C()
{
  {
    init_simple_test("aBFu33_BFu0i_C");
    static aBFu33_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_C(Test_aBFu33_BFu0i_C, "aBFu33_BFu0i_C", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_D()
{
  {
    init_simple_test("aBFu33_BFu0i_D");
    static aBFu33_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_D(Test_aBFu33_BFu0i_D, "aBFu33_BFu0i_D", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_F()
{
  {
    init_simple_test("aBFu33_BFu0i_F");
    static aBFu33_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_F(Test_aBFu33_BFu0i_F, "aBFu33_BFu0i_F", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_I()
{
  {
    init_simple_test("aBFu33_BFu0i_I");
    static aBFu33_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_I(Test_aBFu33_BFu0i_I, "aBFu33_BFu0i_I", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Ip()
{
  {
    init_simple_test("aBFu33_BFu0i_Ip");
    static aBFu33_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Ip(Test_aBFu33_BFu0i_Ip, "aBFu33_BFu0i_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_L()
{
  {
    init_simple_test("aBFu33_BFu0i_L");
    static aBFu33_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_L(Test_aBFu33_BFu0i_L, "aBFu33_BFu0i_L", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_S()
{
  {
    init_simple_test("aBFu33_BFu0i_S");
    static aBFu33_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_S(Test_aBFu33_BFu0i_S, "aBFu33_BFu0i_S", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Uc()
{
  {
    init_simple_test("aBFu33_BFu0i_Uc");
    static aBFu33_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Uc(Test_aBFu33_BFu0i_Uc, "aBFu33_BFu0i_Uc", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Ui()
{
  {
    init_simple_test("aBFu33_BFu0i_Ui");
    static aBFu33_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Ui(Test_aBFu33_BFu0i_Ui, "aBFu33_BFu0i_Ui", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Ul()
{
  {
    init_simple_test("aBFu33_BFu0i_Ul");
    static aBFu33_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Ul(Test_aBFu33_BFu0i_Ul, "aBFu33_BFu0i_Ul", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Us()
{
  {
    init_simple_test("aBFu33_BFu0i_Us");
    static aBFu33_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Us(Test_aBFu33_BFu0i_Us, "aBFu33_BFu0i_Us", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0i_Vp()
{
  {
    init_simple_test("aBFu33_BFu0i_Vp");
    static aBFu33_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0i_Vp(Test_aBFu33_BFu0i_Vp, "aBFu33_BFu0i_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu0ll");
    static aBFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll(Test_aBFu33_BFu0ll, "aBFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu0c");
    static aBFu33_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu0c(Test_aBFu33_BFu0ll_BFu0c, "aBFu33_BFu0ll_BFu0c", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu0i");
    static aBFu33_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu0i(Test_aBFu33_BFu0ll_BFu0i, "aBFu33_BFu0ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu0ll");
    static aBFu33_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu0ll(Test_aBFu33_BFu0ll_BFu0ll, "aBFu33_BFu0ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu0s");
    static aBFu33_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu0s(Test_aBFu33_BFu0ll_BFu0s, "aBFu33_BFu0ll_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu15i");
    static aBFu33_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu15i(Test_aBFu33_BFu0ll_BFu15i, "aBFu33_BFu0ll_BFu15i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu15ll");
    static aBFu33_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu15ll(Test_aBFu33_BFu0ll_BFu15ll, "aBFu33_BFu0ll_BFu15ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu15s");
    static aBFu33_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, 1, "aBFu33_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu15s(Test_aBFu33_BFu0ll_BFu15s, "aBFu33_BFu0ll_BFu15s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu16i");
    static aBFu33_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu16i(Test_aBFu33_BFu0ll_BFu16i, "aBFu33_BFu0ll_BFu16i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu16ll");
    static aBFu33_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu16ll(Test_aBFu33_BFu0ll_BFu16ll, "aBFu33_BFu0ll_BFu16ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu16s");
    static aBFu33_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, 1, "aBFu33_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu16s(Test_aBFu33_BFu0ll_BFu16s, "aBFu33_BFu0ll_BFu16s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu17i");
    static aBFu33_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(aBFu33_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, 1, "aBFu33_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu17i(Test_aBFu33_BFu0ll_BFu17i, "aBFu33_BFu0ll_BFu17i", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu17ll");
    static aBFu33_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(aBFu33_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, 1, "aBFu33_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu17ll(Test_aBFu33_BFu0ll_BFu17ll, "aBFu33_BFu0ll_BFu17ll", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu31i");
    static aBFu33_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, 1, "aBFu33_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu31i(Test_aBFu33_BFu0ll_BFu31i, "aBFu33_BFu0ll_BFu31i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu31ll");
    static aBFu33_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, 1, "aBFu33_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu31ll(Test_aBFu33_BFu0ll_BFu31ll, "aBFu33_BFu0ll_BFu31ll", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu32i");
    static aBFu33_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, 1, "aBFu33_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu32i(Test_aBFu33_BFu0ll_BFu32i, "aBFu33_BFu0ll_BFu32i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu32ll");
    static aBFu33_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, 1, "aBFu33_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu32ll(Test_aBFu33_BFu0ll_BFu32ll, "aBFu33_BFu0ll_BFu32ll", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu33");
    static aBFu33_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,13), "sizeof(aBFu33_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 33, 1, "aBFu33_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu33(Test_aBFu33_BFu0ll_BFu33, "aBFu33_BFu0ll_BFu33", ABISELECT(13,13));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu7c");
    static aBFu33_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu7c(Test_aBFu33_BFu0ll_BFu7c, "aBFu33_BFu0ll_BFu7c", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu7i");
    static aBFu33_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu7i(Test_aBFu33_BFu0ll_BFu7i, "aBFu33_BFu0ll_BFu7i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu7ll");
    static aBFu33_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu7ll(Test_aBFu33_BFu0ll_BFu7ll, "aBFu33_BFu0ll_BFu7ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu33_BFu0ll_BFu7s");
    static aBFu33_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, 1, "aBFu33_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,8), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_BFu7s(Test_aBFu33_BFu0ll_BFu7s, "aBFu33_BFu0ll_BFu7s", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_C()
{
  {
    init_simple_test("aBFu33_BFu0ll_C");
    static aBFu33_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_C(Test_aBFu33_BFu0ll_C, "aBFu33_BFu0ll_C", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_D()
{
  {
    init_simple_test("aBFu33_BFu0ll_D");
    static aBFu33_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_D(Test_aBFu33_BFu0ll_D, "aBFu33_BFu0ll_D", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_F()
{
  {
    init_simple_test("aBFu33_BFu0ll_F");
    static aBFu33_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_F(Test_aBFu33_BFu0ll_F, "aBFu33_BFu0ll_F", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_I()
{
  {
    init_simple_test("aBFu33_BFu0ll_I");
    static aBFu33_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_I(Test_aBFu33_BFu0ll_I, "aBFu33_BFu0ll_I", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu33_BFu0ll_Ip");
    static aBFu33_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Ip(Test_aBFu33_BFu0ll_Ip, "aBFu33_BFu0ll_Ip", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_L()
{
  {
    init_simple_test("aBFu33_BFu0ll_L");
    static aBFu33_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_L(Test_aBFu33_BFu0ll_L, "aBFu33_BFu0ll_L", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_S()
{
  {
    init_simple_test("aBFu33_BFu0ll_S");
    static aBFu33_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_S(Test_aBFu33_BFu0ll_S, "aBFu33_BFu0ll_S", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu33_BFu0ll_Uc");
    static aBFu33_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Uc(Test_aBFu33_BFu0ll_Uc, "aBFu33_BFu0ll_Uc", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu33_BFu0ll_Ui");
    static aBFu33_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Ui(Test_aBFu33_BFu0ll_Ui, "aBFu33_BFu0ll_Ui", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu33_BFu0ll_Ul");
    static aBFu33_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Ul(Test_aBFu33_BFu0ll_Ul, "aBFu33_BFu0ll_Ul", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Us()
{
  {
    init_simple_test("aBFu33_BFu0ll_Us");
    static aBFu33_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Us(Test_aBFu33_BFu0ll_Us, "aBFu33_BFu0ll_Us", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu33_BFu0ll_Vp");
    static aBFu33_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,8), "aBFu33_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0ll_Vp(Test_aBFu33_BFu0ll_Vp, "aBFu33_BFu0ll_Vp", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu0s");
    static aBFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s(Test_aBFu33_BFu0s, "aBFu33_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu0c");
    static aBFu33_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu0c(Test_aBFu33_BFu0s_BFu0c, "aBFu33_BFu0s_BFu0c", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu0i");
    static aBFu33_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu0i(Test_aBFu33_BFu0s_BFu0i, "aBFu33_BFu0s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu0ll");
    static aBFu33_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu0ll(Test_aBFu33_BFu0s_BFu0ll, "aBFu33_BFu0s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu0s");
    static aBFu33_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu0s(Test_aBFu33_BFu0s_BFu0s, "aBFu33_BFu0s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu15i");
    static aBFu33_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, 1, "aBFu33_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu15i(Test_aBFu33_BFu0s_BFu15i, "aBFu33_BFu0s_BFu15i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu15ll");
    static aBFu33_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, 1, "aBFu33_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu15ll(Test_aBFu33_BFu0s_BFu15ll, "aBFu33_BFu0s_BFu15ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu15s");
    static aBFu33_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, 1, "aBFu33_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu33_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu15s(Test_aBFu33_BFu0s_BFu15s, "aBFu33_BFu0s_BFu15s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu16i");
    static aBFu33_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, 1, "aBFu33_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu16i(Test_aBFu33_BFu0s_BFu16i, "aBFu33_BFu0s_BFu16i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu16ll");
    static aBFu33_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, 1, "aBFu33_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu16ll(Test_aBFu33_BFu0s_BFu16ll, "aBFu33_BFu0s_BFu16ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu16s");
    static aBFu33_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, 1, "aBFu33_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu33_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu16s(Test_aBFu33_BFu0s_BFu16s, "aBFu33_BFu0s_BFu16s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu17i");
    static aBFu33_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 17, 1, "aBFu33_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu17i(Test_aBFu33_BFu0s_BFu17i, "aBFu33_BFu0s_BFu17i", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu17ll");
    static aBFu33_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu33_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 17, 1, "aBFu33_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu33_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu17ll(Test_aBFu33_BFu0s_BFu17ll, "aBFu33_BFu0s_BFu17ll", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu1c");
    static aBFu33_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 1, 1, "aBFu33_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu1c(Test_aBFu33_BFu0s_BFu1c, "aBFu33_BFu0s_BFu1c", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu1i");
    static aBFu33_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 1, 1, "aBFu33_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu1i(Test_aBFu33_BFu0s_BFu1i, "aBFu33_BFu0s_BFu1i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu1ll");
    static aBFu33_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 1, 1, "aBFu33_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu1ll(Test_aBFu33_BFu0s_BFu1ll, "aBFu33_BFu0s_BFu1ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu1s");
    static aBFu33_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 1, 1, "aBFu33_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu1s(Test_aBFu33_BFu0s_BFu1s, "aBFu33_BFu0s_BFu1s", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu31i");
    static aBFu33_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 31, 1, "aBFu33_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu31i(Test_aBFu33_BFu0s_BFu31i, "aBFu33_BFu0s_BFu31i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu31ll");
    static aBFu33_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 31, 1, "aBFu33_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu33_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu31ll(Test_aBFu33_BFu0s_BFu31ll, "aBFu33_BFu0s_BFu31ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu32i");
    static aBFu33_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 32, 1, "aBFu33_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu32i(Test_aBFu33_BFu0s_BFu32i, "aBFu33_BFu0s_BFu32i", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu32ll");
    static aBFu33_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 32, 1, "aBFu33_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu33_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu32ll(Test_aBFu33_BFu0s_BFu32ll, "aBFu33_BFu0s_BFu32ll", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu33");
    static aBFu33_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(11,11), "sizeof(aBFu33_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 33, 1, "aBFu33_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu33(Test_aBFu33_BFu0s_BFu33, "aBFu33_BFu0s_BFu33", ABISELECT(11,11));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu7c");
    static aBFu33_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, 1, "aBFu33_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu7c(Test_aBFu33_BFu0s_BFu7c, "aBFu33_BFu0s_BFu7c", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu7i");
    static aBFu33_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, 1, "aBFu33_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu7i(Test_aBFu33_BFu0s_BFu7i, "aBFu33_BFu0s_BFu7i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu7ll");
    static aBFu33_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, 1, "aBFu33_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu7ll(Test_aBFu33_BFu0s_BFu7ll, "aBFu33_BFu0s_BFu7ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu7s");
    static aBFu33_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, 1, "aBFu33_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu33_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu7s(Test_aBFu33_BFu0s_BFu7s, "aBFu33_BFu0s_BFu7s", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu8c");
    static aBFu33_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, 1, "aBFu33_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu8c(Test_aBFu33_BFu0s_BFu8c, "aBFu33_BFu0s_BFu8c", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu8i");
    static aBFu33_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, 1, "aBFu33_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu8i(Test_aBFu33_BFu0s_BFu8i, "aBFu33_BFu0s_BFu8i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu8ll");
    static aBFu33_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, 1, "aBFu33_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu8ll(Test_aBFu33_BFu0s_BFu8ll, "aBFu33_BFu0s_BFu8ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu33_BFu0s_BFu8s");
    static aBFu33_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, 1, "aBFu33_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(6,6), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu33_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_BFu8s(Test_aBFu33_BFu0s_BFu8s, "aBFu33_BFu0s_BFu8s", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_C()
{
  {
    init_simple_test("aBFu33_BFu0s_C");
    static aBFu33_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_C(Test_aBFu33_BFu0s_C, "aBFu33_BFu0s_C", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_D()
{
  {
    init_simple_test("aBFu33_BFu0s_D");
    static aBFu33_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_D(Test_aBFu33_BFu0s_D, "aBFu33_BFu0s_D", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_F()
{
  {
    init_simple_test("aBFu33_BFu0s_F");
    static aBFu33_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_F(Test_aBFu33_BFu0s_F, "aBFu33_BFu0s_F", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_I()
{
  {
    init_simple_test("aBFu33_BFu0s_I");
    static aBFu33_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_I(Test_aBFu33_BFu0s_I, "aBFu33_BFu0s_I", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Ip()
{
  {
    init_simple_test("aBFu33_BFu0s_Ip");
    static aBFu33_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(14,10), "sizeof(aBFu33_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Ip(Test_aBFu33_BFu0s_Ip, "aBFu33_BFu0s_Ip", ABISELECT(14,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_L()
{
  {
    init_simple_test("aBFu33_BFu0s_L");
    static aBFu33_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_L(Test_aBFu33_BFu0s_L, "aBFu33_BFu0s_L", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_S()
{
  {
    init_simple_test("aBFu33_BFu0s_S");
    static aBFu33_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_S(Test_aBFu33_BFu0s_S, "aBFu33_BFu0s_S", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Uc()
{
  {
    init_simple_test("aBFu33_BFu0s_Uc");
    static aBFu33_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu33_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Uc(Test_aBFu33_BFu0s_Uc, "aBFu33_BFu0s_Uc", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Ui()
{
  {
    init_simple_test("aBFu33_BFu0s_Ui");
    static aBFu33_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Ui(Test_aBFu33_BFu0s_Ui, "aBFu33_BFu0s_Ui", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Ul()
{
  {
    init_simple_test("aBFu33_BFu0s_Ul");
    static aBFu33_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Ul(Test_aBFu33_BFu0s_Ul, "aBFu33_BFu0s_Ul", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Us()
{
  {
    init_simple_test("aBFu33_BFu0s_Us");
    static aBFu33_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Us(Test_aBFu33_BFu0s_Us, "aBFu33_BFu0s_Us", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu0s_Vp()
{
  {
    init_simple_test("aBFu33_BFu0s_Vp");
    static aBFu33_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(14,10), "sizeof(aBFu33_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(6,6), "aBFu33_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu0s_Vp(Test_aBFu33_BFu0s_Vp, "aBFu33_BFu0s_Vp", ABISELECT(14,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu15i_BFu0c");
    static aBFu33_BFu15i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15i_BFu0c(Test_aBFu33_BFu15i_BFu0c, "aBFu33_BFu15i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu15i_BFu0i");
    static aBFu33_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15i_BFu0i(Test_aBFu33_BFu15i_BFu0i, "aBFu33_BFu15i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu15i_BFu0ll");
    static aBFu33_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15i_BFu0ll(Test_aBFu33_BFu15i_BFu0ll, "aBFu33_BFu15i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu15i_BFu0s");
    static aBFu33_BFu15i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15i_BFu0s(Test_aBFu33_BFu15i_BFu0s, "aBFu33_BFu15i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu15ll_BFu0c");
    static aBFu33_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15ll_BFu0c(Test_aBFu33_BFu15ll_BFu0c, "aBFu33_BFu15ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu15ll_BFu0i");
    static aBFu33_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15ll_BFu0i(Test_aBFu33_BFu15ll_BFu0i, "aBFu33_BFu15ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu15ll_BFu0ll");
    static aBFu33_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15ll_BFu0ll(Test_aBFu33_BFu15ll_BFu0ll, "aBFu33_BFu15ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu15ll_BFu0s");
    static aBFu33_BFu15ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15ll_BFu0s(Test_aBFu33_BFu15ll_BFu0s, "aBFu33_BFu15ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu15s_BFu0c");
    static aBFu33_BFu15s_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15s_BFu0c(Test_aBFu33_BFu15s_BFu0c, "aBFu33_BFu15s_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu15s_BFu0i");
    static aBFu33_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15s_BFu0i(Test_aBFu33_BFu15s_BFu0i, "aBFu33_BFu15s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu15s_BFu0ll");
    static aBFu33_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15s_BFu0ll(Test_aBFu33_BFu15s_BFu0ll, "aBFu33_BFu15s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu15s_BFu0s");
    static aBFu33_BFu15s_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, 1, "aBFu33_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 15, hide_ull(1LL<<14), "aBFu33_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu15s_BFu0s(Test_aBFu33_BFu15s_BFu0s, "aBFu33_BFu15s_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu16i_BFu0c");
    static aBFu33_BFu16i_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16i_BFu0c(Test_aBFu33_BFu16i_BFu0c, "aBFu33_BFu16i_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu16i_BFu0i");
    static aBFu33_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16i_BFu0i(Test_aBFu33_BFu16i_BFu0i, "aBFu33_BFu16i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu16i_BFu0ll");
    static aBFu33_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16i_BFu0ll(Test_aBFu33_BFu16i_BFu0ll, "aBFu33_BFu16i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu16i_BFu0s");
    static aBFu33_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16i_BFu0s(Test_aBFu33_BFu16i_BFu0s, "aBFu33_BFu16i_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu16ll_BFu0c");
    static aBFu33_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16ll_BFu0c(Test_aBFu33_BFu16ll_BFu0c, "aBFu33_BFu16ll_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu16ll_BFu0i");
    static aBFu33_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16ll_BFu0i(Test_aBFu33_BFu16ll_BFu0i, "aBFu33_BFu16ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu16ll_BFu0ll");
    static aBFu33_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16ll_BFu0ll(Test_aBFu33_BFu16ll_BFu0ll, "aBFu33_BFu16ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu16ll_BFu0s");
    static aBFu33_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16ll_BFu0s(Test_aBFu33_BFu16ll_BFu0s, "aBFu33_BFu16ll_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu16s_BFu0c");
    static aBFu33_BFu16s_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16s_BFu0c(Test_aBFu33_BFu16s_BFu0c, "aBFu33_BFu16s_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu16s_BFu0i");
    static aBFu33_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16s_BFu0i(Test_aBFu33_BFu16s_BFu0i, "aBFu33_BFu16s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu16s_BFu0ll");
    static aBFu33_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16s_BFu0ll(Test_aBFu33_BFu16s_BFu0ll, "aBFu33_BFu16s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu16s_BFu0s");
    static aBFu33_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, 1, "aBFu33_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 16, hide_ull(1LL<<15), "aBFu33_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu16s_BFu0s(Test_aBFu33_BFu16s_BFu0s, "aBFu33_BFu16s_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu17i_BFu0c");
    static aBFu33_BFu17i_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17i_BFu0c(Test_aBFu33_BFu17i_BFu0c, "aBFu33_BFu17i_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu17i_BFu0i");
    static aBFu33_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17i_BFu0i(Test_aBFu33_BFu17i_BFu0i, "aBFu33_BFu17i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu17i_BFu0ll");
    static aBFu33_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17i_BFu0ll(Test_aBFu33_BFu17i_BFu0ll, "aBFu33_BFu17i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu17i_BFu0s");
    static aBFu33_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17i_BFu0s(Test_aBFu33_BFu17i_BFu0s, "aBFu33_BFu17i_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu17ll_BFu0c");
    static aBFu33_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17ll_BFu0c(Test_aBFu33_BFu17ll_BFu0c, "aBFu33_BFu17ll_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu17ll_BFu0i");
    static aBFu33_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17ll_BFu0i(Test_aBFu33_BFu17ll_BFu0i, "aBFu33_BFu17ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu17ll_BFu0ll");
    static aBFu33_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17ll_BFu0ll(Test_aBFu33_BFu17ll_BFu0ll, "aBFu33_BFu17ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu17ll_BFu0s");
    static aBFu33_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 17, 1, "aBFu33_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 17, hide_ull(1LL<<16), "aBFu33_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu17ll_BFu0s(Test_aBFu33_BFu17ll_BFu0s, "aBFu33_BFu17ll_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu1c_BFu0c");
    static aBFu33_BFu1c_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1c_BFu0c(Test_aBFu33_BFu1c_BFu0c, "aBFu33_BFu1c_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu1c_BFu0s");
    static aBFu33_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1c_BFu0s(Test_aBFu33_BFu1c_BFu0s, "aBFu33_BFu1c_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu1i_BFu0c");
    static aBFu33_BFu1i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1i_BFu0c(Test_aBFu33_BFu1i_BFu0c, "aBFu33_BFu1i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu1i_BFu0s");
    static aBFu33_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1i_BFu0s(Test_aBFu33_BFu1i_BFu0s, "aBFu33_BFu1i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu1ll_BFu0c");
    static aBFu33_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1ll_BFu0c(Test_aBFu33_BFu1ll_BFu0c, "aBFu33_BFu1ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu1ll_BFu0s");
    static aBFu33_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1ll_BFu0s(Test_aBFu33_BFu1ll_BFu0s, "aBFu33_BFu1ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu1s_BFu0c");
    static aBFu33_BFu1s_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1s_BFu0c(Test_aBFu33_BFu1s_BFu0c, "aBFu33_BFu1s_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu1s_BFu0s");
    static aBFu33_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 1, 1, "aBFu33_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu1s_BFu0s(Test_aBFu33_BFu1s_BFu0s, "aBFu33_BFu1s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu31i_BFu0c");
    static aBFu33_BFu31i_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31i_BFu0c(Test_aBFu33_BFu31i_BFu0c, "aBFu33_BFu31i_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu31i_BFu0i");
    static aBFu33_BFu31i_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31i_BFu0i(Test_aBFu33_BFu31i_BFu0i, "aBFu33_BFu31i_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu31i_BFu0ll");
    static aBFu33_BFu31i_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31i_BFu0ll(Test_aBFu33_BFu31i_BFu0ll, "aBFu33_BFu31i_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu31i_BFu0s");
    static aBFu33_BFu31i_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31i_BFu0s(Test_aBFu33_BFu31i_BFu0s, "aBFu33_BFu31i_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu31ll_BFu0c");
    static aBFu33_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31ll_BFu0c(Test_aBFu33_BFu31ll_BFu0c, "aBFu33_BFu31ll_BFu0c", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu31ll_BFu0i");
    static aBFu33_BFu31ll_BFu0i lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31ll_BFu0i(Test_aBFu33_BFu31ll_BFu0i, "aBFu33_BFu31ll_BFu0i", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu31ll_BFu0ll");
    static aBFu33_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31ll_BFu0ll(Test_aBFu33_BFu31ll_BFu0ll, "aBFu33_BFu31ll_BFu0ll", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu31ll_BFu0s");
    static aBFu33_BFu31ll_BFu0s lv;
    check2(sizeof(lv), 8, "sizeof(aBFu33_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 31, 1, "aBFu33_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 31, hide_ull(1LL<<30), "aBFu33_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu31ll_BFu0s(Test_aBFu33_BFu31ll_BFu0s, "aBFu33_BFu31ll_BFu0s", 8);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu32i_BFu0c");
    static aBFu33_BFu32i_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32i_BFu0c(Test_aBFu33_BFu32i_BFu0c, "aBFu33_BFu32i_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu32i_BFu0i");
    static aBFu33_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32i_BFu0i(Test_aBFu33_BFu32i_BFu0i, "aBFu33_BFu32i_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu32i_BFu0ll");
    static aBFu33_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32i_BFu0ll(Test_aBFu33_BFu32i_BFu0ll, "aBFu33_BFu32i_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu32i_BFu0s");
    static aBFu33_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32i_BFu0s(Test_aBFu33_BFu32i_BFu0s, "aBFu33_BFu32i_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu32ll_BFu0c");
    static aBFu33_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32ll_BFu0c(Test_aBFu33_BFu32ll_BFu0c, "aBFu33_BFu32ll_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu32ll_BFu0i");
    static aBFu33_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32ll_BFu0i(Test_aBFu33_BFu32ll_BFu0i, "aBFu33_BFu32ll_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu32ll_BFu0ll");
    static aBFu33_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32ll_BFu0ll(Test_aBFu33_BFu32ll_BFu0ll, "aBFu33_BFu32ll_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu32ll_BFu0s");
    static aBFu33_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 32, 1, "aBFu33_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 32, hide_ull(1LL<<31), "aBFu33_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu32ll_BFu0s(Test_aBFu33_BFu32ll_BFu0s, "aBFu33_BFu32ll_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu33_BFu0c");
    static aBFu33_BFu33_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 33, 1, "aBFu33_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu33_BFu0c(Test_aBFu33_BFu33_BFu0c, "aBFu33_BFu33_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu33_BFu0i");
    static aBFu33_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 33, 1, "aBFu33_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu33_BFu0i(Test_aBFu33_BFu33_BFu0i, "aBFu33_BFu33_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu33_BFu0ll");
    static aBFu33_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 33, 1, "aBFu33_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu33_BFu0ll(Test_aBFu33_BFu33_BFu0ll, "aBFu33_BFu33_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu33_BFu0s");
    static aBFu33_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 33, 1, "aBFu33_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 33, hide_ull(1LL<<32), "aBFu33_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu33_BFu0s(Test_aBFu33_BFu33_BFu0s, "aBFu33_BFu33_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu7c_BFu0c");
    static aBFu33_BFu7c_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7c_BFu0c(Test_aBFu33_BFu7c_BFu0c, "aBFu33_BFu7c_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu7c_BFu0i");
    static aBFu33_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7c_BFu0i(Test_aBFu33_BFu7c_BFu0i, "aBFu33_BFu7c_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu7c_BFu0ll");
    static aBFu33_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7c_BFu0ll(Test_aBFu33_BFu7c_BFu0ll, "aBFu33_BFu7c_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu7c_BFu0s");
    static aBFu33_BFu7c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7c_BFu0s(Test_aBFu33_BFu7c_BFu0s, "aBFu33_BFu7c_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu7i_BFu0c");
    static aBFu33_BFu7i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7i_BFu0c(Test_aBFu33_BFu7i_BFu0c, "aBFu33_BFu7i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu7i_BFu0i");
    static aBFu33_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7i_BFu0i(Test_aBFu33_BFu7i_BFu0i, "aBFu33_BFu7i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu7i_BFu0ll");
    static aBFu33_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7i_BFu0ll(Test_aBFu33_BFu7i_BFu0ll, "aBFu33_BFu7i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu7i_BFu0s");
    static aBFu33_BFu7i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7i_BFu0s(Test_aBFu33_BFu7i_BFu0s, "aBFu33_BFu7i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu7ll_BFu0c");
    static aBFu33_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7ll_BFu0c(Test_aBFu33_BFu7ll_BFu0c, "aBFu33_BFu7ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu7ll_BFu0i");
    static aBFu33_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7ll_BFu0i(Test_aBFu33_BFu7ll_BFu0i, "aBFu33_BFu7ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu7ll_BFu0ll");
    static aBFu33_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7ll_BFu0ll(Test_aBFu33_BFu7ll_BFu0ll, "aBFu33_BFu7ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu7ll_BFu0s");
    static aBFu33_BFu7ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7ll_BFu0s(Test_aBFu33_BFu7ll_BFu0s, "aBFu33_BFu7ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu7s_BFu0c");
    static aBFu33_BFu7s_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu33_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7s_BFu0c(Test_aBFu33_BFu7s_BFu0c, "aBFu33_BFu7s_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu7s_BFu0i");
    static aBFu33_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7s_BFu0i(Test_aBFu33_BFu7s_BFu0i, "aBFu33_BFu7s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu7s_BFu0ll");
    static aBFu33_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7s_BFu0ll(Test_aBFu33_BFu7s_BFu0ll, "aBFu33_BFu7s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu7s_BFu0s");
    static aBFu33_BFu7s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu33_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, 1, "aBFu33_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 7, hide_ull(1LL<<6), "aBFu33_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu7s_BFu0s(Test_aBFu33_BFu7s_BFu0s, "aBFu33_BFu7s_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu8c_BFu0c");
    static aBFu33_BFu8c_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8c_BFu0c(Test_aBFu33_BFu8c_BFu0c, "aBFu33_BFu8c_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu8c_BFu0i");
    static aBFu33_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8c_BFu0i(Test_aBFu33_BFu8c_BFu0i, "aBFu33_BFu8c_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu8c_BFu0ll");
    static aBFu33_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8c_BFu0ll(Test_aBFu33_BFu8c_BFu0ll, "aBFu33_BFu8c_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu8c_BFu0s");
    static aBFu33_BFu8c_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8c_BFu0s(Test_aBFu33_BFu8c_BFu0s, "aBFu33_BFu8c_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu8i_BFu0c");
    static aBFu33_BFu8i_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8i_BFu0c(Test_aBFu33_BFu8i_BFu0c, "aBFu33_BFu8i_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu8i_BFu0i");
    static aBFu33_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8i_BFu0i(Test_aBFu33_BFu8i_BFu0i, "aBFu33_BFu8i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu8i_BFu0ll");
    static aBFu33_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8i_BFu0ll(Test_aBFu33_BFu8i_BFu0ll, "aBFu33_BFu8i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu8i_BFu0s");
    static aBFu33_BFu8i_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8i_BFu0s(Test_aBFu33_BFu8i_BFu0s, "aBFu33_BFu8i_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu8ll_BFu0c");
    static aBFu33_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8ll_BFu0c(Test_aBFu33_BFu8ll_BFu0c, "aBFu33_BFu8ll_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu8ll_BFu0i");
    static aBFu33_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8ll_BFu0i(Test_aBFu33_BFu8ll_BFu0i, "aBFu33_BFu8ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu8ll_BFu0ll");
    static aBFu33_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8ll_BFu0ll(Test_aBFu33_BFu8ll_BFu0ll, "aBFu33_BFu8ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu8ll_BFu0s");
    static aBFu33_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8ll_BFu0s(Test_aBFu33_BFu8ll_BFu0s, "aBFu33_BFu8ll_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu33_BFu8s_BFu0c");
    static aBFu33_BFu8s_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8s_BFu0c(Test_aBFu33_BFu8s_BFu0c, "aBFu33_BFu8s_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu33_BFu8s_BFu0i");
    static aBFu33_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8s_BFu0i(Test_aBFu33_BFu8s_BFu0i, "aBFu33_BFu8s_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu33_BFu8s_BFu0ll");
    static aBFu33_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8s_BFu0ll(Test_aBFu33_BFu8s_BFu0ll, "aBFu33_BFu8s_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu33_BFu8s_BFu0s");
    static aBFu33_BFu8s_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, 1, "aBFu33_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 4, 1, 8, hide_ull(1LL<<7), "aBFu33_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu33_BFu8s_BFu0s(Test_aBFu33_BFu8s_BFu0s, "aBFu33_BFu8s_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_C_BFu0c()
{
  {
    init_simple_test("aBFu33_C_BFu0c");
    static aBFu33_C_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_C_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_C_BFu0c(Test_aBFu33_C_BFu0c, "aBFu33_C_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_C_BFu0i()
{
  {
    init_simple_test("aBFu33_C_BFu0i");
    static aBFu33_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_C_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_C_BFu0i(Test_aBFu33_C_BFu0i, "aBFu33_C_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_C_BFu0ll()
{
  {
    init_simple_test("aBFu33_C_BFu0ll");
    static aBFu33_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_C_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_C_BFu0ll(Test_aBFu33_C_BFu0ll, "aBFu33_C_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_C_BFu0s()
{
  {
    init_simple_test("aBFu33_C_BFu0s");
    static aBFu33_C_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_C_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_C_BFu0s(Test_aBFu33_C_BFu0s, "aBFu33_C_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_D_BFu0c()
{
  {
    init_simple_test("aBFu33_D_BFu0c");
    static aBFu33_D_BFu0c lv;
    check2(sizeof(lv), 13, "sizeof(aBFu33_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_D_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_D_BFu0c(Test_aBFu33_D_BFu0c, "aBFu33_D_BFu0c", 13);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_D_BFu0i()
{
  {
    init_simple_test("aBFu33_D_BFu0i");
    static aBFu33_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_D_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_D_BFu0i(Test_aBFu33_D_BFu0i, "aBFu33_D_BFu0i", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_D_BFu0ll()
{
  {
    init_simple_test("aBFu33_D_BFu0ll");
    static aBFu33_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_D_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_D_BFu0ll(Test_aBFu33_D_BFu0ll, "aBFu33_D_BFu0ll", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_D_BFu0s()
{
  {
    init_simple_test("aBFu33_D_BFu0s");
    static aBFu33_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_D_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_D_BFu0s(Test_aBFu33_D_BFu0s, "aBFu33_D_BFu0s", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_F_BFu0c()
{
  {
    init_simple_test("aBFu33_F_BFu0c");
    static aBFu33_F_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_F_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_F_BFu0c(Test_aBFu33_F_BFu0c, "aBFu33_F_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_F_BFu0i()
{
  {
    init_simple_test("aBFu33_F_BFu0i");
    static aBFu33_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_F_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_F_BFu0i(Test_aBFu33_F_BFu0i, "aBFu33_F_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_F_BFu0ll()
{
  {
    init_simple_test("aBFu33_F_BFu0ll");
    static aBFu33_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_F_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_F_BFu0ll(Test_aBFu33_F_BFu0ll, "aBFu33_F_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_F_BFu0s()
{
  {
    init_simple_test("aBFu33_F_BFu0s");
    static aBFu33_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_F_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_F_BFu0s(Test_aBFu33_F_BFu0s, "aBFu33_F_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_I_BFu0c()
{
  {
    init_simple_test("aBFu33_I_BFu0c");
    static aBFu33_I_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_I_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_I_BFu0c(Test_aBFu33_I_BFu0c, "aBFu33_I_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_I_BFu0i()
{
  {
    init_simple_test("aBFu33_I_BFu0i");
    static aBFu33_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_I_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_I_BFu0i(Test_aBFu33_I_BFu0i, "aBFu33_I_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_I_BFu0ll()
{
  {
    init_simple_test("aBFu33_I_BFu0ll");
    static aBFu33_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_I_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_I_BFu0ll(Test_aBFu33_I_BFu0ll, "aBFu33_I_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_I_BFu0s()
{
  {
    init_simple_test("aBFu33_I_BFu0s");
    static aBFu33_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_I_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_I_BFu0s(Test_aBFu33_I_BFu0s, "aBFu33_I_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ip_BFu0c()
{
  {
    init_simple_test("aBFu33_Ip_BFu0c");
    static aBFu33_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu33_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ip_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ip_BFu0c(Test_aBFu33_Ip_BFu0c, "aBFu33_Ip_BFu0c", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ip_BFu0i()
{
  {
    init_simple_test("aBFu33_Ip_BFu0i");
    static aBFu33_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ip_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ip_BFu0i(Test_aBFu33_Ip_BFu0i, "aBFu33_Ip_BFu0i", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu33_Ip_BFu0ll");
    static aBFu33_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ip_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ip_BFu0ll(Test_aBFu33_Ip_BFu0ll, "aBFu33_Ip_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ip_BFu0s()
{
  {
    init_simple_test("aBFu33_Ip_BFu0s");
    static aBFu33_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,10), "sizeof(aBFu33_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ip_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ip_BFu0s(Test_aBFu33_Ip_BFu0s, "aBFu33_Ip_BFu0s", ABISELECT(14,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_L_BFu0c()
{
  {
    init_simple_test("aBFu33_L_BFu0c");
    static aBFu33_L_BFu0c lv;
    check2(sizeof(lv), 13, "sizeof(aBFu33_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_L_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_L_BFu0c(Test_aBFu33_L_BFu0c, "aBFu33_L_BFu0c", 13);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_L_BFu0i()
{
  {
    init_simple_test("aBFu33_L_BFu0i");
    static aBFu33_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_L_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_L_BFu0i(Test_aBFu33_L_BFu0i, "aBFu33_L_BFu0i", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_L_BFu0ll()
{
  {
    init_simple_test("aBFu33_L_BFu0ll");
    static aBFu33_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_L_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_L_BFu0ll(Test_aBFu33_L_BFu0ll, "aBFu33_L_BFu0ll", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_L_BFu0s()
{
  {
    init_simple_test("aBFu33_L_BFu0s");
    static aBFu33_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_L_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_L_BFu0s(Test_aBFu33_L_BFu0s, "aBFu33_L_BFu0s", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_S_BFu0c()
{
  {
    init_simple_test("aBFu33_S_BFu0c");
    static aBFu33_S_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_S_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_S_BFu0c(Test_aBFu33_S_BFu0c, "aBFu33_S_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_S_BFu0i()
{
  {
    init_simple_test("aBFu33_S_BFu0i");
    static aBFu33_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_S_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_S_BFu0i(Test_aBFu33_S_BFu0i, "aBFu33_S_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_S_BFu0ll()
{
  {
    init_simple_test("aBFu33_S_BFu0ll");
    static aBFu33_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_S_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_S_BFu0ll(Test_aBFu33_S_BFu0ll, "aBFu33_S_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_S_BFu0s()
{
  {
    init_simple_test("aBFu33_S_BFu0s");
    static aBFu33_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_S_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_S_BFu0s(Test_aBFu33_S_BFu0s, "aBFu33_S_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Uc_BFu0c()
{
  {
    init_simple_test("aBFu33_Uc_BFu0c");
    static aBFu33_Uc_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Uc_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Uc_BFu0c(Test_aBFu33_Uc_BFu0c, "aBFu33_Uc_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Uc_BFu0i()
{
  {
    init_simple_test("aBFu33_Uc_BFu0i");
    static aBFu33_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Uc_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Uc_BFu0i(Test_aBFu33_Uc_BFu0i, "aBFu33_Uc_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu33_Uc_BFu0ll");
    static aBFu33_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Uc_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Uc_BFu0ll(Test_aBFu33_Uc_BFu0ll, "aBFu33_Uc_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Uc_BFu0s()
{
  {
    init_simple_test("aBFu33_Uc_BFu0s");
    static aBFu33_Uc_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu33_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Uc_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Uc_BFu0s(Test_aBFu33_Uc_BFu0s, "aBFu33_Uc_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ui_BFu0c()
{
  {
    init_simple_test("aBFu33_Ui_BFu0c");
    static aBFu33_Ui_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu33_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ui_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ui_BFu0c(Test_aBFu33_Ui_BFu0c, "aBFu33_Ui_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ui_BFu0i()
{
  {
    init_simple_test("aBFu33_Ui_BFu0i");
    static aBFu33_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu33_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ui_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ui_BFu0i(Test_aBFu33_Ui_BFu0i, "aBFu33_Ui_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu33_Ui_BFu0ll");
    static aBFu33_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ui_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ui_BFu0ll(Test_aBFu33_Ui_BFu0ll, "aBFu33_Ui_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ui_BFu0s()
{
  {
    init_simple_test("aBFu33_Ui_BFu0s");
    static aBFu33_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu33_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ui_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ui_BFu0s(Test_aBFu33_Ui_BFu0s, "aBFu33_Ui_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ul_BFu0c()
{
  {
    init_simple_test("aBFu33_Ul_BFu0c");
    static aBFu33_Ul_BFu0c lv;
    check2(sizeof(lv), 13, "sizeof(aBFu33_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ul_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ul_BFu0c(Test_aBFu33_Ul_BFu0c, "aBFu33_Ul_BFu0c", 13);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ul_BFu0i()
{
  {
    init_simple_test("aBFu33_Ul_BFu0i");
    static aBFu33_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ul_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ul_BFu0i(Test_aBFu33_Ul_BFu0i, "aBFu33_Ul_BFu0i", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu33_Ul_BFu0ll");
    static aBFu33_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,16), "sizeof(aBFu33_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ul_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ul_BFu0ll(Test_aBFu33_Ul_BFu0ll, "aBFu33_Ul_BFu0ll", ABISELECT(16,16));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Ul_BFu0s()
{
  {
    init_simple_test("aBFu33_Ul_BFu0s");
    static aBFu33_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,14), "sizeof(aBFu33_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Ul_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Ul_BFu0s(Test_aBFu33_Ul_BFu0s, "aBFu33_Ul_BFu0s", ABISELECT(14,14));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Us_BFu0c()
{
  {
    init_simple_test("aBFu33_Us_BFu0c");
    static aBFu33_Us_BFu0c lv;
    check2(sizeof(lv), 7, "sizeof(aBFu33_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Us_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Us_BFu0c(Test_aBFu33_Us_BFu0c, "aBFu33_Us_BFu0c", 7);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Us_BFu0i()
{
  {
    init_simple_test("aBFu33_Us_BFu0i");
    static aBFu33_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Us_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Us_BFu0i(Test_aBFu33_Us_BFu0i, "aBFu33_Us_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Us_BFu0ll()
{
  {
    init_simple_test("aBFu33_Us_BFu0ll");
    static aBFu33_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Us_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Us_BFu0ll(Test_aBFu33_Us_BFu0ll, "aBFu33_Us_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Us_BFu0s()
{
  {
    init_simple_test("aBFu33_Us_BFu0s");
    static aBFu33_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu33_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Us_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Us_BFu0s(Test_aBFu33_Us_BFu0s, "aBFu33_Us_BFu0s", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Vp_BFu0c()
{
  {
    init_simple_test("aBFu33_Vp_BFu0c");
    static aBFu33_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu33_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Vp_BFu0c");
    check_field_offset(lv, v2, 5, "aBFu33_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Vp_BFu0c(Test_aBFu33_Vp_BFu0c, "aBFu33_Vp_BFu0c", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Vp_BFu0i()
{
  {
    init_simple_test("aBFu33_Vp_BFu0i");
    static aBFu33_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Vp_BFu0i");
    check_field_offset(lv, v2, 5, "aBFu33_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Vp_BFu0i(Test_aBFu33_Vp_BFu0i, "aBFu33_Vp_BFu0i", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu33_Vp_BFu0ll");
    static aBFu33_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu33_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Vp_BFu0ll");
    check_field_offset(lv, v2, 5, "aBFu33_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Vp_BFu0ll(Test_aBFu33_Vp_BFu0ll, "aBFu33_Vp_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu33_Vp_BFu0s()
{
  {
    init_simple_test("aBFu33_Vp_BFu0s");
    static aBFu33_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(14,10), "sizeof(aBFu33_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu33_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 33, 1, "aBFu33_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 33, hide_ull(1LL<<32), "aBFu33_Vp_BFu0s");
    check_field_offset(lv, v2, 5, "aBFu33_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu33_Vp_BFu0s(Test_aBFu33_Vp_BFu0s, "aBFu33_Vp_BFu0s", ABISELECT(14,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu0c");
    static aBFu7c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c(Test_aBFu7c_BFu0c, "aBFu7c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu0c");
    static aBFu7c_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu0c(Test_aBFu7c_BFu0c_BFu0c, "aBFu7c_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu0i");
    static aBFu7c_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu0i(Test_aBFu7c_BFu0c_BFu0i, "aBFu7c_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu0ll");
    static aBFu7c_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu0ll(Test_aBFu7c_BFu0c_BFu0ll, "aBFu7c_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu0s");
    static aBFu7c_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu0s(Test_aBFu7c_BFu0c_BFu0s, "aBFu7c_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu15i");
    static aBFu7c_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu15i(Test_aBFu7c_BFu0c_BFu15i, "aBFu7c_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu15ll");
    static aBFu7c_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu15ll(Test_aBFu7c_BFu0c_BFu15ll, "aBFu7c_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu15s");
    static aBFu7c_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu15s(Test_aBFu7c_BFu0c_BFu15s, "aBFu7c_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu16i");
    static aBFu7c_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu16i(Test_aBFu7c_BFu0c_BFu16i, "aBFu7c_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu16ll");
    static aBFu7c_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu16ll(Test_aBFu7c_BFu0c_BFu16ll, "aBFu7c_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu16s");
    static aBFu7c_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu16s(Test_aBFu7c_BFu0c_BFu16s, "aBFu7c_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu17i");
    static aBFu7c_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu17i(Test_aBFu7c_BFu0c_BFu17i, "aBFu7c_BFu0c_BFu17i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu17ll");
    static aBFu7c_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu17ll(Test_aBFu7c_BFu0c_BFu17ll, "aBFu7c_BFu0c_BFu17ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu1c");
    static aBFu7c_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu1c(Test_aBFu7c_BFu0c_BFu1c, "aBFu7c_BFu0c_BFu1c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu1i");
    static aBFu7c_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu1i(Test_aBFu7c_BFu0c_BFu1i, "aBFu7c_BFu0c_BFu1i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu1ll");
    static aBFu7c_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu1ll(Test_aBFu7c_BFu0c_BFu1ll, "aBFu7c_BFu0c_BFu1ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu1s");
    static aBFu7c_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu1s(Test_aBFu7c_BFu0c_BFu1s, "aBFu7c_BFu0c_BFu1s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu31i");
    static aBFu7c_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu31i(Test_aBFu7c_BFu0c_BFu31i, "aBFu7c_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu31ll");
    static aBFu7c_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu31ll(Test_aBFu7c_BFu0c_BFu31ll, "aBFu7c_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu32i");
    static aBFu7c_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu32i(Test_aBFu7c_BFu0c_BFu32i, "aBFu7c_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu32ll");
    static aBFu7c_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu32ll(Test_aBFu7c_BFu0c_BFu32ll, "aBFu7c_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu33");
    static aBFu7c_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, 1, "aBFu7c_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7c_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu33(Test_aBFu7c_BFu0c_BFu33, "aBFu7c_BFu0c_BFu33", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu7c");
    static aBFu7c_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu7c(Test_aBFu7c_BFu0c_BFu7c, "aBFu7c_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu7i");
    static aBFu7c_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu7i(Test_aBFu7c_BFu0c_BFu7i, "aBFu7c_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu7ll");
    static aBFu7c_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu7ll(Test_aBFu7c_BFu0c_BFu7ll, "aBFu7c_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu7s");
    static aBFu7c_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu7s(Test_aBFu7c_BFu0c_BFu7s, "aBFu7c_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu8c");
    static aBFu7c_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu8c(Test_aBFu7c_BFu0c_BFu8c, "aBFu7c_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu8i");
    static aBFu7c_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu8i(Test_aBFu7c_BFu0c_BFu8i, "aBFu7c_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu8ll");
    static aBFu7c_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu8ll(Test_aBFu7c_BFu0c_BFu8ll, "aBFu7c_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu7c_BFu0c_BFu8s");
    static aBFu7c_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7c_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7c_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_BFu8s(Test_aBFu7c_BFu0c_BFu8s, "aBFu7c_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_C()
{
  {
    init_simple_test("aBFu7c_BFu0c_C");
    static aBFu7c_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_C(Test_aBFu7c_BFu0c_C, "aBFu7c_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_D()
{
  {
    init_simple_test("aBFu7c_BFu0c_D");
    static aBFu7c_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_D(Test_aBFu7c_BFu0c_D, "aBFu7c_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_F()
{
  {
    init_simple_test("aBFu7c_BFu0c_F");
    static aBFu7c_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_F(Test_aBFu7c_BFu0c_F, "aBFu7c_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_I()
{
  {
    init_simple_test("aBFu7c_BFu0c_I");
    static aBFu7c_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_I(Test_aBFu7c_BFu0c_I, "aBFu7c_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Ip()
{
  {
    init_simple_test("aBFu7c_BFu0c_Ip");
    static aBFu7c_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Ip(Test_aBFu7c_BFu0c_Ip, "aBFu7c_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_L()
{
  {
    init_simple_test("aBFu7c_BFu0c_L");
    static aBFu7c_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_L(Test_aBFu7c_BFu0c_L, "aBFu7c_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_S()
{
  {
    init_simple_test("aBFu7c_BFu0c_S");
    static aBFu7c_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_S(Test_aBFu7c_BFu0c_S, "aBFu7c_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Uc()
{
  {
    init_simple_test("aBFu7c_BFu0c_Uc");
    static aBFu7c_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Uc(Test_aBFu7c_BFu0c_Uc, "aBFu7c_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Ui()
{
  {
    init_simple_test("aBFu7c_BFu0c_Ui");
    static aBFu7c_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Ui(Test_aBFu7c_BFu0c_Ui, "aBFu7c_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Ul()
{
  {
    init_simple_test("aBFu7c_BFu0c_Ul");
    static aBFu7c_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Ul(Test_aBFu7c_BFu0c_Ul, "aBFu7c_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Us()
{
  {
    init_simple_test("aBFu7c_BFu0c_Us");
    static aBFu7c_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Us(Test_aBFu7c_BFu0c_Us, "aBFu7c_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0c_Vp()
{
  {
    init_simple_test("aBFu7c_BFu0c_Vp");
    static aBFu7c_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu7c_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0c_Vp(Test_aBFu7c_BFu0c_Vp, "aBFu7c_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu0i");
    static aBFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i(Test_aBFu7c_BFu0i, "aBFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu0c");
    static aBFu7c_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu0c(Test_aBFu7c_BFu0i_BFu0c, "aBFu7c_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu0i");
    static aBFu7c_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu0i(Test_aBFu7c_BFu0i_BFu0i, "aBFu7c_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu0ll");
    static aBFu7c_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu0ll(Test_aBFu7c_BFu0i_BFu0ll, "aBFu7c_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu0s");
    static aBFu7c_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu0s(Test_aBFu7c_BFu0i_BFu0s, "aBFu7c_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu15i");
    static aBFu7c_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu15i(Test_aBFu7c_BFu0i_BFu15i, "aBFu7c_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu15ll");
    static aBFu7c_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu15ll(Test_aBFu7c_BFu0i_BFu15ll, "aBFu7c_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu15s");
    static aBFu7c_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu15s(Test_aBFu7c_BFu0i_BFu15s, "aBFu7c_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu16i");
    static aBFu7c_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu16i(Test_aBFu7c_BFu0i_BFu16i, "aBFu7c_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu16ll");
    static aBFu7c_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu16ll(Test_aBFu7c_BFu0i_BFu16ll, "aBFu7c_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu16s");
    static aBFu7c_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu16s(Test_aBFu7c_BFu0i_BFu16s, "aBFu7c_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu17i");
    static aBFu7c_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7c_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu17i(Test_aBFu7c_BFu0i_BFu17i, "aBFu7c_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu17ll");
    static aBFu7c_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7c_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu17ll(Test_aBFu7c_BFu0i_BFu17ll, "aBFu7c_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu1c");
    static aBFu7c_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu1c(Test_aBFu7c_BFu0i_BFu1c, "aBFu7c_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu1i");
    static aBFu7c_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu1i(Test_aBFu7c_BFu0i_BFu1i, "aBFu7c_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu1ll");
    static aBFu7c_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu1ll(Test_aBFu7c_BFu0i_BFu1ll, "aBFu7c_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu1s");
    static aBFu7c_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu1s(Test_aBFu7c_BFu0i_BFu1s, "aBFu7c_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu31i");
    static aBFu7c_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu31i(Test_aBFu7c_BFu0i_BFu31i, "aBFu7c_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu31ll");
    static aBFu7c_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu31ll(Test_aBFu7c_BFu0i_BFu31ll, "aBFu7c_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu32i");
    static aBFu7c_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu32i(Test_aBFu7c_BFu0i_BFu32i, "aBFu7c_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu32ll");
    static aBFu7c_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu32ll(Test_aBFu7c_BFu0i_BFu32ll, "aBFu7c_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu33");
    static aBFu7c_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu7c_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, 1, "aBFu7c_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7c_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu33(Test_aBFu7c_BFu0i_BFu33, "aBFu7c_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu7c");
    static aBFu7c_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu7c(Test_aBFu7c_BFu0i_BFu7c, "aBFu7c_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu7i");
    static aBFu7c_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu7i(Test_aBFu7c_BFu0i_BFu7i, "aBFu7c_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu7ll");
    static aBFu7c_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu7ll(Test_aBFu7c_BFu0i_BFu7ll, "aBFu7c_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu7c_BFu0i_BFu7s");
    static aBFu7c_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_BFu7s(Test_aBFu7c_BFu0i_BFu7s, "aBFu7c_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_C()
{
  {
    init_simple_test("aBFu7c_BFu0i_C");
    static aBFu7c_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_C(Test_aBFu7c_BFu0i_C, "aBFu7c_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_D()
{
  {
    init_simple_test("aBFu7c_BFu0i_D");
    static aBFu7c_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_D(Test_aBFu7c_BFu0i_D, "aBFu7c_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_Ip()
{
  {
    init_simple_test("aBFu7c_BFu0i_Ip");
    static aBFu7c_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_Ip(Test_aBFu7c_BFu0i_Ip, "aBFu7c_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_L()
{
  {
    init_simple_test("aBFu7c_BFu0i_L");
    static aBFu7c_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_L(Test_aBFu7c_BFu0i_L, "aBFu7c_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_S()
{
  {
    init_simple_test("aBFu7c_BFu0i_S");
    static aBFu7c_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_S(Test_aBFu7c_BFu0i_S, "aBFu7c_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_Uc()
{
  {
    init_simple_test("aBFu7c_BFu0i_Uc");
    static aBFu7c_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_Uc(Test_aBFu7c_BFu0i_Uc, "aBFu7c_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_Ul()
{
  {
    init_simple_test("aBFu7c_BFu0i_Ul");
    static aBFu7c_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_Ul(Test_aBFu7c_BFu0i_Ul, "aBFu7c_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_Us()
{
  {
    init_simple_test("aBFu7c_BFu0i_Us");
    static aBFu7c_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_Us(Test_aBFu7c_BFu0i_Us, "aBFu7c_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0i_Vp()
{
  {
    init_simple_test("aBFu7c_BFu0i_Vp");
    static aBFu7c_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7c_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0i_Vp(Test_aBFu7c_BFu0i_Vp, "aBFu7c_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll");
    static aBFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll(Test_aBFu7c_BFu0ll, "aBFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu0c");
    static aBFu7c_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu0c(Test_aBFu7c_BFu0ll_BFu0c, "aBFu7c_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu0i");
    static aBFu7c_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu0i(Test_aBFu7c_BFu0ll_BFu0i, "aBFu7c_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu0ll");
    static aBFu7c_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu0ll(Test_aBFu7c_BFu0ll_BFu0ll, "aBFu7c_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu0s");
    static aBFu7c_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu0s(Test_aBFu7c_BFu0ll_BFu0s, "aBFu7c_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu15i");
    static aBFu7c_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu15i(Test_aBFu7c_BFu0ll_BFu15i, "aBFu7c_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu15ll");
    static aBFu7c_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu15ll(Test_aBFu7c_BFu0ll_BFu15ll, "aBFu7c_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu15s");
    static aBFu7c_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu15s(Test_aBFu7c_BFu0ll_BFu15s, "aBFu7c_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu16i");
    static aBFu7c_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu16i(Test_aBFu7c_BFu0ll_BFu16i, "aBFu7c_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu16ll");
    static aBFu7c_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu16ll(Test_aBFu7c_BFu0ll_BFu16ll, "aBFu7c_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu16s");
    static aBFu7c_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu16s(Test_aBFu7c_BFu0ll_BFu16s, "aBFu7c_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu17i");
    static aBFu7c_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7c_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu17i(Test_aBFu7c_BFu0ll_BFu17i, "aBFu7c_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu17ll");
    static aBFu7c_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7c_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu17ll(Test_aBFu7c_BFu0ll_BFu17ll, "aBFu7c_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu31i");
    static aBFu7c_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu31i(Test_aBFu7c_BFu0ll_BFu31i, "aBFu7c_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu31ll");
    static aBFu7c_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu31ll(Test_aBFu7c_BFu0ll_BFu31ll, "aBFu7c_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu32i");
    static aBFu7c_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu32i(Test_aBFu7c_BFu0ll_BFu32i, "aBFu7c_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu32ll");
    static aBFu7c_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu32ll(Test_aBFu7c_BFu0ll_BFu32ll, "aBFu7c_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu7c_BFu0ll_BFu33");
    static aBFu7c_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu7c_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, 1, "aBFu7c_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7c_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_BFu33(Test_aBFu7c_BFu0ll_BFu33, "aBFu7c_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_D()
{
  {
    init_simple_test("aBFu7c_BFu0ll_D");
    static aBFu7c_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_D(Test_aBFu7c_BFu0ll_D, "aBFu7c_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_F()
{
  {
    init_simple_test("aBFu7c_BFu0ll_F");
    static aBFu7c_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_F(Test_aBFu7c_BFu0ll_F, "aBFu7c_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_I()
{
  {
    init_simple_test("aBFu7c_BFu0ll_I");
    static aBFu7c_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_I(Test_aBFu7c_BFu0ll_I, "aBFu7c_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu7c_BFu0ll_Ip");
    static aBFu7c_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7c_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_Ip(Test_aBFu7c_BFu0ll_Ip, "aBFu7c_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_L()
{
  {
    init_simple_test("aBFu7c_BFu0ll_L");
    static aBFu7c_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_L(Test_aBFu7c_BFu0ll_L, "aBFu7c_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu7c_BFu0ll_Ui");
    static aBFu7c_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7c_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_Ui(Test_aBFu7c_BFu0ll_Ui, "aBFu7c_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu7c_BFu0ll_Ul");
    static aBFu7c_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_Ul(Test_aBFu7c_BFu0ll_Ul, "aBFu7c_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu7c_BFu0ll_Vp");
    static aBFu7c_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7c_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7c_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0ll_Vp(Test_aBFu7c_BFu0ll_Vp, "aBFu7c_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu0s");
    static aBFu7c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s(Test_aBFu7c_BFu0s, "aBFu7c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu0c");
    static aBFu7c_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu0c(Test_aBFu7c_BFu0s_BFu0c, "aBFu7c_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu0i");
    static aBFu7c_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu0i(Test_aBFu7c_BFu0s_BFu0i, "aBFu7c_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu0ll");
    static aBFu7c_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu0ll(Test_aBFu7c_BFu0s_BFu0ll, "aBFu7c_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu0s");
    static aBFu7c_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu0s(Test_aBFu7c_BFu0s_BFu0s, "aBFu7c_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu15i");
    static aBFu7c_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu15i(Test_aBFu7c_BFu0s_BFu15i, "aBFu7c_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu15ll");
    static aBFu7c_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu15ll(Test_aBFu7c_BFu0s_BFu15ll, "aBFu7c_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu15s");
    static aBFu7c_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7c_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7c_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu15s(Test_aBFu7c_BFu0s_BFu15s, "aBFu7c_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu16i");
    static aBFu7c_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu16i(Test_aBFu7c_BFu0s_BFu16i, "aBFu7c_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu16ll");
    static aBFu7c_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu16ll(Test_aBFu7c_BFu0s_BFu16ll, "aBFu7c_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu16s");
    static aBFu7c_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7c_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7c_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu16s(Test_aBFu7c_BFu0s_BFu16s, "aBFu7c_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu17i");
    static aBFu7c_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu17i(Test_aBFu7c_BFu0s_BFu17i, "aBFu7c_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu17ll");
    static aBFu7c_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7c_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7c_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu17ll(Test_aBFu7c_BFu0s_BFu17ll, "aBFu7c_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu1c");
    static aBFu7c_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu1c(Test_aBFu7c_BFu0s_BFu1c, "aBFu7c_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu1i");
    static aBFu7c_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu1i(Test_aBFu7c_BFu0s_BFu1i, "aBFu7c_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu1ll");
    static aBFu7c_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu1ll(Test_aBFu7c_BFu0s_BFu1ll, "aBFu7c_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu1s");
    static aBFu7c_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7c_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu1s(Test_aBFu7c_BFu0s_BFu1s, "aBFu7c_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu31i");
    static aBFu7c_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu31i(Test_aBFu7c_BFu0s_BFu31i, "aBFu7c_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu31ll");
    static aBFu7c_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7c_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu31ll(Test_aBFu7c_BFu0s_BFu31ll, "aBFu7c_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu32i");
    static aBFu7c_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu32i(Test_aBFu7c_BFu0s_BFu32i, "aBFu7c_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu32ll");
    static aBFu7c_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7c_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu32ll(Test_aBFu7c_BFu0s_BFu32ll, "aBFu7c_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu33");
    static aBFu7c_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7c_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu7c_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7c_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu33(Test_aBFu7c_BFu0s_BFu33, "aBFu7c_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu7c");
    static aBFu7c_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu7c(Test_aBFu7c_BFu0s_BFu7c, "aBFu7c_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu7i");
    static aBFu7c_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu7i(Test_aBFu7c_BFu0s_BFu7i, "aBFu7c_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu7ll");
    static aBFu7c_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu7ll(Test_aBFu7c_BFu0s_BFu7ll, "aBFu7c_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu7c_BFu0s_BFu7s");
    static aBFu7c_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7c_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7c_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_BFu7s(Test_aBFu7c_BFu0s_BFu7s, "aBFu7c_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_D()
{
  {
    init_simple_test("aBFu7c_BFu0s_D");
    static aBFu7c_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7c_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_D(Test_aBFu7c_BFu0s_D, "aBFu7c_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_Ip()
{
  {
    init_simple_test("aBFu7c_BFu0s_Ip");
    static aBFu7c_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_Ip(Test_aBFu7c_BFu0s_Ip, "aBFu7c_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_L()
{
  {
    init_simple_test("aBFu7c_BFu0s_L");
    static aBFu7c_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7c_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_L(Test_aBFu7c_BFu0s_L, "aBFu7c_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_S()
{
  {
    init_simple_test("aBFu7c_BFu0s_S");
    static aBFu7c_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_S(Test_aBFu7c_BFu0s_S, "aBFu7c_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_Ul()
{
  {
    init_simple_test("aBFu7c_BFu0s_Ul");
    static aBFu7c_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7c_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_Ul(Test_aBFu7c_BFu0s_Ul, "aBFu7c_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_Us()
{
  {
    init_simple_test("aBFu7c_BFu0s_Us");
    static aBFu7c_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_Us(Test_aBFu7c_BFu0s_Us, "aBFu7c_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu0s_Vp()
{
  {
    init_simple_test("aBFu7c_BFu0s_Vp");
    static aBFu7c_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7c_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7c_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu0s_Vp(Test_aBFu7c_BFu0s_Vp, "aBFu7c_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu15i_BFu0c");
    static aBFu7c_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15i_BFu0c(Test_aBFu7c_BFu15i_BFu0c, "aBFu7c_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu15i_BFu0i");
    static aBFu7c_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15i_BFu0i(Test_aBFu7c_BFu15i_BFu0i, "aBFu7c_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu15i_BFu0ll");
    static aBFu7c_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15i_BFu0ll(Test_aBFu7c_BFu15i_BFu0ll, "aBFu7c_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu15i_BFu0s");
    static aBFu7c_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15i_BFu0s(Test_aBFu7c_BFu15i_BFu0s, "aBFu7c_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu15ll_BFu0c");
    static aBFu7c_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15ll_BFu0c(Test_aBFu7c_BFu15ll_BFu0c, "aBFu7c_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu15ll_BFu0i");
    static aBFu7c_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15ll_BFu0i(Test_aBFu7c_BFu15ll_BFu0i, "aBFu7c_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu15ll_BFu0ll");
    static aBFu7c_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15ll_BFu0ll(Test_aBFu7c_BFu15ll_BFu0ll, "aBFu7c_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu15ll_BFu0s");
    static aBFu7c_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15ll_BFu0s(Test_aBFu7c_BFu15ll_BFu0s, "aBFu7c_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu15s_BFu0c");
    static aBFu7c_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15s_BFu0c(Test_aBFu7c_BFu15s_BFu0c, "aBFu7c_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu15s_BFu0i");
    static aBFu7c_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15s_BFu0i(Test_aBFu7c_BFu15s_BFu0i, "aBFu7c_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu15s_BFu0ll");
    static aBFu7c_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15s_BFu0ll(Test_aBFu7c_BFu15s_BFu0ll, "aBFu7c_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu15s_BFu0s");
    static aBFu7c_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7c_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7c_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu15s_BFu0s(Test_aBFu7c_BFu15s_BFu0s, "aBFu7c_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu16i_BFu0c");
    static aBFu7c_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16i_BFu0c(Test_aBFu7c_BFu16i_BFu0c, "aBFu7c_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu16i_BFu0i");
    static aBFu7c_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16i_BFu0i(Test_aBFu7c_BFu16i_BFu0i, "aBFu7c_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu16i_BFu0ll");
    static aBFu7c_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16i_BFu0ll(Test_aBFu7c_BFu16i_BFu0ll, "aBFu7c_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu16i_BFu0s");
    static aBFu7c_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16i_BFu0s(Test_aBFu7c_BFu16i_BFu0s, "aBFu7c_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu16ll_BFu0c");
    static aBFu7c_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16ll_BFu0c(Test_aBFu7c_BFu16ll_BFu0c, "aBFu7c_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu16ll_BFu0i");
    static aBFu7c_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16ll_BFu0i(Test_aBFu7c_BFu16ll_BFu0i, "aBFu7c_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu16ll_BFu0ll");
    static aBFu7c_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16ll_BFu0ll(Test_aBFu7c_BFu16ll_BFu0ll, "aBFu7c_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu16ll_BFu0s");
    static aBFu7c_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16ll_BFu0s(Test_aBFu7c_BFu16ll_BFu0s, "aBFu7c_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu16s_BFu0c");
    static aBFu7c_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16s_BFu0c(Test_aBFu7c_BFu16s_BFu0c, "aBFu7c_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu16s_BFu0i");
    static aBFu7c_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16s_BFu0i(Test_aBFu7c_BFu16s_BFu0i, "aBFu7c_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu16s_BFu0ll");
    static aBFu7c_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16s_BFu0ll(Test_aBFu7c_BFu16s_BFu0ll, "aBFu7c_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu16s_BFu0s");
    static aBFu7c_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7c_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7c_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu16s_BFu0s(Test_aBFu7c_BFu16s_BFu0s, "aBFu7c_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu17i_BFu0c");
    static aBFu7c_BFu17i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17i_BFu0c(Test_aBFu7c_BFu17i_BFu0c, "aBFu7c_BFu17i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu17i_BFu0i");
    static aBFu7c_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17i_BFu0i(Test_aBFu7c_BFu17i_BFu0i, "aBFu7c_BFu17i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu17i_BFu0ll");
    static aBFu7c_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17i_BFu0ll(Test_aBFu7c_BFu17i_BFu0ll, "aBFu7c_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu17i_BFu0s");
    static aBFu7c_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17i_BFu0s(Test_aBFu7c_BFu17i_BFu0s, "aBFu7c_BFu17i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu17ll_BFu0c");
    static aBFu7c_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17ll_BFu0c(Test_aBFu7c_BFu17ll_BFu0c, "aBFu7c_BFu17ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu17ll_BFu0i");
    static aBFu7c_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17ll_BFu0i(Test_aBFu7c_BFu17ll_BFu0i, "aBFu7c_BFu17ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu17ll_BFu0ll");
    static aBFu7c_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7c_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17ll_BFu0ll(Test_aBFu7c_BFu17ll_BFu0ll, "aBFu7c_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu17ll_BFu0s");
    static aBFu7c_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7c_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu17ll_BFu0s(Test_aBFu7c_BFu17ll_BFu0s, "aBFu7c_BFu17ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu1c_BFu0c");
    static aBFu7c_BFu1c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1c_BFu0c(Test_aBFu7c_BFu1c_BFu0c, "aBFu7c_BFu1c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu1c_BFu0i");
    static aBFu7c_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1c_BFu0i(Test_aBFu7c_BFu1c_BFu0i, "aBFu7c_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu1c_BFu0s");
    static aBFu7c_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1c_BFu0s(Test_aBFu7c_BFu1c_BFu0s, "aBFu7c_BFu1c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu1i_BFu0c");
    static aBFu7c_BFu1i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1i_BFu0c(Test_aBFu7c_BFu1i_BFu0c, "aBFu7c_BFu1i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu1i_BFu0i");
    static aBFu7c_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1i_BFu0i(Test_aBFu7c_BFu1i_BFu0i, "aBFu7c_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu1i_BFu0s");
    static aBFu7c_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1i_BFu0s(Test_aBFu7c_BFu1i_BFu0s, "aBFu7c_BFu1i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu1ll_BFu0c");
    static aBFu7c_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1ll_BFu0c(Test_aBFu7c_BFu1ll_BFu0c, "aBFu7c_BFu1ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu1ll_BFu0i");
    static aBFu7c_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1ll_BFu0i(Test_aBFu7c_BFu1ll_BFu0i, "aBFu7c_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu1ll_BFu0s");
    static aBFu7c_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1ll_BFu0s(Test_aBFu7c_BFu1ll_BFu0s, "aBFu7c_BFu1ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu1s_BFu0c");
    static aBFu7c_BFu1s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7c_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1s_BFu0c(Test_aBFu7c_BFu1s_BFu0c, "aBFu7c_BFu1s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu1s_BFu0i");
    static aBFu7c_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1s_BFu0i(Test_aBFu7c_BFu1s_BFu0i, "aBFu7c_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu1s_BFu0s");
    static aBFu7c_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7c_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7c_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu1s_BFu0s(Test_aBFu7c_BFu1s_BFu0s, "aBFu7c_BFu1s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu31i_BFu0c");
    static aBFu7c_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31i_BFu0c(Test_aBFu7c_BFu31i_BFu0c, "aBFu7c_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu31i_BFu0i");
    static aBFu7c_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31i_BFu0i(Test_aBFu7c_BFu31i_BFu0i, "aBFu7c_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu31i_BFu0ll");
    static aBFu7c_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31i_BFu0ll(Test_aBFu7c_BFu31i_BFu0ll, "aBFu7c_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu31i_BFu0s");
    static aBFu7c_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31i_BFu0s(Test_aBFu7c_BFu31i_BFu0s, "aBFu7c_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu31ll_BFu0c");
    static aBFu7c_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31ll_BFu0c(Test_aBFu7c_BFu31ll_BFu0c, "aBFu7c_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu31ll_BFu0i");
    static aBFu7c_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31ll_BFu0i(Test_aBFu7c_BFu31ll_BFu0i, "aBFu7c_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu31ll_BFu0ll");
    static aBFu7c_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31ll_BFu0ll(Test_aBFu7c_BFu31ll_BFu0ll, "aBFu7c_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu31ll_BFu0s");
    static aBFu7c_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7c_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu31ll_BFu0s(Test_aBFu7c_BFu31ll_BFu0s, "aBFu7c_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu32i_BFu0c");
    static aBFu7c_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32i_BFu0c(Test_aBFu7c_BFu32i_BFu0c, "aBFu7c_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu32i_BFu0i");
    static aBFu7c_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32i_BFu0i(Test_aBFu7c_BFu32i_BFu0i, "aBFu7c_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu32i_BFu0ll");
    static aBFu7c_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32i_BFu0ll(Test_aBFu7c_BFu32i_BFu0ll, "aBFu7c_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu32i_BFu0s");
    static aBFu7c_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32i_BFu0s(Test_aBFu7c_BFu32i_BFu0s, "aBFu7c_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu32ll_BFu0c");
    static aBFu7c_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32ll_BFu0c(Test_aBFu7c_BFu32ll_BFu0c, "aBFu7c_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu32ll_BFu0i");
    static aBFu7c_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32ll_BFu0i(Test_aBFu7c_BFu32ll_BFu0i, "aBFu7c_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu32ll_BFu0ll");
    static aBFu7c_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32ll_BFu0ll(Test_aBFu7c_BFu32ll_BFu0ll, "aBFu7c_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu32ll_BFu0s");
    static aBFu7c_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7c_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu32ll_BFu0s(Test_aBFu7c_BFu32ll_BFu0s, "aBFu7c_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu33_BFu0c");
    static aBFu7c_BFu33_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7c_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7c_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu33_BFu0c(Test_aBFu7c_BFu33_BFu0c, "aBFu7c_BFu33_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu33_BFu0i");
    static aBFu7c_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7c_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7c_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu33_BFu0i(Test_aBFu7c_BFu33_BFu0i, "aBFu7c_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu7c_BFu33_BFu0ll");
    static aBFu7c_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7c_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7c_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7c_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu33_BFu0ll(Test_aBFu7c_BFu33_BFu0ll, "aBFu7c_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu33_BFu0s");
    static aBFu7c_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7c_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7c_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7c_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu33_BFu0s(Test_aBFu7c_BFu33_BFu0s, "aBFu7c_BFu33_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu7c_BFu0c");
    static aBFu7c_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7c_BFu0c(Test_aBFu7c_BFu7c_BFu0c, "aBFu7c_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu7c_BFu0i");
    static aBFu7c_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7c_BFu0i(Test_aBFu7c_BFu7c_BFu0i, "aBFu7c_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu7c_BFu0s");
    static aBFu7c_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7c_BFu0s(Test_aBFu7c_BFu7c_BFu0s, "aBFu7c_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu7i_BFu0c");
    static aBFu7c_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7i_BFu0c(Test_aBFu7c_BFu7i_BFu0c, "aBFu7c_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu7i_BFu0i");
    static aBFu7c_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7i_BFu0i(Test_aBFu7c_BFu7i_BFu0i, "aBFu7c_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu7i_BFu0s");
    static aBFu7c_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7i_BFu0s(Test_aBFu7c_BFu7i_BFu0s, "aBFu7c_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu7ll_BFu0c");
    static aBFu7c_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7ll_BFu0c(Test_aBFu7c_BFu7ll_BFu0c, "aBFu7c_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu7ll_BFu0i");
    static aBFu7c_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7ll_BFu0i(Test_aBFu7c_BFu7ll_BFu0i, "aBFu7c_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu7ll_BFu0s");
    static aBFu7c_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7ll_BFu0s(Test_aBFu7c_BFu7ll_BFu0s, "aBFu7c_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu7s_BFu0c");
    static aBFu7c_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7s_BFu0c(Test_aBFu7c_BFu7s_BFu0c, "aBFu7c_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu7c_BFu7s_BFu0i");
    static aBFu7c_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7s_BFu0i(Test_aBFu7c_BFu7s_BFu0i, "aBFu7c_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu7s_BFu0s");
    static aBFu7c_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7c_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7c_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu7s_BFu0s(Test_aBFu7c_BFu7s_BFu0s, "aBFu7c_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu8c_BFu0c");
    static aBFu7c_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8c_BFu0c(Test_aBFu7c_BFu8c_BFu0c, "aBFu7c_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu8c_BFu0s");
    static aBFu7c_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8c_BFu0s(Test_aBFu7c_BFu8c_BFu0s, "aBFu7c_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu8i_BFu0c");
    static aBFu7c_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8i_BFu0c(Test_aBFu7c_BFu8i_BFu0c, "aBFu7c_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu8i_BFu0s");
    static aBFu7c_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8i_BFu0s(Test_aBFu7c_BFu8i_BFu0s, "aBFu7c_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu8ll_BFu0c");
    static aBFu7c_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8ll_BFu0c(Test_aBFu7c_BFu8ll_BFu0c, "aBFu7c_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu8ll_BFu0s");
    static aBFu7c_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8ll_BFu0s(Test_aBFu7c_BFu8ll_BFu0s, "aBFu7c_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu7c_BFu8s_BFu0c");
    static aBFu7c_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8s_BFu0c(Test_aBFu7c_BFu8s_BFu0c, "aBFu7c_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu7c_BFu8s_BFu0s");
    static aBFu7c_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7c_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7c_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7c_BFu8s_BFu0s(Test_aBFu7c_BFu8s_BFu0s, "aBFu7c_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_C_BFu0c()
{
  {
    init_simple_test("aBFu7c_C_BFu0c");
    static aBFu7c_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_C_BFu0c(Test_aBFu7c_C_BFu0c, "aBFu7c_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_C_BFu0i()
{
  {
    init_simple_test("aBFu7c_C_BFu0i");
    static aBFu7c_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_C_BFu0i(Test_aBFu7c_C_BFu0i, "aBFu7c_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_C_BFu0s()
{
  {
    init_simple_test("aBFu7c_C_BFu0s");
    static aBFu7c_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_C_BFu0s(Test_aBFu7c_C_BFu0s, "aBFu7c_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_D_BFu0c()
{
  {
    init_simple_test("aBFu7c_D_BFu0c");
    static aBFu7c_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_D_BFu0c(Test_aBFu7c_D_BFu0c, "aBFu7c_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_D_BFu0i()
{
  {
    init_simple_test("aBFu7c_D_BFu0i");
    static aBFu7c_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_D_BFu0i(Test_aBFu7c_D_BFu0i, "aBFu7c_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_D_BFu0ll()
{
  {
    init_simple_test("aBFu7c_D_BFu0ll");
    static aBFu7c_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_D_BFu0ll(Test_aBFu7c_D_BFu0ll, "aBFu7c_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_F_BFu0c()
{
  {
    init_simple_test("aBFu7c_F_BFu0c");
    static aBFu7c_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_F_BFu0c(Test_aBFu7c_F_BFu0c, "aBFu7c_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_I_BFu0c()
{
  {
    init_simple_test("aBFu7c_I_BFu0c");
    static aBFu7c_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_I_BFu0c(Test_aBFu7c_I_BFu0c, "aBFu7c_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Ip_BFu0c()
{
  {
    init_simple_test("aBFu7c_Ip_BFu0c");
    static aBFu7c_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ip_BFu0c(Test_aBFu7c_Ip_BFu0c, "aBFu7c_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_L_BFu0c()
{
  {
    init_simple_test("aBFu7c_L_BFu0c");
    static aBFu7c_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_L_BFu0c(Test_aBFu7c_L_BFu0c, "aBFu7c_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_L_BFu0i()
{
  {
    init_simple_test("aBFu7c_L_BFu0i");
    static aBFu7c_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_L_BFu0i(Test_aBFu7c_L_BFu0i, "aBFu7c_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_L_BFu0ll()
{
  {
    init_simple_test("aBFu7c_L_BFu0ll");
    static aBFu7c_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_L_BFu0ll(Test_aBFu7c_L_BFu0ll, "aBFu7c_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_S_BFu0c()
{
  {
    init_simple_test("aBFu7c_S_BFu0c");
    static aBFu7c_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_S_BFu0c(Test_aBFu7c_S_BFu0c, "aBFu7c_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_S_BFu0i()
{
  {
    init_simple_test("aBFu7c_S_BFu0i");
    static aBFu7c_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_S_BFu0i(Test_aBFu7c_S_BFu0i, "aBFu7c_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_S_BFu0s()
{
  {
    init_simple_test("aBFu7c_S_BFu0s");
    static aBFu7c_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_S_BFu0s(Test_aBFu7c_S_BFu0s, "aBFu7c_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Uc_BFu0c()
{
  {
    init_simple_test("aBFu7c_Uc_BFu0c");
    static aBFu7c_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Uc_BFu0c(Test_aBFu7c_Uc_BFu0c, "aBFu7c_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Uc_BFu0i()
{
  {
    init_simple_test("aBFu7c_Uc_BFu0i");
    static aBFu7c_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Uc_BFu0i(Test_aBFu7c_Uc_BFu0i, "aBFu7c_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Uc_BFu0s()
{
  {
    init_simple_test("aBFu7c_Uc_BFu0s");
    static aBFu7c_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7c_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Uc_BFu0s(Test_aBFu7c_Uc_BFu0s, "aBFu7c_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Ui_BFu0c()
{
  {
    init_simple_test("aBFu7c_Ui_BFu0c");
    static aBFu7c_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7c_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ui_BFu0c(Test_aBFu7c_Ui_BFu0c, "aBFu7c_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Ul_BFu0c()
{
  {
    init_simple_test("aBFu7c_Ul_BFu0c");
    static aBFu7c_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7c_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ul_BFu0c(Test_aBFu7c_Ul_BFu0c, "aBFu7c_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Ul_BFu0i()
{
  {
    init_simple_test("aBFu7c_Ul_BFu0i");
    static aBFu7c_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7c_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ul_BFu0i(Test_aBFu7c_Ul_BFu0i, "aBFu7c_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu7c_Ul_BFu0ll");
    static aBFu7c_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7c_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7c_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Ul_BFu0ll(Test_aBFu7c_Ul_BFu0ll, "aBFu7c_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Us_BFu0c()
{
  {
    init_simple_test("aBFu7c_Us_BFu0c");
    static aBFu7c_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7c_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Us_BFu0c(Test_aBFu7c_Us_BFu0c, "aBFu7c_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Us_BFu0i()
{
  {
    init_simple_test("aBFu7c_Us_BFu0i");
    static aBFu7c_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7c_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Us_BFu0i(Test_aBFu7c_Us_BFu0i, "aBFu7c_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Us_BFu0s()
{
  {
    init_simple_test("aBFu7c_Us_BFu0s");
    static aBFu7c_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7c_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7c_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Us_BFu0s(Test_aBFu7c_Us_BFu0s, "aBFu7c_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7c_Vp_BFu0c()
{
  {
    init_simple_test("aBFu7c_Vp_BFu0c");
    static aBFu7c_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7c_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7c_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7c_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7c_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7c_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7c_Vp_BFu0c(Test_aBFu7c_Vp_BFu0c, "aBFu7c_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


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

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu0c");
    static aBFu7i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c(Test_aBFu7i_BFu0c, "aBFu7i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu0c");
    static aBFu7i_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu0c(Test_aBFu7i_BFu0c_BFu0c, "aBFu7i_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu0i");
    static aBFu7i_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu0i(Test_aBFu7i_BFu0c_BFu0i, "aBFu7i_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu0ll");
    static aBFu7i_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu0ll(Test_aBFu7i_BFu0c_BFu0ll, "aBFu7i_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu0s");
    static aBFu7i_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu0s(Test_aBFu7i_BFu0c_BFu0s, "aBFu7i_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu15i");
    static aBFu7i_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu15i(Test_aBFu7i_BFu0c_BFu15i, "aBFu7i_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu15ll");
    static aBFu7i_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu15ll(Test_aBFu7i_BFu0c_BFu15ll, "aBFu7i_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu15s");
    static aBFu7i_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu15s(Test_aBFu7i_BFu0c_BFu15s, "aBFu7i_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu16i");
    static aBFu7i_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu16i(Test_aBFu7i_BFu0c_BFu16i, "aBFu7i_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu16ll");
    static aBFu7i_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu16ll(Test_aBFu7i_BFu0c_BFu16ll, "aBFu7i_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu16s");
    static aBFu7i_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu16s(Test_aBFu7i_BFu0c_BFu16s, "aBFu7i_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu17i");
    static aBFu7i_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu17i(Test_aBFu7i_BFu0c_BFu17i, "aBFu7i_BFu0c_BFu17i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu17ll");
    static aBFu7i_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu17ll(Test_aBFu7i_BFu0c_BFu17ll, "aBFu7i_BFu0c_BFu17ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu1c");
    static aBFu7i_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu1c(Test_aBFu7i_BFu0c_BFu1c, "aBFu7i_BFu0c_BFu1c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu1i");
    static aBFu7i_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu1i(Test_aBFu7i_BFu0c_BFu1i, "aBFu7i_BFu0c_BFu1i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu1ll");
    static aBFu7i_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu1ll(Test_aBFu7i_BFu0c_BFu1ll, "aBFu7i_BFu0c_BFu1ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu1s");
    static aBFu7i_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu1s(Test_aBFu7i_BFu0c_BFu1s, "aBFu7i_BFu0c_BFu1s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu31i");
    static aBFu7i_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu31i(Test_aBFu7i_BFu0c_BFu31i, "aBFu7i_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu31ll");
    static aBFu7i_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu31ll(Test_aBFu7i_BFu0c_BFu31ll, "aBFu7i_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu32i");
    static aBFu7i_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu32i(Test_aBFu7i_BFu0c_BFu32i, "aBFu7i_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu32ll");
    static aBFu7i_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu32ll(Test_aBFu7i_BFu0c_BFu32ll, "aBFu7i_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu33");
    static aBFu7i_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, 1, "aBFu7i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7i_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu33(Test_aBFu7i_BFu0c_BFu33, "aBFu7i_BFu0c_BFu33", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu7c");
    static aBFu7i_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu7c(Test_aBFu7i_BFu0c_BFu7c, "aBFu7i_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu7i");
    static aBFu7i_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu7i(Test_aBFu7i_BFu0c_BFu7i, "aBFu7i_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu7ll");
    static aBFu7i_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu7ll(Test_aBFu7i_BFu0c_BFu7ll, "aBFu7i_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

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

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu7s");
    static aBFu7i_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu7s(Test_aBFu7i_BFu0c_BFu7s, "aBFu7i_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu8c");
    static aBFu7i_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu8c(Test_aBFu7i_BFu0c_BFu8c, "aBFu7i_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu8i");
    static aBFu7i_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu8i(Test_aBFu7i_BFu0c_BFu8i, "aBFu7i_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu8ll");
    static aBFu7i_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu8ll(Test_aBFu7i_BFu0c_BFu8ll, "aBFu7i_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu8s");
    static aBFu7i_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu8s(Test_aBFu7i_BFu0c_BFu8s, "aBFu7i_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu9i");
    static aBFu7i_BFu0c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu9i(Test_aBFu7i_BFu0c_BFu9i, "aBFu7i_BFu0c_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu9ll");
    static aBFu7i_BFu0c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu9ll(Test_aBFu7i_BFu0c_BFu9ll, "aBFu7i_BFu0c_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu7i_BFu0c_BFu9s");
    static aBFu7i_BFu0c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_BFu9s(Test_aBFu7i_BFu0c_BFu9s, "aBFu7i_BFu0c_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_C()
{
  {
    init_simple_test("aBFu7i_BFu0c_C");
    static aBFu7i_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_C(Test_aBFu7i_BFu0c_C, "aBFu7i_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_D()
{
  {
    init_simple_test("aBFu7i_BFu0c_D");
    static aBFu7i_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_D(Test_aBFu7i_BFu0c_D, "aBFu7i_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_F()
{
  {
    init_simple_test("aBFu7i_BFu0c_F");
    static aBFu7i_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_F(Test_aBFu7i_BFu0c_F, "aBFu7i_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_I()
{
  {
    init_simple_test("aBFu7i_BFu0c_I");
    static aBFu7i_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_I(Test_aBFu7i_BFu0c_I, "aBFu7i_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Ip()
{
  {
    init_simple_test("aBFu7i_BFu0c_Ip");
    static aBFu7i_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Ip(Test_aBFu7i_BFu0c_Ip, "aBFu7i_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_L()
{
  {
    init_simple_test("aBFu7i_BFu0c_L");
    static aBFu7i_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_L(Test_aBFu7i_BFu0c_L, "aBFu7i_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_S()
{
  {
    init_simple_test("aBFu7i_BFu0c_S");
    static aBFu7i_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_S(Test_aBFu7i_BFu0c_S, "aBFu7i_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Uc()
{
  {
    init_simple_test("aBFu7i_BFu0c_Uc");
    static aBFu7i_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Uc(Test_aBFu7i_BFu0c_Uc, "aBFu7i_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Ui()
{
  {
    init_simple_test("aBFu7i_BFu0c_Ui");
    static aBFu7i_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Ui(Test_aBFu7i_BFu0c_Ui, "aBFu7i_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Ul()
{
  {
    init_simple_test("aBFu7i_BFu0c_Ul");
    static aBFu7i_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Ul(Test_aBFu7i_BFu0c_Ul, "aBFu7i_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Us()
{
  {
    init_simple_test("aBFu7i_BFu0c_Us");
    static aBFu7i_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Us(Test_aBFu7i_BFu0c_Us, "aBFu7i_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0c_Vp()
{
  {
    init_simple_test("aBFu7i_BFu0c_Vp");
    static aBFu7i_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu7i_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0c_Vp(Test_aBFu7i_BFu0c_Vp, "aBFu7i_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu0i");
    static aBFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i(Test_aBFu7i_BFu0i, "aBFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu0c");
    static aBFu7i_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu0c(Test_aBFu7i_BFu0i_BFu0c, "aBFu7i_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu0i");
    static aBFu7i_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu0i(Test_aBFu7i_BFu0i_BFu0i, "aBFu7i_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu0ll");
    static aBFu7i_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu0ll(Test_aBFu7i_BFu0i_BFu0ll, "aBFu7i_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu0s");
    static aBFu7i_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu0s(Test_aBFu7i_BFu0i_BFu0s, "aBFu7i_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu15i");
    static aBFu7i_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu15i(Test_aBFu7i_BFu0i_BFu15i, "aBFu7i_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu15ll");
    static aBFu7i_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu15ll(Test_aBFu7i_BFu0i_BFu15ll, "aBFu7i_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu15s");
    static aBFu7i_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu15s(Test_aBFu7i_BFu0i_BFu15s, "aBFu7i_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu16i");
    static aBFu7i_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu16i(Test_aBFu7i_BFu0i_BFu16i, "aBFu7i_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu16ll");
    static aBFu7i_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu16ll(Test_aBFu7i_BFu0i_BFu16ll, "aBFu7i_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu16s");
    static aBFu7i_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu16s(Test_aBFu7i_BFu0i_BFu16s, "aBFu7i_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu17i");
    static aBFu7i_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7i_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu17i(Test_aBFu7i_BFu0i_BFu17i, "aBFu7i_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu17ll");
    static aBFu7i_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7i_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu17ll(Test_aBFu7i_BFu0i_BFu17ll, "aBFu7i_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu1c");
    static aBFu7i_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu1c(Test_aBFu7i_BFu0i_BFu1c, "aBFu7i_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu1i");
    static aBFu7i_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu1i(Test_aBFu7i_BFu0i_BFu1i, "aBFu7i_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu1ll");
    static aBFu7i_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu1ll(Test_aBFu7i_BFu0i_BFu1ll, "aBFu7i_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu1s");
    static aBFu7i_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu1s(Test_aBFu7i_BFu0i_BFu1s, "aBFu7i_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu31i");
    static aBFu7i_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu31i(Test_aBFu7i_BFu0i_BFu31i, "aBFu7i_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu31ll");
    static aBFu7i_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu31ll(Test_aBFu7i_BFu0i_BFu31ll, "aBFu7i_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu32i");
    static aBFu7i_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu32i(Test_aBFu7i_BFu0i_BFu32i, "aBFu7i_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu32ll");
    static aBFu7i_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu32ll(Test_aBFu7i_BFu0i_BFu32ll, "aBFu7i_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu33");
    static aBFu7i_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu7i_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, 1, "aBFu7i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7i_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu33(Test_aBFu7i_BFu0i_BFu33, "aBFu7i_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu7c");
    static aBFu7i_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu7c(Test_aBFu7i_BFu0i_BFu7c, "aBFu7i_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu7i");
    static aBFu7i_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu7i(Test_aBFu7i_BFu0i_BFu7i, "aBFu7i_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu7ll");
    static aBFu7i_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu7ll(Test_aBFu7i_BFu0i_BFu7ll, "aBFu7i_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu7s");
    static aBFu7i_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu7s(Test_aBFu7i_BFu0i_BFu7s, "aBFu7i_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu8c");
    static aBFu7i_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu8c(Test_aBFu7i_BFu0i_BFu8c, "aBFu7i_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu8i");
    static aBFu7i_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu8i(Test_aBFu7i_BFu0i_BFu8i, "aBFu7i_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu8ll");
    static aBFu7i_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu8ll(Test_aBFu7i_BFu0i_BFu8ll, "aBFu7i_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu8s");
    static aBFu7i_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu8s(Test_aBFu7i_BFu0i_BFu8s, "aBFu7i_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu9i");
    static aBFu7i_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu9i(Test_aBFu7i_BFu0i_BFu9i, "aBFu7i_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu9ll");
    static aBFu7i_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu9ll(Test_aBFu7i_BFu0i_BFu9ll, "aBFu7i_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu7i_BFu0i_BFu9s");
    static aBFu7i_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_BFu9s(Test_aBFu7i_BFu0i_BFu9s, "aBFu7i_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_C()
{
  {
    init_simple_test("aBFu7i_BFu0i_C");
    static aBFu7i_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_C(Test_aBFu7i_BFu0i_C, "aBFu7i_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_D()
{
  {
    init_simple_test("aBFu7i_BFu0i_D");
    static aBFu7i_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_D(Test_aBFu7i_BFu0i_D, "aBFu7i_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_F()
{
  {
    init_simple_test("aBFu7i_BFu0i_F");
    static aBFu7i_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_F(Test_aBFu7i_BFu0i_F, "aBFu7i_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_I()
{
  {
    init_simple_test("aBFu7i_BFu0i_I");
    static aBFu7i_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_I(Test_aBFu7i_BFu0i_I, "aBFu7i_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Ip()
{
  {
    init_simple_test("aBFu7i_BFu0i_Ip");
    static aBFu7i_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Ip(Test_aBFu7i_BFu0i_Ip, "aBFu7i_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_L()
{
  {
    init_simple_test("aBFu7i_BFu0i_L");
    static aBFu7i_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_L(Test_aBFu7i_BFu0i_L, "aBFu7i_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_S()
{
  {
    init_simple_test("aBFu7i_BFu0i_S");
    static aBFu7i_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_S(Test_aBFu7i_BFu0i_S, "aBFu7i_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Uc()
{
  {
    init_simple_test("aBFu7i_BFu0i_Uc");
    static aBFu7i_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Uc(Test_aBFu7i_BFu0i_Uc, "aBFu7i_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Ui()
{
  {
    init_simple_test("aBFu7i_BFu0i_Ui");
    static aBFu7i_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Ui(Test_aBFu7i_BFu0i_Ui, "aBFu7i_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Ul()
{
  {
    init_simple_test("aBFu7i_BFu0i_Ul");
    static aBFu7i_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Ul(Test_aBFu7i_BFu0i_Ul, "aBFu7i_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Us()
{
  {
    init_simple_test("aBFu7i_BFu0i_Us");
    static aBFu7i_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Us(Test_aBFu7i_BFu0i_Us, "aBFu7i_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0i_Vp()
{
  {
    init_simple_test("aBFu7i_BFu0i_Vp");
    static aBFu7i_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7i_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0i_Vp(Test_aBFu7i_BFu0i_Vp, "aBFu7i_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll");
    static aBFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll(Test_aBFu7i_BFu0ll, "aBFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu0c");
    static aBFu7i_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu0c(Test_aBFu7i_BFu0ll_BFu0c, "aBFu7i_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu0i");
    static aBFu7i_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu0i(Test_aBFu7i_BFu0ll_BFu0i, "aBFu7i_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu0ll");
    static aBFu7i_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu0ll(Test_aBFu7i_BFu0ll_BFu0ll, "aBFu7i_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu0s");
    static aBFu7i_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu0s(Test_aBFu7i_BFu0ll_BFu0s, "aBFu7i_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu15i");
    static aBFu7i_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu15i(Test_aBFu7i_BFu0ll_BFu15i, "aBFu7i_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu15ll");
    static aBFu7i_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu15ll(Test_aBFu7i_BFu0ll_BFu15ll, "aBFu7i_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu15s");
    static aBFu7i_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu15s(Test_aBFu7i_BFu0ll_BFu15s, "aBFu7i_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu16i");
    static aBFu7i_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu16i(Test_aBFu7i_BFu0ll_BFu16i, "aBFu7i_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu16ll");
    static aBFu7i_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu16ll(Test_aBFu7i_BFu0ll_BFu16ll, "aBFu7i_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu16s");
    static aBFu7i_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu16s(Test_aBFu7i_BFu0ll_BFu16s, "aBFu7i_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu17i");
    static aBFu7i_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7i_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu17i(Test_aBFu7i_BFu0ll_BFu17i, "aBFu7i_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu17ll");
    static aBFu7i_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7i_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu17ll(Test_aBFu7i_BFu0ll_BFu17ll, "aBFu7i_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu1c");
    static aBFu7i_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu1c(Test_aBFu7i_BFu0ll_BFu1c, "aBFu7i_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu1i");
    static aBFu7i_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu1i(Test_aBFu7i_BFu0ll_BFu1i, "aBFu7i_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu1ll");
    static aBFu7i_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu1ll(Test_aBFu7i_BFu0ll_BFu1ll, "aBFu7i_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu1s");
    static aBFu7i_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu1s(Test_aBFu7i_BFu0ll_BFu1s, "aBFu7i_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu31i");
    static aBFu7i_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu31i(Test_aBFu7i_BFu0ll_BFu31i, "aBFu7i_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu31ll");
    static aBFu7i_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu31ll(Test_aBFu7i_BFu0ll_BFu31ll, "aBFu7i_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu32i");
    static aBFu7i_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu32i(Test_aBFu7i_BFu0ll_BFu32i, "aBFu7i_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu32ll");
    static aBFu7i_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu32ll(Test_aBFu7i_BFu0ll_BFu32ll, "aBFu7i_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu33");
    static aBFu7i_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu7i_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, 1, "aBFu7i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7i_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu33(Test_aBFu7i_BFu0ll_BFu33, "aBFu7i_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu7c");
    static aBFu7i_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu7c(Test_aBFu7i_BFu0ll_BFu7c, "aBFu7i_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu7i");
    static aBFu7i_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu7i(Test_aBFu7i_BFu0ll_BFu7i, "aBFu7i_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu7ll");
    static aBFu7i_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu7ll(Test_aBFu7i_BFu0ll_BFu7ll, "aBFu7i_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu7s");
    static aBFu7i_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu7s(Test_aBFu7i_BFu0ll_BFu7s, "aBFu7i_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu8c");
    static aBFu7i_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu8c(Test_aBFu7i_BFu0ll_BFu8c, "aBFu7i_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu8i");
    static aBFu7i_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu8i(Test_aBFu7i_BFu0ll_BFu8i, "aBFu7i_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu8ll");
    static aBFu7i_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu8ll(Test_aBFu7i_BFu0ll_BFu8ll, "aBFu7i_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu8s");
    static aBFu7i_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu8s(Test_aBFu7i_BFu0ll_BFu8s, "aBFu7i_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu9i");
    static aBFu7i_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu9i(Test_aBFu7i_BFu0ll_BFu9i, "aBFu7i_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu9ll");
    static aBFu7i_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu9ll(Test_aBFu7i_BFu0ll_BFu9ll, "aBFu7i_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu7i_BFu0ll_BFu9s");
    static aBFu7i_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_BFu9s(Test_aBFu7i_BFu0ll_BFu9s, "aBFu7i_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_C()
{
  {
    init_simple_test("aBFu7i_BFu0ll_C");
    static aBFu7i_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_C(Test_aBFu7i_BFu0ll_C, "aBFu7i_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_D()
{
  {
    init_simple_test("aBFu7i_BFu0ll_D");
    static aBFu7i_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_D(Test_aBFu7i_BFu0ll_D, "aBFu7i_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_F()
{
  {
    init_simple_test("aBFu7i_BFu0ll_F");
    static aBFu7i_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_F(Test_aBFu7i_BFu0ll_F, "aBFu7i_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_I()
{
  {
    init_simple_test("aBFu7i_BFu0ll_I");
    static aBFu7i_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_I(Test_aBFu7i_BFu0ll_I, "aBFu7i_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Ip");
    static aBFu7i_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7i_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Ip(Test_aBFu7i_BFu0ll_Ip, "aBFu7i_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_L()
{
  {
    init_simple_test("aBFu7i_BFu0ll_L");
    static aBFu7i_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_L(Test_aBFu7i_BFu0ll_L, "aBFu7i_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_S()
{
  {
    init_simple_test("aBFu7i_BFu0ll_S");
    static aBFu7i_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_S(Test_aBFu7i_BFu0ll_S, "aBFu7i_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Uc");
    static aBFu7i_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Uc(Test_aBFu7i_BFu0ll_Uc, "aBFu7i_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Ui");
    static aBFu7i_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Ui(Test_aBFu7i_BFu0ll_Ui, "aBFu7i_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Ul");
    static aBFu7i_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Ul(Test_aBFu7i_BFu0ll_Ul, "aBFu7i_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Us()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Us");
    static aBFu7i_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Us(Test_aBFu7i_BFu0ll_Us, "aBFu7i_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu7i_BFu0ll_Vp");
    static aBFu7i_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7i_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7i_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0ll_Vp(Test_aBFu7i_BFu0ll_Vp, "aBFu7i_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu0s");
    static aBFu7i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s(Test_aBFu7i_BFu0s, "aBFu7i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu0c");
    static aBFu7i_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu0c(Test_aBFu7i_BFu0s_BFu0c, "aBFu7i_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu0i");
    static aBFu7i_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu0i(Test_aBFu7i_BFu0s_BFu0i, "aBFu7i_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu0ll");
    static aBFu7i_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu0ll(Test_aBFu7i_BFu0s_BFu0ll, "aBFu7i_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu0s");
    static aBFu7i_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu0s(Test_aBFu7i_BFu0s_BFu0s, "aBFu7i_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu15i");
    static aBFu7i_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu15i(Test_aBFu7i_BFu0s_BFu15i, "aBFu7i_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu15ll");
    static aBFu7i_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu15ll(Test_aBFu7i_BFu0s_BFu15ll, "aBFu7i_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu15s");
    static aBFu7i_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7i_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu15s(Test_aBFu7i_BFu0s_BFu15s, "aBFu7i_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu16i");
    static aBFu7i_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu16i(Test_aBFu7i_BFu0s_BFu16i, "aBFu7i_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu16ll");
    static aBFu7i_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu16ll(Test_aBFu7i_BFu0s_BFu16ll, "aBFu7i_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu16s");
    static aBFu7i_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7i_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu16s(Test_aBFu7i_BFu0s_BFu16s, "aBFu7i_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu17i");
    static aBFu7i_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu17i(Test_aBFu7i_BFu0s_BFu17i, "aBFu7i_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu17ll");
    static aBFu7i_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7i_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7i_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu17ll(Test_aBFu7i_BFu0s_BFu17ll, "aBFu7i_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu1c");
    static aBFu7i_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu1c(Test_aBFu7i_BFu0s_BFu1c, "aBFu7i_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu1i");
    static aBFu7i_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu1i(Test_aBFu7i_BFu0s_BFu1i, "aBFu7i_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu1ll");
    static aBFu7i_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu1ll(Test_aBFu7i_BFu0s_BFu1ll, "aBFu7i_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu1s");
    static aBFu7i_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7i_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu1s(Test_aBFu7i_BFu0s_BFu1s, "aBFu7i_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu31i");
    static aBFu7i_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu31i(Test_aBFu7i_BFu0s_BFu31i, "aBFu7i_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu31ll");
    static aBFu7i_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7i_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu31ll(Test_aBFu7i_BFu0s_BFu31ll, "aBFu7i_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu32i");
    static aBFu7i_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu32i(Test_aBFu7i_BFu0s_BFu32i, "aBFu7i_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu32ll");
    static aBFu7i_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7i_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu32ll(Test_aBFu7i_BFu0s_BFu32ll, "aBFu7i_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu33");
    static aBFu7i_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7i_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu7i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7i_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu33(Test_aBFu7i_BFu0s_BFu33, "aBFu7i_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu7c");
    static aBFu7i_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu7c(Test_aBFu7i_BFu0s_BFu7c, "aBFu7i_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu7i");
    static aBFu7i_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu7i(Test_aBFu7i_BFu0s_BFu7i, "aBFu7i_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu7ll");
    static aBFu7i_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu7ll(Test_aBFu7i_BFu0s_BFu7ll, "aBFu7i_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu7s");
    static aBFu7i_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu7s(Test_aBFu7i_BFu0s_BFu7s, "aBFu7i_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu8c");
    static aBFu7i_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu8c(Test_aBFu7i_BFu0s_BFu8c, "aBFu7i_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu8i");
    static aBFu7i_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu8i(Test_aBFu7i_BFu0s_BFu8i, "aBFu7i_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu8ll");
    static aBFu7i_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu8ll(Test_aBFu7i_BFu0s_BFu8ll, "aBFu7i_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu8s");
    static aBFu7i_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7i_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu8s(Test_aBFu7i_BFu0s_BFu8s, "aBFu7i_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu9i");
    static aBFu7i_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu9i(Test_aBFu7i_BFu0s_BFu9i, "aBFu7i_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu9ll");
    static aBFu7i_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu9ll(Test_aBFu7i_BFu0s_BFu9ll, "aBFu7i_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu7i_BFu0s_BFu9s");
    static aBFu7i_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7i_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_BFu9s(Test_aBFu7i_BFu0s_BFu9s, "aBFu7i_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_C()
{
  {
    init_simple_test("aBFu7i_BFu0s_C");
    static aBFu7i_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_C(Test_aBFu7i_BFu0s_C, "aBFu7i_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_D()
{
  {
    init_simple_test("aBFu7i_BFu0s_D");
    static aBFu7i_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_D(Test_aBFu7i_BFu0s_D, "aBFu7i_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_F()
{
  {
    init_simple_test("aBFu7i_BFu0s_F");
    static aBFu7i_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_F(Test_aBFu7i_BFu0s_F, "aBFu7i_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_I()
{
  {
    init_simple_test("aBFu7i_BFu0s_I");
    static aBFu7i_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_I(Test_aBFu7i_BFu0s_I, "aBFu7i_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Ip()
{
  {
    init_simple_test("aBFu7i_BFu0s_Ip");
    static aBFu7i_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Ip(Test_aBFu7i_BFu0s_Ip, "aBFu7i_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_L()
{
  {
    init_simple_test("aBFu7i_BFu0s_L");
    static aBFu7i_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_L(Test_aBFu7i_BFu0s_L, "aBFu7i_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_S()
{
  {
    init_simple_test("aBFu7i_BFu0s_S");
    static aBFu7i_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_S(Test_aBFu7i_BFu0s_S, "aBFu7i_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Uc()
{
  {
    init_simple_test("aBFu7i_BFu0s_Uc");
    static aBFu7i_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7i_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Uc(Test_aBFu7i_BFu0s_Uc, "aBFu7i_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Ui()
{
  {
    init_simple_test("aBFu7i_BFu0s_Ui");
    static aBFu7i_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Ui(Test_aBFu7i_BFu0s_Ui, "aBFu7i_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Ul()
{
  {
    init_simple_test("aBFu7i_BFu0s_Ul");
    static aBFu7i_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Ul(Test_aBFu7i_BFu0s_Ul, "aBFu7i_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Us()
{
  {
    init_simple_test("aBFu7i_BFu0s_Us");
    static aBFu7i_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Us(Test_aBFu7i_BFu0s_Us, "aBFu7i_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu0s_Vp()
{
  {
    init_simple_test("aBFu7i_BFu0s_Vp");
    static aBFu7i_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7i_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu0s_Vp(Test_aBFu7i_BFu0s_Vp, "aBFu7i_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu15i_BFu0c");
    static aBFu7i_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15i_BFu0c(Test_aBFu7i_BFu15i_BFu0c, "aBFu7i_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu15i_BFu0i");
    static aBFu7i_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15i_BFu0i(Test_aBFu7i_BFu15i_BFu0i, "aBFu7i_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu15i_BFu0ll");
    static aBFu7i_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15i_BFu0ll(Test_aBFu7i_BFu15i_BFu0ll, "aBFu7i_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu15i_BFu0s");
    static aBFu7i_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15i_BFu0s(Test_aBFu7i_BFu15i_BFu0s, "aBFu7i_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu15ll_BFu0c");
    static aBFu7i_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15ll_BFu0c(Test_aBFu7i_BFu15ll_BFu0c, "aBFu7i_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu15ll_BFu0i");
    static aBFu7i_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15ll_BFu0i(Test_aBFu7i_BFu15ll_BFu0i, "aBFu7i_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu15ll_BFu0ll");
    static aBFu7i_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15ll_BFu0ll(Test_aBFu7i_BFu15ll_BFu0ll, "aBFu7i_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu15ll_BFu0s");
    static aBFu7i_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15ll_BFu0s(Test_aBFu7i_BFu15ll_BFu0s, "aBFu7i_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu15s_BFu0c");
    static aBFu7i_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15s_BFu0c(Test_aBFu7i_BFu15s_BFu0c, "aBFu7i_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu15s_BFu0i");
    static aBFu7i_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15s_BFu0i(Test_aBFu7i_BFu15s_BFu0i, "aBFu7i_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu15s_BFu0ll");
    static aBFu7i_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15s_BFu0ll(Test_aBFu7i_BFu15s_BFu0ll, "aBFu7i_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu15s_BFu0s");
    static aBFu7i_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7i_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu15s_BFu0s(Test_aBFu7i_BFu15s_BFu0s, "aBFu7i_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu16i_BFu0c");
    static aBFu7i_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16i_BFu0c(Test_aBFu7i_BFu16i_BFu0c, "aBFu7i_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu16i_BFu0i");
    static aBFu7i_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16i_BFu0i(Test_aBFu7i_BFu16i_BFu0i, "aBFu7i_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu16i_BFu0ll");
    static aBFu7i_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16i_BFu0ll(Test_aBFu7i_BFu16i_BFu0ll, "aBFu7i_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu16i_BFu0s");
    static aBFu7i_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16i_BFu0s(Test_aBFu7i_BFu16i_BFu0s, "aBFu7i_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu16ll_BFu0c");
    static aBFu7i_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16ll_BFu0c(Test_aBFu7i_BFu16ll_BFu0c, "aBFu7i_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu16ll_BFu0i");
    static aBFu7i_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16ll_BFu0i(Test_aBFu7i_BFu16ll_BFu0i, "aBFu7i_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu16ll_BFu0ll");
    static aBFu7i_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16ll_BFu0ll(Test_aBFu7i_BFu16ll_BFu0ll, "aBFu7i_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu16ll_BFu0s");
    static aBFu7i_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16ll_BFu0s(Test_aBFu7i_BFu16ll_BFu0s, "aBFu7i_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu16s_BFu0c");
    static aBFu7i_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16s_BFu0c(Test_aBFu7i_BFu16s_BFu0c, "aBFu7i_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu16s_BFu0i");
    static aBFu7i_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16s_BFu0i(Test_aBFu7i_BFu16s_BFu0i, "aBFu7i_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu16s_BFu0ll");
    static aBFu7i_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16s_BFu0ll(Test_aBFu7i_BFu16s_BFu0ll, "aBFu7i_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu16s_BFu0s");
    static aBFu7i_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7i_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu16s_BFu0s(Test_aBFu7i_BFu16s_BFu0s, "aBFu7i_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu17i_BFu0c");
    static aBFu7i_BFu17i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17i_BFu0c(Test_aBFu7i_BFu17i_BFu0c, "aBFu7i_BFu17i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu17i_BFu0i");
    static aBFu7i_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17i_BFu0i(Test_aBFu7i_BFu17i_BFu0i, "aBFu7i_BFu17i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu17i_BFu0ll");
    static aBFu7i_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17i_BFu0ll(Test_aBFu7i_BFu17i_BFu0ll, "aBFu7i_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu17i_BFu0s");
    static aBFu7i_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17i_BFu0s(Test_aBFu7i_BFu17i_BFu0s, "aBFu7i_BFu17i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu17ll_BFu0c");
    static aBFu7i_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17ll_BFu0c(Test_aBFu7i_BFu17ll_BFu0c, "aBFu7i_BFu17ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu17ll_BFu0i");
    static aBFu7i_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17ll_BFu0i(Test_aBFu7i_BFu17ll_BFu0i, "aBFu7i_BFu17ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu17ll_BFu0ll");
    static aBFu7i_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17ll_BFu0ll(Test_aBFu7i_BFu17ll_BFu0ll, "aBFu7i_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu17ll_BFu0s");
    static aBFu7i_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7i_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu17ll_BFu0s(Test_aBFu7i_BFu17ll_BFu0s, "aBFu7i_BFu17ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu1c_BFu0c");
    static aBFu7i_BFu1c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1c_BFu0c(Test_aBFu7i_BFu1c_BFu0c, "aBFu7i_BFu1c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu1c_BFu0i");
    static aBFu7i_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1c_BFu0i(Test_aBFu7i_BFu1c_BFu0i, "aBFu7i_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu1c_BFu0ll");
    static aBFu7i_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1c_BFu0ll(Test_aBFu7i_BFu1c_BFu0ll, "aBFu7i_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu1c_BFu0s");
    static aBFu7i_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1c_BFu0s(Test_aBFu7i_BFu1c_BFu0s, "aBFu7i_BFu1c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu1i_BFu0c");
    static aBFu7i_BFu1i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1i_BFu0c(Test_aBFu7i_BFu1i_BFu0c, "aBFu7i_BFu1i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu1i_BFu0i");
    static aBFu7i_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1i_BFu0i(Test_aBFu7i_BFu1i_BFu0i, "aBFu7i_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu1i_BFu0ll");
    static aBFu7i_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1i_BFu0ll(Test_aBFu7i_BFu1i_BFu0ll, "aBFu7i_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu1i_BFu0s");
    static aBFu7i_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1i_BFu0s(Test_aBFu7i_BFu1i_BFu0s, "aBFu7i_BFu1i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu1ll_BFu0c");
    static aBFu7i_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1ll_BFu0c(Test_aBFu7i_BFu1ll_BFu0c, "aBFu7i_BFu1ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu1ll_BFu0i");
    static aBFu7i_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1ll_BFu0i(Test_aBFu7i_BFu1ll_BFu0i, "aBFu7i_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu1ll_BFu0ll");
    static aBFu7i_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1ll_BFu0ll(Test_aBFu7i_BFu1ll_BFu0ll, "aBFu7i_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu1ll_BFu0s");
    static aBFu7i_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1ll_BFu0s(Test_aBFu7i_BFu1ll_BFu0s, "aBFu7i_BFu1ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu1s_BFu0c");
    static aBFu7i_BFu1s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7i_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1s_BFu0c(Test_aBFu7i_BFu1s_BFu0c, "aBFu7i_BFu1s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu1s_BFu0i");
    static aBFu7i_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1s_BFu0i(Test_aBFu7i_BFu1s_BFu0i, "aBFu7i_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu1s_BFu0ll");
    static aBFu7i_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1s_BFu0ll(Test_aBFu7i_BFu1s_BFu0ll, "aBFu7i_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu1s_BFu0s");
    static aBFu7i_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7i_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7i_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu1s_BFu0s(Test_aBFu7i_BFu1s_BFu0s, "aBFu7i_BFu1s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu31i_BFu0c");
    static aBFu7i_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31i_BFu0c(Test_aBFu7i_BFu31i_BFu0c, "aBFu7i_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu31i_BFu0i");
    static aBFu7i_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31i_BFu0i(Test_aBFu7i_BFu31i_BFu0i, "aBFu7i_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu31i_BFu0ll");
    static aBFu7i_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31i_BFu0ll(Test_aBFu7i_BFu31i_BFu0ll, "aBFu7i_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu31i_BFu0s");
    static aBFu7i_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31i_BFu0s(Test_aBFu7i_BFu31i_BFu0s, "aBFu7i_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu31ll_BFu0c");
    static aBFu7i_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31ll_BFu0c(Test_aBFu7i_BFu31ll_BFu0c, "aBFu7i_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu31ll_BFu0i");
    static aBFu7i_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31ll_BFu0i(Test_aBFu7i_BFu31ll_BFu0i, "aBFu7i_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu31ll_BFu0ll");
    static aBFu7i_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31ll_BFu0ll(Test_aBFu7i_BFu31ll_BFu0ll, "aBFu7i_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu31ll_BFu0s");
    static aBFu7i_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7i_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu31ll_BFu0s(Test_aBFu7i_BFu31ll_BFu0s, "aBFu7i_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu32i_BFu0c");
    static aBFu7i_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32i_BFu0c(Test_aBFu7i_BFu32i_BFu0c, "aBFu7i_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu32i_BFu0i");
    static aBFu7i_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32i_BFu0i(Test_aBFu7i_BFu32i_BFu0i, "aBFu7i_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu32i_BFu0ll");
    static aBFu7i_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32i_BFu0ll(Test_aBFu7i_BFu32i_BFu0ll, "aBFu7i_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu32i_BFu0s");
    static aBFu7i_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32i_BFu0s(Test_aBFu7i_BFu32i_BFu0s, "aBFu7i_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu32ll_BFu0c");
    static aBFu7i_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32ll_BFu0c(Test_aBFu7i_BFu32ll_BFu0c, "aBFu7i_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu32ll_BFu0i");
    static aBFu7i_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32ll_BFu0i(Test_aBFu7i_BFu32ll_BFu0i, "aBFu7i_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu32ll_BFu0ll");
    static aBFu7i_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32ll_BFu0ll(Test_aBFu7i_BFu32ll_BFu0ll, "aBFu7i_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu32ll_BFu0s");
    static aBFu7i_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7i_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu32ll_BFu0s(Test_aBFu7i_BFu32ll_BFu0s, "aBFu7i_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu33_BFu0c");
    static aBFu7i_BFu33_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7i_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu33_BFu0c(Test_aBFu7i_BFu33_BFu0c, "aBFu7i_BFu33_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu33_BFu0i");
    static aBFu7i_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7i_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu33_BFu0i(Test_aBFu7i_BFu33_BFu0i, "aBFu7i_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu33_BFu0ll");
    static aBFu7i_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7i_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu33_BFu0ll(Test_aBFu7i_BFu33_BFu0ll, "aBFu7i_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu33_BFu0s");
    static aBFu7i_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7i_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu33_BFu0s(Test_aBFu7i_BFu33_BFu0s, "aBFu7i_BFu33_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu7c_BFu0c");
    static aBFu7i_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7c_BFu0c(Test_aBFu7i_BFu7c_BFu0c, "aBFu7i_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu7c_BFu0i");
    static aBFu7i_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7c_BFu0i(Test_aBFu7i_BFu7c_BFu0i, "aBFu7i_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu7c_BFu0ll");
    static aBFu7i_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7c_BFu0ll(Test_aBFu7i_BFu7c_BFu0ll, "aBFu7i_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu7c_BFu0s");
    static aBFu7i_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7c_BFu0s(Test_aBFu7i_BFu7c_BFu0s, "aBFu7i_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu7i_BFu0c");
    static aBFu7i_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7i_BFu0c(Test_aBFu7i_BFu7i_BFu0c, "aBFu7i_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu7i_BFu0i");
    static aBFu7i_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7i_BFu0i(Test_aBFu7i_BFu7i_BFu0i, "aBFu7i_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu7i_BFu0ll");
    static aBFu7i_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7i_BFu0ll(Test_aBFu7i_BFu7i_BFu0ll, "aBFu7i_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu7i_BFu0s");
    static aBFu7i_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7i_BFu0s(Test_aBFu7i_BFu7i_BFu0s, "aBFu7i_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu7ll_BFu0c");
    static aBFu7i_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7ll_BFu0c(Test_aBFu7i_BFu7ll_BFu0c, "aBFu7i_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu7ll_BFu0i");
    static aBFu7i_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7ll_BFu0i(Test_aBFu7i_BFu7ll_BFu0i, "aBFu7i_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu7ll_BFu0ll");
    static aBFu7i_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7ll_BFu0ll(Test_aBFu7i_BFu7ll_BFu0ll, "aBFu7i_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu7ll_BFu0s");
    static aBFu7i_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7ll_BFu0s(Test_aBFu7i_BFu7ll_BFu0s, "aBFu7i_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu7s_BFu0c");
    static aBFu7i_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7s_BFu0c(Test_aBFu7i_BFu7s_BFu0c, "aBFu7i_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu7s_BFu0i");
    static aBFu7i_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7s_BFu0i(Test_aBFu7i_BFu7s_BFu0i, "aBFu7i_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu7s_BFu0ll");
    static aBFu7i_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7s_BFu0ll(Test_aBFu7i_BFu7s_BFu0ll, "aBFu7i_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu7s_BFu0s");
    static aBFu7i_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7i_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu7s_BFu0s(Test_aBFu7i_BFu7s_BFu0s, "aBFu7i_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu8c_BFu0c");
    static aBFu7i_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8c_BFu0c(Test_aBFu7i_BFu8c_BFu0c, "aBFu7i_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu8c_BFu0i");
    static aBFu7i_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8c_BFu0i(Test_aBFu7i_BFu8c_BFu0i, "aBFu7i_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu8c_BFu0ll");
    static aBFu7i_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8c_BFu0ll(Test_aBFu7i_BFu8c_BFu0ll, "aBFu7i_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu8c_BFu0s");
    static aBFu7i_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8c_BFu0s(Test_aBFu7i_BFu8c_BFu0s, "aBFu7i_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu8i_BFu0c");
    static aBFu7i_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8i_BFu0c(Test_aBFu7i_BFu8i_BFu0c, "aBFu7i_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu8i_BFu0i");
    static aBFu7i_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8i_BFu0i(Test_aBFu7i_BFu8i_BFu0i, "aBFu7i_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu8i_BFu0ll");
    static aBFu7i_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8i_BFu0ll(Test_aBFu7i_BFu8i_BFu0ll, "aBFu7i_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu8i_BFu0s");
    static aBFu7i_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8i_BFu0s(Test_aBFu7i_BFu8i_BFu0s, "aBFu7i_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu8ll_BFu0c");
    static aBFu7i_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8ll_BFu0c(Test_aBFu7i_BFu8ll_BFu0c, "aBFu7i_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu8ll_BFu0i");
    static aBFu7i_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8ll_BFu0i(Test_aBFu7i_BFu8ll_BFu0i, "aBFu7i_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu8ll_BFu0ll");
    static aBFu7i_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8ll_BFu0ll(Test_aBFu7i_BFu8ll_BFu0ll, "aBFu7i_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu8ll_BFu0s");
    static aBFu7i_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8ll_BFu0s(Test_aBFu7i_BFu8ll_BFu0s, "aBFu7i_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu8s_BFu0c");
    static aBFu7i_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8s_BFu0c(Test_aBFu7i_BFu8s_BFu0c, "aBFu7i_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu8s_BFu0i");
    static aBFu7i_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8s_BFu0i(Test_aBFu7i_BFu8s_BFu0i, "aBFu7i_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu8s_BFu0ll");
    static aBFu7i_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8s_BFu0ll(Test_aBFu7i_BFu8s_BFu0ll, "aBFu7i_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu8s_BFu0s");
    static aBFu7i_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7i_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu8s_BFu0s(Test_aBFu7i_BFu8s_BFu0s, "aBFu7i_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu9i_BFu0c");
    static aBFu7i_BFu9i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9i_BFu0c(Test_aBFu7i_BFu9i_BFu0c, "aBFu7i_BFu9i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu9i_BFu0i");
    static aBFu7i_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9i_BFu0i(Test_aBFu7i_BFu9i_BFu0i, "aBFu7i_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu9i_BFu0ll");
    static aBFu7i_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9i_BFu0ll(Test_aBFu7i_BFu9i_BFu0ll, "aBFu7i_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu9i_BFu0s");
    static aBFu7i_BFu9i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9i_BFu0s(Test_aBFu7i_BFu9i_BFu0s, "aBFu7i_BFu9i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu9ll_BFu0c");
    static aBFu7i_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9ll_BFu0c(Test_aBFu7i_BFu9ll_BFu0c, "aBFu7i_BFu9ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu9ll_BFu0i");
    static aBFu7i_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9ll_BFu0i(Test_aBFu7i_BFu9ll_BFu0i, "aBFu7i_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu9ll_BFu0ll");
    static aBFu7i_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9ll_BFu0ll(Test_aBFu7i_BFu9ll_BFu0ll, "aBFu7i_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu9ll_BFu0s");
    static aBFu7i_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9ll_BFu0s(Test_aBFu7i_BFu9ll_BFu0s, "aBFu7i_BFu9ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu7i_BFu9s_BFu0c");
    static aBFu7i_BFu9s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9s_BFu0c(Test_aBFu7i_BFu9s_BFu0c, "aBFu7i_BFu9s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu7i_BFu9s_BFu0i");
    static aBFu7i_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9s_BFu0i(Test_aBFu7i_BFu9s_BFu0i, "aBFu7i_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu7i_BFu9s_BFu0ll");
    static aBFu7i_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9s_BFu0ll(Test_aBFu7i_BFu9s_BFu0ll, "aBFu7i_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu7i_BFu9s_BFu0s");
    static aBFu7i_BFu9s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7i_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7i_BFu9s_BFu0s(Test_aBFu7i_BFu9s_BFu0s, "aBFu7i_BFu9s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_C_BFu0c()
{
  {
    init_simple_test("aBFu7i_C_BFu0c");
    static aBFu7i_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_C_BFu0c(Test_aBFu7i_C_BFu0c, "aBFu7i_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_C_BFu0i()
{
  {
    init_simple_test("aBFu7i_C_BFu0i");
    static aBFu7i_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_C_BFu0i(Test_aBFu7i_C_BFu0i, "aBFu7i_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_C_BFu0ll()
{
  {
    init_simple_test("aBFu7i_C_BFu0ll");
    static aBFu7i_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_C_BFu0ll(Test_aBFu7i_C_BFu0ll, "aBFu7i_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_C_BFu0s()
{
  {
    init_simple_test("aBFu7i_C_BFu0s");
    static aBFu7i_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_C_BFu0s(Test_aBFu7i_C_BFu0s, "aBFu7i_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_D_BFu0c()
{
  {
    init_simple_test("aBFu7i_D_BFu0c");
    static aBFu7i_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_D_BFu0c(Test_aBFu7i_D_BFu0c, "aBFu7i_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_D_BFu0i()
{
  {
    init_simple_test("aBFu7i_D_BFu0i");
    static aBFu7i_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_D_BFu0i(Test_aBFu7i_D_BFu0i, "aBFu7i_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_D_BFu0ll()
{
  {
    init_simple_test("aBFu7i_D_BFu0ll");
    static aBFu7i_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_D_BFu0ll(Test_aBFu7i_D_BFu0ll, "aBFu7i_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_D_BFu0s()
{
  {
    init_simple_test("aBFu7i_D_BFu0s");
    static aBFu7i_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_D_BFu0s(Test_aBFu7i_D_BFu0s, "aBFu7i_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_F_BFu0c()
{
  {
    init_simple_test("aBFu7i_F_BFu0c");
    static aBFu7i_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_F_BFu0c(Test_aBFu7i_F_BFu0c, "aBFu7i_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_F_BFu0i()
{
  {
    init_simple_test("aBFu7i_F_BFu0i");
    static aBFu7i_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_F_BFu0i(Test_aBFu7i_F_BFu0i, "aBFu7i_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_F_BFu0ll()
{
  {
    init_simple_test("aBFu7i_F_BFu0ll");
    static aBFu7i_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_F_BFu0ll(Test_aBFu7i_F_BFu0ll, "aBFu7i_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_F_BFu0s()
{
  {
    init_simple_test("aBFu7i_F_BFu0s");
    static aBFu7i_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_F_BFu0s(Test_aBFu7i_F_BFu0s, "aBFu7i_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_I_BFu0c()
{
  {
    init_simple_test("aBFu7i_I_BFu0c");
    static aBFu7i_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_I_BFu0c(Test_aBFu7i_I_BFu0c, "aBFu7i_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_I_BFu0i()
{
  {
    init_simple_test("aBFu7i_I_BFu0i");
    static aBFu7i_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_I_BFu0i(Test_aBFu7i_I_BFu0i, "aBFu7i_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_I_BFu0ll()
{
  {
    init_simple_test("aBFu7i_I_BFu0ll");
    static aBFu7i_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_I_BFu0ll(Test_aBFu7i_I_BFu0ll, "aBFu7i_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_I_BFu0s()
{
  {
    init_simple_test("aBFu7i_I_BFu0s");
    static aBFu7i_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_I_BFu0s(Test_aBFu7i_I_BFu0s, "aBFu7i_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ip_BFu0c()
{
  {
    init_simple_test("aBFu7i_Ip_BFu0c");
    static aBFu7i_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ip_BFu0c(Test_aBFu7i_Ip_BFu0c, "aBFu7i_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ip_BFu0i()
{
  {
    init_simple_test("aBFu7i_Ip_BFu0i");
    static aBFu7i_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ip_BFu0i(Test_aBFu7i_Ip_BFu0i, "aBFu7i_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Ip_BFu0ll");
    static aBFu7i_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7i_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ip_BFu0ll(Test_aBFu7i_Ip_BFu0ll, "aBFu7i_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ip_BFu0s()
{
  {
    init_simple_test("aBFu7i_Ip_BFu0s");
    static aBFu7i_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ip_BFu0s(Test_aBFu7i_Ip_BFu0s, "aBFu7i_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_L_BFu0c()
{
  {
    init_simple_test("aBFu7i_L_BFu0c");
    static aBFu7i_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_L_BFu0c(Test_aBFu7i_L_BFu0c, "aBFu7i_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_L_BFu0i()
{
  {
    init_simple_test("aBFu7i_L_BFu0i");
    static aBFu7i_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_L_BFu0i(Test_aBFu7i_L_BFu0i, "aBFu7i_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_L_BFu0ll()
{
  {
    init_simple_test("aBFu7i_L_BFu0ll");
    static aBFu7i_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_L_BFu0ll(Test_aBFu7i_L_BFu0ll, "aBFu7i_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_L_BFu0s()
{
  {
    init_simple_test("aBFu7i_L_BFu0s");
    static aBFu7i_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_L_BFu0s(Test_aBFu7i_L_BFu0s, "aBFu7i_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_S_BFu0c()
{
  {
    init_simple_test("aBFu7i_S_BFu0c");
    static aBFu7i_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_S_BFu0c(Test_aBFu7i_S_BFu0c, "aBFu7i_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_S_BFu0i()
{
  {
    init_simple_test("aBFu7i_S_BFu0i");
    static aBFu7i_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_S_BFu0i(Test_aBFu7i_S_BFu0i, "aBFu7i_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_S_BFu0ll()
{
  {
    init_simple_test("aBFu7i_S_BFu0ll");
    static aBFu7i_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_S_BFu0ll(Test_aBFu7i_S_BFu0ll, "aBFu7i_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_S_BFu0s()
{
  {
    init_simple_test("aBFu7i_S_BFu0s");
    static aBFu7i_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_S_BFu0s(Test_aBFu7i_S_BFu0s, "aBFu7i_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Uc_BFu0c()
{
  {
    init_simple_test("aBFu7i_Uc_BFu0c");
    static aBFu7i_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Uc_BFu0c(Test_aBFu7i_Uc_BFu0c, "aBFu7i_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Uc_BFu0i()
{
  {
    init_simple_test("aBFu7i_Uc_BFu0i");
    static aBFu7i_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Uc_BFu0i(Test_aBFu7i_Uc_BFu0i, "aBFu7i_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Uc_BFu0ll");
    static aBFu7i_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Uc_BFu0ll(Test_aBFu7i_Uc_BFu0ll, "aBFu7i_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Uc_BFu0s()
{
  {
    init_simple_test("aBFu7i_Uc_BFu0s");
    static aBFu7i_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7i_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Uc_BFu0s(Test_aBFu7i_Uc_BFu0s, "aBFu7i_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ui_BFu0c()
{
  {
    init_simple_test("aBFu7i_Ui_BFu0c");
    static aBFu7i_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7i_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ui_BFu0c(Test_aBFu7i_Ui_BFu0c, "aBFu7i_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ui_BFu0i()
{
  {
    init_simple_test("aBFu7i_Ui_BFu0i");
    static aBFu7i_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ui_BFu0i(Test_aBFu7i_Ui_BFu0i, "aBFu7i_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Ui_BFu0ll");
    static aBFu7i_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7i_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ui_BFu0ll(Test_aBFu7i_Ui_BFu0ll, "aBFu7i_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ui_BFu0s()
{
  {
    init_simple_test("aBFu7i_Ui_BFu0s");
    static aBFu7i_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7i_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ui_BFu0s(Test_aBFu7i_Ui_BFu0s, "aBFu7i_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ul_BFu0c()
{
  {
    init_simple_test("aBFu7i_Ul_BFu0c");
    static aBFu7i_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7i_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ul_BFu0c(Test_aBFu7i_Ul_BFu0c, "aBFu7i_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ul_BFu0i()
{
  {
    init_simple_test("aBFu7i_Ul_BFu0i");
    static aBFu7i_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7i_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ul_BFu0i(Test_aBFu7i_Ul_BFu0i, "aBFu7i_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Ul_BFu0ll");
    static aBFu7i_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7i_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ul_BFu0ll(Test_aBFu7i_Ul_BFu0ll, "aBFu7i_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Ul_BFu0s()
{
  {
    init_simple_test("aBFu7i_Ul_BFu0s");
    static aBFu7i_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7i_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Ul_BFu0s(Test_aBFu7i_Ul_BFu0s, "aBFu7i_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Us_BFu0c()
{
  {
    init_simple_test("aBFu7i_Us_BFu0c");
    static aBFu7i_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7i_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Us_BFu0c(Test_aBFu7i_Us_BFu0c, "aBFu7i_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Us_BFu0i()
{
  {
    init_simple_test("aBFu7i_Us_BFu0i");
    static aBFu7i_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Us_BFu0i(Test_aBFu7i_Us_BFu0i, "aBFu7i_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Us_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Us_BFu0ll");
    static aBFu7i_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7i_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Us_BFu0ll(Test_aBFu7i_Us_BFu0ll, "aBFu7i_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Us_BFu0s()
{
  {
    init_simple_test("aBFu7i_Us_BFu0s");
    static aBFu7i_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7i_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Us_BFu0s(Test_aBFu7i_Us_BFu0s, "aBFu7i_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Vp_BFu0c()
{
  {
    init_simple_test("aBFu7i_Vp_BFu0c");
    static aBFu7i_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7i_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7i_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Vp_BFu0c(Test_aBFu7i_Vp_BFu0c, "aBFu7i_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Vp_BFu0i()
{
  {
    init_simple_test("aBFu7i_Vp_BFu0i");
    static aBFu7i_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7i_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7i_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Vp_BFu0i(Test_aBFu7i_Vp_BFu0i, "aBFu7i_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu7i_Vp_BFu0ll");
    static aBFu7i_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7i_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7i_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Vp_BFu0ll(Test_aBFu7i_Vp_BFu0ll, "aBFu7i_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7i_Vp_BFu0s()
{
  {
    init_simple_test("aBFu7i_Vp_BFu0s");
    static aBFu7i_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7i_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7i_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7i_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7i_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7i_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7i_Vp_BFu0s(Test_aBFu7i_Vp_BFu0s, "aBFu7i_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu0c");
    static aBFu7ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c(Test_aBFu7ll_BFu0c, "aBFu7ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu0c");
    static aBFu7ll_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu0c(Test_aBFu7ll_BFu0c_BFu0c, "aBFu7ll_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu0i");
    static aBFu7ll_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu0i(Test_aBFu7ll_BFu0c_BFu0i, "aBFu7ll_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu0ll");
    static aBFu7ll_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu0ll(Test_aBFu7ll_BFu0c_BFu0ll, "aBFu7ll_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu0s");
    static aBFu7ll_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu0s(Test_aBFu7ll_BFu0c_BFu0s, "aBFu7ll_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu15i");
    static aBFu7ll_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu15i(Test_aBFu7ll_BFu0c_BFu15i, "aBFu7ll_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu15ll");
    static aBFu7ll_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu15ll(Test_aBFu7ll_BFu0c_BFu15ll, "aBFu7ll_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu15s");
    static aBFu7ll_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu15s(Test_aBFu7ll_BFu0c_BFu15s, "aBFu7ll_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu16i");
    static aBFu7ll_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu16i(Test_aBFu7ll_BFu0c_BFu16i, "aBFu7ll_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu16ll");
    static aBFu7ll_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu16ll(Test_aBFu7ll_BFu0c_BFu16ll, "aBFu7ll_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu16s");
    static aBFu7ll_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu16s(Test_aBFu7ll_BFu0c_BFu16s, "aBFu7ll_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu17i");
    static aBFu7ll_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu17i(Test_aBFu7ll_BFu0c_BFu17i, "aBFu7ll_BFu0c_BFu17i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu17ll");
    static aBFu7ll_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu17ll(Test_aBFu7ll_BFu0c_BFu17ll, "aBFu7ll_BFu0c_BFu17ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu1c");
    static aBFu7ll_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu1c(Test_aBFu7ll_BFu0c_BFu1c, "aBFu7ll_BFu0c_BFu1c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu1i");
    static aBFu7ll_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu1i(Test_aBFu7ll_BFu0c_BFu1i, "aBFu7ll_BFu0c_BFu1i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu1ll");
    static aBFu7ll_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu1ll(Test_aBFu7ll_BFu0c_BFu1ll, "aBFu7ll_BFu0c_BFu1ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu1s");
    static aBFu7ll_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu1s(Test_aBFu7ll_BFu0c_BFu1s, "aBFu7ll_BFu0c_BFu1s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu31i");
    static aBFu7ll_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu31i(Test_aBFu7ll_BFu0c_BFu31i, "aBFu7ll_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu31ll");
    static aBFu7ll_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu31ll(Test_aBFu7ll_BFu0c_BFu31ll, "aBFu7ll_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu32i");
    static aBFu7ll_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu32i(Test_aBFu7ll_BFu0c_BFu32i, "aBFu7ll_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu32ll");
    static aBFu7ll_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu32ll(Test_aBFu7ll_BFu0c_BFu32ll, "aBFu7ll_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu33");
    static aBFu7ll_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, 1, "aBFu7ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7ll_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu33(Test_aBFu7ll_BFu0c_BFu33, "aBFu7ll_BFu0c_BFu33", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu7c");
    static aBFu7ll_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu7c(Test_aBFu7ll_BFu0c_BFu7c, "aBFu7ll_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu7i");
    static aBFu7ll_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu7i(Test_aBFu7ll_BFu0c_BFu7i, "aBFu7ll_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu7ll");
    static aBFu7ll_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu7ll(Test_aBFu7ll_BFu0c_BFu7ll, "aBFu7ll_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu7s");
    static aBFu7ll_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu7s(Test_aBFu7ll_BFu0c_BFu7s, "aBFu7ll_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu8c");
    static aBFu7ll_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu8c(Test_aBFu7ll_BFu0c_BFu8c, "aBFu7ll_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu8i");
    static aBFu7ll_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu8i(Test_aBFu7ll_BFu0c_BFu8i, "aBFu7ll_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu8ll");
    static aBFu7ll_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu8ll(Test_aBFu7ll_BFu0c_BFu8ll, "aBFu7ll_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu8s");
    static aBFu7ll_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu8s(Test_aBFu7ll_BFu0c_BFu8s, "aBFu7ll_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu9i");
    static aBFu7ll_BFu0c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu9i(Test_aBFu7ll_BFu0c_BFu9i, "aBFu7ll_BFu0c_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu9ll");
    static aBFu7ll_BFu0c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu9ll(Test_aBFu7ll_BFu0c_BFu9ll, "aBFu7ll_BFu0c_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu7ll_BFu0c_BFu9s");
    static aBFu7ll_BFu0c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_BFu9s(Test_aBFu7ll_BFu0c_BFu9s, "aBFu7ll_BFu0c_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_C()
{
  {
    init_simple_test("aBFu7ll_BFu0c_C");
    static aBFu7ll_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_C(Test_aBFu7ll_BFu0c_C, "aBFu7ll_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_D()
{
  {
    init_simple_test("aBFu7ll_BFu0c_D");
    static aBFu7ll_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_D(Test_aBFu7ll_BFu0c_D, "aBFu7ll_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_F()
{
  {
    init_simple_test("aBFu7ll_BFu0c_F");
    static aBFu7ll_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_F(Test_aBFu7ll_BFu0c_F, "aBFu7ll_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_I()
{
  {
    init_simple_test("aBFu7ll_BFu0c_I");
    static aBFu7ll_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_I(Test_aBFu7ll_BFu0c_I, "aBFu7ll_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Ip()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Ip");
    static aBFu7ll_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Ip(Test_aBFu7ll_BFu0c_Ip, "aBFu7ll_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_L()
{
  {
    init_simple_test("aBFu7ll_BFu0c_L");
    static aBFu7ll_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_L(Test_aBFu7ll_BFu0c_L, "aBFu7ll_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_S()
{
  {
    init_simple_test("aBFu7ll_BFu0c_S");
    static aBFu7ll_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_S(Test_aBFu7ll_BFu0c_S, "aBFu7ll_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Uc()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Uc");
    static aBFu7ll_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Uc(Test_aBFu7ll_BFu0c_Uc, "aBFu7ll_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Ui()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Ui");
    static aBFu7ll_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Ui(Test_aBFu7ll_BFu0c_Ui, "aBFu7ll_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Ul()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Ul");
    static aBFu7ll_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Ul(Test_aBFu7ll_BFu0c_Ul, "aBFu7ll_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Us()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Us");
    static aBFu7ll_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Us(Test_aBFu7ll_BFu0c_Us, "aBFu7ll_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0c_Vp()
{
  {
    init_simple_test("aBFu7ll_BFu0c_Vp");
    static aBFu7ll_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu7ll_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0c_Vp(Test_aBFu7ll_BFu0c_Vp, "aBFu7ll_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu0i");
    static aBFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i(Test_aBFu7ll_BFu0i, "aBFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu0c");
    static aBFu7ll_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu0c(Test_aBFu7ll_BFu0i_BFu0c, "aBFu7ll_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu0i");
    static aBFu7ll_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu0i(Test_aBFu7ll_BFu0i_BFu0i, "aBFu7ll_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu0ll");
    static aBFu7ll_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu0ll(Test_aBFu7ll_BFu0i_BFu0ll, "aBFu7ll_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu0s");
    static aBFu7ll_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu0s(Test_aBFu7ll_BFu0i_BFu0s, "aBFu7ll_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu15i");
    static aBFu7ll_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu15i(Test_aBFu7ll_BFu0i_BFu15i, "aBFu7ll_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu15ll");
    static aBFu7ll_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu15ll(Test_aBFu7ll_BFu0i_BFu15ll, "aBFu7ll_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu15s");
    static aBFu7ll_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu15s(Test_aBFu7ll_BFu0i_BFu15s, "aBFu7ll_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu16i");
    static aBFu7ll_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu16i(Test_aBFu7ll_BFu0i_BFu16i, "aBFu7ll_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu16ll");
    static aBFu7ll_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu16ll(Test_aBFu7ll_BFu0i_BFu16ll, "aBFu7ll_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu16s");
    static aBFu7ll_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu16s(Test_aBFu7ll_BFu0i_BFu16s, "aBFu7ll_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu17i");
    static aBFu7ll_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7ll_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu17i(Test_aBFu7ll_BFu0i_BFu17i, "aBFu7ll_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu17ll");
    static aBFu7ll_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7ll_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu17ll(Test_aBFu7ll_BFu0i_BFu17ll, "aBFu7ll_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu1c");
    static aBFu7ll_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu1c(Test_aBFu7ll_BFu0i_BFu1c, "aBFu7ll_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu1i");
    static aBFu7ll_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu1i(Test_aBFu7ll_BFu0i_BFu1i, "aBFu7ll_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu1ll");
    static aBFu7ll_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu1ll(Test_aBFu7ll_BFu0i_BFu1ll, "aBFu7ll_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu1s");
    static aBFu7ll_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu1s(Test_aBFu7ll_BFu0i_BFu1s, "aBFu7ll_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu31i");
    static aBFu7ll_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu31i(Test_aBFu7ll_BFu0i_BFu31i, "aBFu7ll_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu31ll");
    static aBFu7ll_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu31ll(Test_aBFu7ll_BFu0i_BFu31ll, "aBFu7ll_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu32i");
    static aBFu7ll_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu32i(Test_aBFu7ll_BFu0i_BFu32i, "aBFu7ll_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu32ll");
    static aBFu7ll_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu32ll(Test_aBFu7ll_BFu0i_BFu32ll, "aBFu7ll_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu33");
    static aBFu7ll_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu7ll_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, 1, "aBFu7ll_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7ll_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu33(Test_aBFu7ll_BFu0i_BFu33, "aBFu7ll_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu7c");
    static aBFu7ll_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu7c(Test_aBFu7ll_BFu0i_BFu7c, "aBFu7ll_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu7i");
    static aBFu7ll_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu7i(Test_aBFu7ll_BFu0i_BFu7i, "aBFu7ll_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu7ll");
    static aBFu7ll_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu7ll(Test_aBFu7ll_BFu0i_BFu7ll, "aBFu7ll_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu7s");
    static aBFu7ll_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu7s(Test_aBFu7ll_BFu0i_BFu7s, "aBFu7ll_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu8c");
    static aBFu7ll_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu8c(Test_aBFu7ll_BFu0i_BFu8c, "aBFu7ll_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu8i");
    static aBFu7ll_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu8i(Test_aBFu7ll_BFu0i_BFu8i, "aBFu7ll_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu8ll");
    static aBFu7ll_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu8ll(Test_aBFu7ll_BFu0i_BFu8ll, "aBFu7ll_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu8s");
    static aBFu7ll_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu8s(Test_aBFu7ll_BFu0i_BFu8s, "aBFu7ll_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu9i");
    static aBFu7ll_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu9i(Test_aBFu7ll_BFu0i_BFu9i, "aBFu7ll_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu9ll");
    static aBFu7ll_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu9ll(Test_aBFu7ll_BFu0i_BFu9ll, "aBFu7ll_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu7ll_BFu0i_BFu9s");
    static aBFu7ll_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_BFu9s(Test_aBFu7ll_BFu0i_BFu9s, "aBFu7ll_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_C()
{
  {
    init_simple_test("aBFu7ll_BFu0i_C");
    static aBFu7ll_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_C(Test_aBFu7ll_BFu0i_C, "aBFu7ll_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_D()
{
  {
    init_simple_test("aBFu7ll_BFu0i_D");
    static aBFu7ll_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_D(Test_aBFu7ll_BFu0i_D, "aBFu7ll_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_F()
{
  {
    init_simple_test("aBFu7ll_BFu0i_F");
    static aBFu7ll_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_F(Test_aBFu7ll_BFu0i_F, "aBFu7ll_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_I()
{
  {
    init_simple_test("aBFu7ll_BFu0i_I");
    static aBFu7ll_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_I(Test_aBFu7ll_BFu0i_I, "aBFu7ll_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Ip()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Ip");
    static aBFu7ll_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Ip(Test_aBFu7ll_BFu0i_Ip, "aBFu7ll_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_L()
{
  {
    init_simple_test("aBFu7ll_BFu0i_L");
    static aBFu7ll_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_L(Test_aBFu7ll_BFu0i_L, "aBFu7ll_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_S()
{
  {
    init_simple_test("aBFu7ll_BFu0i_S");
    static aBFu7ll_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_S(Test_aBFu7ll_BFu0i_S, "aBFu7ll_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Uc()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Uc");
    static aBFu7ll_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Uc(Test_aBFu7ll_BFu0i_Uc, "aBFu7ll_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Ui()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Ui");
    static aBFu7ll_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Ui(Test_aBFu7ll_BFu0i_Ui, "aBFu7ll_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Ul()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Ul");
    static aBFu7ll_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Ul(Test_aBFu7ll_BFu0i_Ul, "aBFu7ll_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Us()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Us");
    static aBFu7ll_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Us(Test_aBFu7ll_BFu0i_Us, "aBFu7ll_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0i_Vp()
{
  {
    init_simple_test("aBFu7ll_BFu0i_Vp");
    static aBFu7ll_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7ll_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0i_Vp(Test_aBFu7ll_BFu0i_Vp, "aBFu7ll_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll");
    static aBFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll(Test_aBFu7ll_BFu0ll, "aBFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu0c");
    static aBFu7ll_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu0c(Test_aBFu7ll_BFu0ll_BFu0c, "aBFu7ll_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu0i");
    static aBFu7ll_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu0i(Test_aBFu7ll_BFu0ll_BFu0i, "aBFu7ll_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu0ll");
    static aBFu7ll_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu0ll(Test_aBFu7ll_BFu0ll_BFu0ll, "aBFu7ll_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu0s");
    static aBFu7ll_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu0s(Test_aBFu7ll_BFu0ll_BFu0s, "aBFu7ll_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu15i");
    static aBFu7ll_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu15i(Test_aBFu7ll_BFu0ll_BFu15i, "aBFu7ll_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu15ll");
    static aBFu7ll_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu15ll(Test_aBFu7ll_BFu0ll_BFu15ll, "aBFu7ll_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu15s");
    static aBFu7ll_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu15s(Test_aBFu7ll_BFu0ll_BFu15s, "aBFu7ll_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu16i");
    static aBFu7ll_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu16i(Test_aBFu7ll_BFu0ll_BFu16i, "aBFu7ll_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu16ll");
    static aBFu7ll_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu16ll(Test_aBFu7ll_BFu0ll_BFu16ll, "aBFu7ll_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu16s");
    static aBFu7ll_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu16s(Test_aBFu7ll_BFu0ll_BFu16s, "aBFu7ll_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu17i");
    static aBFu7ll_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7ll_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu17i(Test_aBFu7ll_BFu0ll_BFu17i, "aBFu7ll_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu17ll");
    static aBFu7ll_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7ll_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu17ll(Test_aBFu7ll_BFu0ll_BFu17ll, "aBFu7ll_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu1c");
    static aBFu7ll_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu1c(Test_aBFu7ll_BFu0ll_BFu1c, "aBFu7ll_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu1i");
    static aBFu7ll_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu1i(Test_aBFu7ll_BFu0ll_BFu1i, "aBFu7ll_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu1ll");
    static aBFu7ll_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu1ll(Test_aBFu7ll_BFu0ll_BFu1ll, "aBFu7ll_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu1s");
    static aBFu7ll_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu1s(Test_aBFu7ll_BFu0ll_BFu1s, "aBFu7ll_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu31i");
    static aBFu7ll_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu31i(Test_aBFu7ll_BFu0ll_BFu31i, "aBFu7ll_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu31ll");
    static aBFu7ll_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu31ll(Test_aBFu7ll_BFu0ll_BFu31ll, "aBFu7ll_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu32i");
    static aBFu7ll_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu32i(Test_aBFu7ll_BFu0ll_BFu32i, "aBFu7ll_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu32ll");
    static aBFu7ll_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu32ll(Test_aBFu7ll_BFu0ll_BFu32ll, "aBFu7ll_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu33");
    static aBFu7ll_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu7ll_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, 1, "aBFu7ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7ll_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu33(Test_aBFu7ll_BFu0ll_BFu33, "aBFu7ll_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu7c");
    static aBFu7ll_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu7c(Test_aBFu7ll_BFu0ll_BFu7c, "aBFu7ll_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu7i");
    static aBFu7ll_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu7i(Test_aBFu7ll_BFu0ll_BFu7i, "aBFu7ll_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu7ll");
    static aBFu7ll_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu7ll(Test_aBFu7ll_BFu0ll_BFu7ll, "aBFu7ll_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu7s");
    static aBFu7ll_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu7s(Test_aBFu7ll_BFu0ll_BFu7s, "aBFu7ll_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu8c");
    static aBFu7ll_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu8c(Test_aBFu7ll_BFu0ll_BFu8c, "aBFu7ll_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu8i");
    static aBFu7ll_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu8i(Test_aBFu7ll_BFu0ll_BFu8i, "aBFu7ll_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu8ll");
    static aBFu7ll_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu8ll(Test_aBFu7ll_BFu0ll_BFu8ll, "aBFu7ll_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu8s");
    static aBFu7ll_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu8s(Test_aBFu7ll_BFu0ll_BFu8s, "aBFu7ll_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu9i");
    static aBFu7ll_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu9i(Test_aBFu7ll_BFu0ll_BFu9i, "aBFu7ll_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu9ll");
    static aBFu7ll_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu9ll(Test_aBFu7ll_BFu0ll_BFu9ll, "aBFu7ll_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_BFu9s");
    static aBFu7ll_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_BFu9s(Test_aBFu7ll_BFu0ll_BFu9s, "aBFu7ll_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_C()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_C");
    static aBFu7ll_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_C(Test_aBFu7ll_BFu0ll_C, "aBFu7ll_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_D()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_D");
    static aBFu7ll_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_D(Test_aBFu7ll_BFu0ll_D, "aBFu7ll_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_F()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_F");
    static aBFu7ll_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_F(Test_aBFu7ll_BFu0ll_F, "aBFu7ll_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_I()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_I");
    static aBFu7ll_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_I(Test_aBFu7ll_BFu0ll_I, "aBFu7ll_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Ip");
    static aBFu7ll_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7ll_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Ip(Test_aBFu7ll_BFu0ll_Ip, "aBFu7ll_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_L()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_L");
    static aBFu7ll_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_L(Test_aBFu7ll_BFu0ll_L, "aBFu7ll_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_S()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_S");
    static aBFu7ll_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_S(Test_aBFu7ll_BFu0ll_S, "aBFu7ll_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Uc");
    static aBFu7ll_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Uc(Test_aBFu7ll_BFu0ll_Uc, "aBFu7ll_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Ui");
    static aBFu7ll_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Ui(Test_aBFu7ll_BFu0ll_Ui, "aBFu7ll_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Ul");
    static aBFu7ll_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Ul(Test_aBFu7ll_BFu0ll_Ul, "aBFu7ll_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Us()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Us");
    static aBFu7ll_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Us(Test_aBFu7ll_BFu0ll_Us, "aBFu7ll_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu7ll_BFu0ll_Vp");
    static aBFu7ll_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7ll_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7ll_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0ll_Vp(Test_aBFu7ll_BFu0ll_Vp, "aBFu7ll_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu0s");
    static aBFu7ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s(Test_aBFu7ll_BFu0s, "aBFu7ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu0c");
    static aBFu7ll_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu0c(Test_aBFu7ll_BFu0s_BFu0c, "aBFu7ll_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu0i");
    static aBFu7ll_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu0i(Test_aBFu7ll_BFu0s_BFu0i, "aBFu7ll_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu0ll");
    static aBFu7ll_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu0ll(Test_aBFu7ll_BFu0s_BFu0ll, "aBFu7ll_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu0s");
    static aBFu7ll_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu0s(Test_aBFu7ll_BFu0s_BFu0s, "aBFu7ll_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu15i");
    static aBFu7ll_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu15i(Test_aBFu7ll_BFu0s_BFu15i, "aBFu7ll_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu15ll");
    static aBFu7ll_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu15ll(Test_aBFu7ll_BFu0s_BFu15ll, "aBFu7ll_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu15s");
    static aBFu7ll_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7ll_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu15s(Test_aBFu7ll_BFu0s_BFu15s, "aBFu7ll_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu16i");
    static aBFu7ll_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu16i(Test_aBFu7ll_BFu0s_BFu16i, "aBFu7ll_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu16ll");
    static aBFu7ll_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu16ll(Test_aBFu7ll_BFu0s_BFu16ll, "aBFu7ll_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu16s");
    static aBFu7ll_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7ll_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu16s(Test_aBFu7ll_BFu0s_BFu16s, "aBFu7ll_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu17i");
    static aBFu7ll_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu17i(Test_aBFu7ll_BFu0s_BFu17i, "aBFu7ll_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu17ll");
    static aBFu7ll_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7ll_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7ll_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu17ll(Test_aBFu7ll_BFu0s_BFu17ll, "aBFu7ll_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu1c");
    static aBFu7ll_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu1c(Test_aBFu7ll_BFu0s_BFu1c, "aBFu7ll_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu1i");
    static aBFu7ll_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu1i(Test_aBFu7ll_BFu0s_BFu1i, "aBFu7ll_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu1ll");
    static aBFu7ll_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu1ll(Test_aBFu7ll_BFu0s_BFu1ll, "aBFu7ll_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu1s");
    static aBFu7ll_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7ll_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu1s(Test_aBFu7ll_BFu0s_BFu1s, "aBFu7ll_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu31i");
    static aBFu7ll_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu31i(Test_aBFu7ll_BFu0s_BFu31i, "aBFu7ll_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu31ll");
    static aBFu7ll_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7ll_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu31ll(Test_aBFu7ll_BFu0s_BFu31ll, "aBFu7ll_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu32i");
    static aBFu7ll_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu32i(Test_aBFu7ll_BFu0s_BFu32i, "aBFu7ll_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu32ll");
    static aBFu7ll_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7ll_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu32ll(Test_aBFu7ll_BFu0s_BFu32ll, "aBFu7ll_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu33");
    static aBFu7ll_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7ll_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu7ll_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7ll_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu33(Test_aBFu7ll_BFu0s_BFu33, "aBFu7ll_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu7c");
    static aBFu7ll_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu7c(Test_aBFu7ll_BFu0s_BFu7c, "aBFu7ll_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu7i");
    static aBFu7ll_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu7i(Test_aBFu7ll_BFu0s_BFu7i, "aBFu7ll_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu7ll");
    static aBFu7ll_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu7ll(Test_aBFu7ll_BFu0s_BFu7ll, "aBFu7ll_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu7s");
    static aBFu7ll_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu7s(Test_aBFu7ll_BFu0s_BFu7s, "aBFu7ll_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu8c");
    static aBFu7ll_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu8c(Test_aBFu7ll_BFu0s_BFu8c, "aBFu7ll_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu8i");
    static aBFu7ll_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu8i(Test_aBFu7ll_BFu0s_BFu8i, "aBFu7ll_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu8ll");
    static aBFu7ll_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu8ll(Test_aBFu7ll_BFu0s_BFu8ll, "aBFu7ll_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu8s");
    static aBFu7ll_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7ll_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu8s(Test_aBFu7ll_BFu0s_BFu8s, "aBFu7ll_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu9i");
    static aBFu7ll_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu9i(Test_aBFu7ll_BFu0s_BFu9i, "aBFu7ll_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu9ll");
    static aBFu7ll_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu9ll(Test_aBFu7ll_BFu0s_BFu9ll, "aBFu7ll_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu7ll_BFu0s_BFu9s");
    static aBFu7ll_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7ll_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_BFu9s(Test_aBFu7ll_BFu0s_BFu9s, "aBFu7ll_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_C()
{
  {
    init_simple_test("aBFu7ll_BFu0s_C");
    static aBFu7ll_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_C(Test_aBFu7ll_BFu0s_C, "aBFu7ll_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_D()
{
  {
    init_simple_test("aBFu7ll_BFu0s_D");
    static aBFu7ll_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_D(Test_aBFu7ll_BFu0s_D, "aBFu7ll_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_F()
{
  {
    init_simple_test("aBFu7ll_BFu0s_F");
    static aBFu7ll_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_F(Test_aBFu7ll_BFu0s_F, "aBFu7ll_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_I()
{
  {
    init_simple_test("aBFu7ll_BFu0s_I");
    static aBFu7ll_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_I(Test_aBFu7ll_BFu0s_I, "aBFu7ll_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Ip()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Ip");
    static aBFu7ll_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Ip(Test_aBFu7ll_BFu0s_Ip, "aBFu7ll_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_L()
{
  {
    init_simple_test("aBFu7ll_BFu0s_L");
    static aBFu7ll_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_L(Test_aBFu7ll_BFu0s_L, "aBFu7ll_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_S()
{
  {
    init_simple_test("aBFu7ll_BFu0s_S");
    static aBFu7ll_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_S(Test_aBFu7ll_BFu0s_S, "aBFu7ll_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Uc()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Uc");
    static aBFu7ll_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7ll_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Uc(Test_aBFu7ll_BFu0s_Uc, "aBFu7ll_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Ui()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Ui");
    static aBFu7ll_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Ui(Test_aBFu7ll_BFu0s_Ui, "aBFu7ll_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Ul()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Ul");
    static aBFu7ll_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Ul(Test_aBFu7ll_BFu0s_Ul, "aBFu7ll_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Us()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Us");
    static aBFu7ll_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Us(Test_aBFu7ll_BFu0s_Us, "aBFu7ll_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu0s_Vp()
{
  {
    init_simple_test("aBFu7ll_BFu0s_Vp");
    static aBFu7ll_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7ll_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu0s_Vp(Test_aBFu7ll_BFu0s_Vp, "aBFu7ll_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu15i_BFu0c");
    static aBFu7ll_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15i_BFu0c(Test_aBFu7ll_BFu15i_BFu0c, "aBFu7ll_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu15i_BFu0i");
    static aBFu7ll_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15i_BFu0i(Test_aBFu7ll_BFu15i_BFu0i, "aBFu7ll_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu15i_BFu0ll");
    static aBFu7ll_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15i_BFu0ll(Test_aBFu7ll_BFu15i_BFu0ll, "aBFu7ll_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu15i_BFu0s");
    static aBFu7ll_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15i_BFu0s(Test_aBFu7ll_BFu15i_BFu0s, "aBFu7ll_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu15ll_BFu0c");
    static aBFu7ll_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15ll_BFu0c(Test_aBFu7ll_BFu15ll_BFu0c, "aBFu7ll_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu15ll_BFu0i");
    static aBFu7ll_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15ll_BFu0i(Test_aBFu7ll_BFu15ll_BFu0i, "aBFu7ll_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu15ll_BFu0ll");
    static aBFu7ll_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15ll_BFu0ll(Test_aBFu7ll_BFu15ll_BFu0ll, "aBFu7ll_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu15ll_BFu0s");
    static aBFu7ll_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15ll_BFu0s(Test_aBFu7ll_BFu15ll_BFu0s, "aBFu7ll_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu15s_BFu0c");
    static aBFu7ll_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15s_BFu0c(Test_aBFu7ll_BFu15s_BFu0c, "aBFu7ll_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu15s_BFu0i");
    static aBFu7ll_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15s_BFu0i(Test_aBFu7ll_BFu15s_BFu0i, "aBFu7ll_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu15s_BFu0ll");
    static aBFu7ll_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15s_BFu0ll(Test_aBFu7ll_BFu15s_BFu0ll, "aBFu7ll_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu15s_BFu0s");
    static aBFu7ll_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7ll_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu15s_BFu0s(Test_aBFu7ll_BFu15s_BFu0s, "aBFu7ll_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu16i_BFu0c");
    static aBFu7ll_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16i_BFu0c(Test_aBFu7ll_BFu16i_BFu0c, "aBFu7ll_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu16i_BFu0i");
    static aBFu7ll_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16i_BFu0i(Test_aBFu7ll_BFu16i_BFu0i, "aBFu7ll_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu16i_BFu0ll");
    static aBFu7ll_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16i_BFu0ll(Test_aBFu7ll_BFu16i_BFu0ll, "aBFu7ll_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu16i_BFu0s");
    static aBFu7ll_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16i_BFu0s(Test_aBFu7ll_BFu16i_BFu0s, "aBFu7ll_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu16ll_BFu0c");
    static aBFu7ll_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16ll_BFu0c(Test_aBFu7ll_BFu16ll_BFu0c, "aBFu7ll_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu16ll_BFu0i");
    static aBFu7ll_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16ll_BFu0i(Test_aBFu7ll_BFu16ll_BFu0i, "aBFu7ll_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu16ll_BFu0ll");
    static aBFu7ll_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16ll_BFu0ll(Test_aBFu7ll_BFu16ll_BFu0ll, "aBFu7ll_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu16ll_BFu0s");
    static aBFu7ll_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16ll_BFu0s(Test_aBFu7ll_BFu16ll_BFu0s, "aBFu7ll_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu16s_BFu0c");
    static aBFu7ll_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16s_BFu0c(Test_aBFu7ll_BFu16s_BFu0c, "aBFu7ll_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu16s_BFu0i");
    static aBFu7ll_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16s_BFu0i(Test_aBFu7ll_BFu16s_BFu0i, "aBFu7ll_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu16s_BFu0ll");
    static aBFu7ll_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16s_BFu0ll(Test_aBFu7ll_BFu16s_BFu0ll, "aBFu7ll_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu16s_BFu0s");
    static aBFu7ll_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7ll_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu16s_BFu0s(Test_aBFu7ll_BFu16s_BFu0s, "aBFu7ll_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu17i_BFu0c");
    static aBFu7ll_BFu17i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17i_BFu0c(Test_aBFu7ll_BFu17i_BFu0c, "aBFu7ll_BFu17i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu17i_BFu0i");
    static aBFu7ll_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17i_BFu0i(Test_aBFu7ll_BFu17i_BFu0i, "aBFu7ll_BFu17i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu17i_BFu0ll");
    static aBFu7ll_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17i_BFu0ll(Test_aBFu7ll_BFu17i_BFu0ll, "aBFu7ll_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu17i_BFu0s");
    static aBFu7ll_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17i_BFu0s(Test_aBFu7ll_BFu17i_BFu0s, "aBFu7ll_BFu17i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu17ll_BFu0c");
    static aBFu7ll_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17ll_BFu0c(Test_aBFu7ll_BFu17ll_BFu0c, "aBFu7ll_BFu17ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu17ll_BFu0i");
    static aBFu7ll_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17ll_BFu0i(Test_aBFu7ll_BFu17ll_BFu0i, "aBFu7ll_BFu17ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu17ll_BFu0ll");
    static aBFu7ll_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17ll_BFu0ll(Test_aBFu7ll_BFu17ll_BFu0ll, "aBFu7ll_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu17ll_BFu0s");
    static aBFu7ll_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7ll_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu17ll_BFu0s(Test_aBFu7ll_BFu17ll_BFu0s, "aBFu7ll_BFu17ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu1c_BFu0c");
    static aBFu7ll_BFu1c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1c_BFu0c(Test_aBFu7ll_BFu1c_BFu0c, "aBFu7ll_BFu1c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu1c_BFu0i");
    static aBFu7ll_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1c_BFu0i(Test_aBFu7ll_BFu1c_BFu0i, "aBFu7ll_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu1c_BFu0ll");
    static aBFu7ll_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1c_BFu0ll(Test_aBFu7ll_BFu1c_BFu0ll, "aBFu7ll_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu1c_BFu0s");
    static aBFu7ll_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1c_BFu0s(Test_aBFu7ll_BFu1c_BFu0s, "aBFu7ll_BFu1c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu1i_BFu0c");
    static aBFu7ll_BFu1i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1i_BFu0c(Test_aBFu7ll_BFu1i_BFu0c, "aBFu7ll_BFu1i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu1i_BFu0i");
    static aBFu7ll_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1i_BFu0i(Test_aBFu7ll_BFu1i_BFu0i, "aBFu7ll_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu1i_BFu0ll");
    static aBFu7ll_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1i_BFu0ll(Test_aBFu7ll_BFu1i_BFu0ll, "aBFu7ll_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu1i_BFu0s");
    static aBFu7ll_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1i_BFu0s(Test_aBFu7ll_BFu1i_BFu0s, "aBFu7ll_BFu1i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu1ll_BFu0c");
    static aBFu7ll_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1ll_BFu0c(Test_aBFu7ll_BFu1ll_BFu0c, "aBFu7ll_BFu1ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu1ll_BFu0i");
    static aBFu7ll_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1ll_BFu0i(Test_aBFu7ll_BFu1ll_BFu0i, "aBFu7ll_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu1ll_BFu0ll");
    static aBFu7ll_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1ll_BFu0ll(Test_aBFu7ll_BFu1ll_BFu0ll, "aBFu7ll_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu1ll_BFu0s");
    static aBFu7ll_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1ll_BFu0s(Test_aBFu7ll_BFu1ll_BFu0s, "aBFu7ll_BFu1ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu1s_BFu0c");
    static aBFu7ll_BFu1s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7ll_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1s_BFu0c(Test_aBFu7ll_BFu1s_BFu0c, "aBFu7ll_BFu1s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu1s_BFu0i");
    static aBFu7ll_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1s_BFu0i(Test_aBFu7ll_BFu1s_BFu0i, "aBFu7ll_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu1s_BFu0ll");
    static aBFu7ll_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1s_BFu0ll(Test_aBFu7ll_BFu1s_BFu0ll, "aBFu7ll_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu1s_BFu0s");
    static aBFu7ll_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7ll_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7ll_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu1s_BFu0s(Test_aBFu7ll_BFu1s_BFu0s, "aBFu7ll_BFu1s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu31i_BFu0c");
    static aBFu7ll_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31i_BFu0c(Test_aBFu7ll_BFu31i_BFu0c, "aBFu7ll_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu31i_BFu0i");
    static aBFu7ll_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31i_BFu0i(Test_aBFu7ll_BFu31i_BFu0i, "aBFu7ll_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu31i_BFu0ll");
    static aBFu7ll_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31i_BFu0ll(Test_aBFu7ll_BFu31i_BFu0ll, "aBFu7ll_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu31i_BFu0s");
    static aBFu7ll_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31i_BFu0s(Test_aBFu7ll_BFu31i_BFu0s, "aBFu7ll_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu31ll_BFu0c");
    static aBFu7ll_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31ll_BFu0c(Test_aBFu7ll_BFu31ll_BFu0c, "aBFu7ll_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu31ll_BFu0i");
    static aBFu7ll_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31ll_BFu0i(Test_aBFu7ll_BFu31ll_BFu0i, "aBFu7ll_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu31ll_BFu0ll");
    static aBFu7ll_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31ll_BFu0ll(Test_aBFu7ll_BFu31ll_BFu0ll, "aBFu7ll_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu31ll_BFu0s");
    static aBFu7ll_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7ll_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu31ll_BFu0s(Test_aBFu7ll_BFu31ll_BFu0s, "aBFu7ll_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu32i_BFu0c");
    static aBFu7ll_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32i_BFu0c(Test_aBFu7ll_BFu32i_BFu0c, "aBFu7ll_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu32i_BFu0i");
    static aBFu7ll_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32i_BFu0i(Test_aBFu7ll_BFu32i_BFu0i, "aBFu7ll_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu32i_BFu0ll");
    static aBFu7ll_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32i_BFu0ll(Test_aBFu7ll_BFu32i_BFu0ll, "aBFu7ll_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu32i_BFu0s");
    static aBFu7ll_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32i_BFu0s(Test_aBFu7ll_BFu32i_BFu0s, "aBFu7ll_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu32ll_BFu0c");
    static aBFu7ll_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32ll_BFu0c(Test_aBFu7ll_BFu32ll_BFu0c, "aBFu7ll_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu32ll_BFu0i");
    static aBFu7ll_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32ll_BFu0i(Test_aBFu7ll_BFu32ll_BFu0i, "aBFu7ll_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu32ll_BFu0ll");
    static aBFu7ll_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32ll_BFu0ll(Test_aBFu7ll_BFu32ll_BFu0ll, "aBFu7ll_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu32ll_BFu0s");
    static aBFu7ll_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7ll_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu32ll_BFu0s(Test_aBFu7ll_BFu32ll_BFu0s, "aBFu7ll_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu33_BFu0c");
    static aBFu7ll_BFu33_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7ll_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7ll_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu33_BFu0c(Test_aBFu7ll_BFu33_BFu0c, "aBFu7ll_BFu33_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu33_BFu0i");
    static aBFu7ll_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7ll_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7ll_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu33_BFu0i(Test_aBFu7ll_BFu33_BFu0i, "aBFu7ll_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu33_BFu0ll");
    static aBFu7ll_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7ll_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu33_BFu0ll(Test_aBFu7ll_BFu33_BFu0ll, "aBFu7ll_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu33_BFu0s");
    static aBFu7ll_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7ll_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7ll_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu33_BFu0s(Test_aBFu7ll_BFu33_BFu0s, "aBFu7ll_BFu33_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu7c_BFu0c");
    static aBFu7ll_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7c_BFu0c(Test_aBFu7ll_BFu7c_BFu0c, "aBFu7ll_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu7c_BFu0i");
    static aBFu7ll_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7c_BFu0i(Test_aBFu7ll_BFu7c_BFu0i, "aBFu7ll_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu7c_BFu0ll");
    static aBFu7ll_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7c_BFu0ll(Test_aBFu7ll_BFu7c_BFu0ll, "aBFu7ll_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu7c_BFu0s");
    static aBFu7ll_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7c_BFu0s(Test_aBFu7ll_BFu7c_BFu0s, "aBFu7ll_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu7i_BFu0c");
    static aBFu7ll_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7i_BFu0c(Test_aBFu7ll_BFu7i_BFu0c, "aBFu7ll_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu7i_BFu0i");
    static aBFu7ll_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7i_BFu0i(Test_aBFu7ll_BFu7i_BFu0i, "aBFu7ll_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu7i_BFu0ll");
    static aBFu7ll_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7i_BFu0ll(Test_aBFu7ll_BFu7i_BFu0ll, "aBFu7ll_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu7i_BFu0s");
    static aBFu7ll_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7i_BFu0s(Test_aBFu7ll_BFu7i_BFu0s, "aBFu7ll_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu7ll_BFu0c");
    static aBFu7ll_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7ll_BFu0c(Test_aBFu7ll_BFu7ll_BFu0c, "aBFu7ll_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu7ll_BFu0i");
    static aBFu7ll_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7ll_BFu0i(Test_aBFu7ll_BFu7ll_BFu0i, "aBFu7ll_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu7ll_BFu0ll");
    static aBFu7ll_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7ll_BFu0ll(Test_aBFu7ll_BFu7ll_BFu0ll, "aBFu7ll_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu7ll_BFu0s");
    static aBFu7ll_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7ll_BFu0s(Test_aBFu7ll_BFu7ll_BFu0s, "aBFu7ll_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu7s_BFu0c");
    static aBFu7ll_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7s_BFu0c(Test_aBFu7ll_BFu7s_BFu0c, "aBFu7ll_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu7s_BFu0i");
    static aBFu7ll_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7s_BFu0i(Test_aBFu7ll_BFu7s_BFu0i, "aBFu7ll_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu7s_BFu0ll");
    static aBFu7ll_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7s_BFu0ll(Test_aBFu7ll_BFu7s_BFu0ll, "aBFu7ll_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu7s_BFu0s");
    static aBFu7ll_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7ll_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu7s_BFu0s(Test_aBFu7ll_BFu7s_BFu0s, "aBFu7ll_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu8c_BFu0c");
    static aBFu7ll_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8c_BFu0c(Test_aBFu7ll_BFu8c_BFu0c, "aBFu7ll_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu8c_BFu0i");
    static aBFu7ll_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8c_BFu0i(Test_aBFu7ll_BFu8c_BFu0i, "aBFu7ll_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu8c_BFu0ll");
    static aBFu7ll_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8c_BFu0ll(Test_aBFu7ll_BFu8c_BFu0ll, "aBFu7ll_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu8c_BFu0s");
    static aBFu7ll_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8c_BFu0s(Test_aBFu7ll_BFu8c_BFu0s, "aBFu7ll_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu8i_BFu0c");
    static aBFu7ll_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8i_BFu0c(Test_aBFu7ll_BFu8i_BFu0c, "aBFu7ll_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu8i_BFu0i");
    static aBFu7ll_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8i_BFu0i(Test_aBFu7ll_BFu8i_BFu0i, "aBFu7ll_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu8i_BFu0ll");
    static aBFu7ll_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8i_BFu0ll(Test_aBFu7ll_BFu8i_BFu0ll, "aBFu7ll_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu8i_BFu0s");
    static aBFu7ll_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8i_BFu0s(Test_aBFu7ll_BFu8i_BFu0s, "aBFu7ll_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu8ll_BFu0c");
    static aBFu7ll_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8ll_BFu0c(Test_aBFu7ll_BFu8ll_BFu0c, "aBFu7ll_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu8ll_BFu0i");
    static aBFu7ll_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8ll_BFu0i(Test_aBFu7ll_BFu8ll_BFu0i, "aBFu7ll_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu8ll_BFu0ll");
    static aBFu7ll_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8ll_BFu0ll(Test_aBFu7ll_BFu8ll_BFu0ll, "aBFu7ll_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu8ll_BFu0s");
    static aBFu7ll_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8ll_BFu0s(Test_aBFu7ll_BFu8ll_BFu0s, "aBFu7ll_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu8s_BFu0c");
    static aBFu7ll_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8s_BFu0c(Test_aBFu7ll_BFu8s_BFu0c, "aBFu7ll_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu8s_BFu0i");
    static aBFu7ll_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8s_BFu0i(Test_aBFu7ll_BFu8s_BFu0i, "aBFu7ll_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu8s_BFu0ll");
    static aBFu7ll_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8s_BFu0ll(Test_aBFu7ll_BFu8s_BFu0ll, "aBFu7ll_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu8s_BFu0s");
    static aBFu7ll_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7ll_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu8s_BFu0s(Test_aBFu7ll_BFu8s_BFu0s, "aBFu7ll_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu9i_BFu0c");
    static aBFu7ll_BFu9i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9i_BFu0c(Test_aBFu7ll_BFu9i_BFu0c, "aBFu7ll_BFu9i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu9i_BFu0i");
    static aBFu7ll_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9i_BFu0i(Test_aBFu7ll_BFu9i_BFu0i, "aBFu7ll_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu9i_BFu0ll");
    static aBFu7ll_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9i_BFu0ll(Test_aBFu7ll_BFu9i_BFu0ll, "aBFu7ll_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu9i_BFu0s");
    static aBFu7ll_BFu9i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9i_BFu0s(Test_aBFu7ll_BFu9i_BFu0s, "aBFu7ll_BFu9i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu9ll_BFu0c");
    static aBFu7ll_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9ll_BFu0c(Test_aBFu7ll_BFu9ll_BFu0c, "aBFu7ll_BFu9ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu9ll_BFu0i");
    static aBFu7ll_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9ll_BFu0i(Test_aBFu7ll_BFu9ll_BFu0i, "aBFu7ll_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu9ll_BFu0ll");
    static aBFu7ll_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9ll_BFu0ll(Test_aBFu7ll_BFu9ll_BFu0ll, "aBFu7ll_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu9ll_BFu0s");
    static aBFu7ll_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9ll_BFu0s(Test_aBFu7ll_BFu9ll_BFu0s, "aBFu7ll_BFu9ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu7ll_BFu9s_BFu0c");
    static aBFu7ll_BFu9s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9s_BFu0c(Test_aBFu7ll_BFu9s_BFu0c, "aBFu7ll_BFu9s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu7ll_BFu9s_BFu0i");
    static aBFu7ll_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9s_BFu0i(Test_aBFu7ll_BFu9s_BFu0i, "aBFu7ll_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_BFu9s_BFu0ll");
    static aBFu7ll_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9s_BFu0ll(Test_aBFu7ll_BFu9s_BFu0ll, "aBFu7ll_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu7ll_BFu9s_BFu0s");
    static aBFu7ll_BFu9s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7ll_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7ll_BFu9s_BFu0s(Test_aBFu7ll_BFu9s_BFu0s, "aBFu7ll_BFu9s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_C_BFu0c()
{
  {
    init_simple_test("aBFu7ll_C_BFu0c");
    static aBFu7ll_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_C_BFu0c(Test_aBFu7ll_C_BFu0c, "aBFu7ll_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_C_BFu0i()
{
  {
    init_simple_test("aBFu7ll_C_BFu0i");
    static aBFu7ll_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_C_BFu0i(Test_aBFu7ll_C_BFu0i, "aBFu7ll_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_C_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_C_BFu0ll");
    static aBFu7ll_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_C_BFu0ll(Test_aBFu7ll_C_BFu0ll, "aBFu7ll_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_C_BFu0s()
{
  {
    init_simple_test("aBFu7ll_C_BFu0s");
    static aBFu7ll_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_C_BFu0s(Test_aBFu7ll_C_BFu0s, "aBFu7ll_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_D_BFu0c()
{
  {
    init_simple_test("aBFu7ll_D_BFu0c");
    static aBFu7ll_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_D_BFu0c(Test_aBFu7ll_D_BFu0c, "aBFu7ll_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_D_BFu0i()
{
  {
    init_simple_test("aBFu7ll_D_BFu0i");
    static aBFu7ll_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_D_BFu0i(Test_aBFu7ll_D_BFu0i, "aBFu7ll_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_D_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_D_BFu0ll");
    static aBFu7ll_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_D_BFu0ll(Test_aBFu7ll_D_BFu0ll, "aBFu7ll_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_D_BFu0s()
{
  {
    init_simple_test("aBFu7ll_D_BFu0s");
    static aBFu7ll_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_D_BFu0s(Test_aBFu7ll_D_BFu0s, "aBFu7ll_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_F_BFu0c()
{
  {
    init_simple_test("aBFu7ll_F_BFu0c");
    static aBFu7ll_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_F_BFu0c(Test_aBFu7ll_F_BFu0c, "aBFu7ll_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_F_BFu0i()
{
  {
    init_simple_test("aBFu7ll_F_BFu0i");
    static aBFu7ll_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_F_BFu0i(Test_aBFu7ll_F_BFu0i, "aBFu7ll_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_F_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_F_BFu0ll");
    static aBFu7ll_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_F_BFu0ll(Test_aBFu7ll_F_BFu0ll, "aBFu7ll_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_F_BFu0s()
{
  {
    init_simple_test("aBFu7ll_F_BFu0s");
    static aBFu7ll_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_F_BFu0s(Test_aBFu7ll_F_BFu0s, "aBFu7ll_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_I_BFu0c()
{
  {
    init_simple_test("aBFu7ll_I_BFu0c");
    static aBFu7ll_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_I_BFu0c(Test_aBFu7ll_I_BFu0c, "aBFu7ll_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_I_BFu0i()
{
  {
    init_simple_test("aBFu7ll_I_BFu0i");
    static aBFu7ll_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_I_BFu0i(Test_aBFu7ll_I_BFu0i, "aBFu7ll_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_I_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_I_BFu0ll");
    static aBFu7ll_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_I_BFu0ll(Test_aBFu7ll_I_BFu0ll, "aBFu7ll_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_I_BFu0s()
{
  {
    init_simple_test("aBFu7ll_I_BFu0s");
    static aBFu7ll_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_I_BFu0s(Test_aBFu7ll_I_BFu0s, "aBFu7ll_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ip_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Ip_BFu0c");
    static aBFu7ll_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ip_BFu0c(Test_aBFu7ll_Ip_BFu0c, "aBFu7ll_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ip_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Ip_BFu0i");
    static aBFu7ll_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ip_BFu0i(Test_aBFu7ll_Ip_BFu0i, "aBFu7ll_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Ip_BFu0ll");
    static aBFu7ll_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7ll_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ip_BFu0ll(Test_aBFu7ll_Ip_BFu0ll, "aBFu7ll_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ip_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Ip_BFu0s");
    static aBFu7ll_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ip_BFu0s(Test_aBFu7ll_Ip_BFu0s, "aBFu7ll_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_L_BFu0c()
{
  {
    init_simple_test("aBFu7ll_L_BFu0c");
    static aBFu7ll_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_L_BFu0c(Test_aBFu7ll_L_BFu0c, "aBFu7ll_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_L_BFu0i()
{
  {
    init_simple_test("aBFu7ll_L_BFu0i");
    static aBFu7ll_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_L_BFu0i(Test_aBFu7ll_L_BFu0i, "aBFu7ll_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_L_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_L_BFu0ll");
    static aBFu7ll_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_L_BFu0ll(Test_aBFu7ll_L_BFu0ll, "aBFu7ll_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_L_BFu0s()
{
  {
    init_simple_test("aBFu7ll_L_BFu0s");
    static aBFu7ll_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_L_BFu0s(Test_aBFu7ll_L_BFu0s, "aBFu7ll_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_S_BFu0c()
{
  {
    init_simple_test("aBFu7ll_S_BFu0c");
    static aBFu7ll_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_S_BFu0c(Test_aBFu7ll_S_BFu0c, "aBFu7ll_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_S_BFu0i()
{
  {
    init_simple_test("aBFu7ll_S_BFu0i");
    static aBFu7ll_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_S_BFu0i(Test_aBFu7ll_S_BFu0i, "aBFu7ll_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_S_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_S_BFu0ll");
    static aBFu7ll_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_S_BFu0ll(Test_aBFu7ll_S_BFu0ll, "aBFu7ll_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_S_BFu0s()
{
  {
    init_simple_test("aBFu7ll_S_BFu0s");
    static aBFu7ll_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_S_BFu0s(Test_aBFu7ll_S_BFu0s, "aBFu7ll_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Uc_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Uc_BFu0c");
    static aBFu7ll_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Uc_BFu0c(Test_aBFu7ll_Uc_BFu0c, "aBFu7ll_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Uc_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Uc_BFu0i");
    static aBFu7ll_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Uc_BFu0i(Test_aBFu7ll_Uc_BFu0i, "aBFu7ll_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Uc_BFu0ll");
    static aBFu7ll_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Uc_BFu0ll(Test_aBFu7ll_Uc_BFu0ll, "aBFu7ll_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Uc_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Uc_BFu0s");
    static aBFu7ll_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7ll_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Uc_BFu0s(Test_aBFu7ll_Uc_BFu0s, "aBFu7ll_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ui_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Ui_BFu0c");
    static aBFu7ll_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7ll_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ui_BFu0c(Test_aBFu7ll_Ui_BFu0c, "aBFu7ll_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ui_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Ui_BFu0i");
    static aBFu7ll_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ui_BFu0i(Test_aBFu7ll_Ui_BFu0i, "aBFu7ll_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Ui_BFu0ll");
    static aBFu7ll_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7ll_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ui_BFu0ll(Test_aBFu7ll_Ui_BFu0ll, "aBFu7ll_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ui_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Ui_BFu0s");
    static aBFu7ll_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7ll_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ui_BFu0s(Test_aBFu7ll_Ui_BFu0s, "aBFu7ll_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ul_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Ul_BFu0c");
    static aBFu7ll_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7ll_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ul_BFu0c(Test_aBFu7ll_Ul_BFu0c, "aBFu7ll_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ul_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Ul_BFu0i");
    static aBFu7ll_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7ll_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ul_BFu0i(Test_aBFu7ll_Ul_BFu0i, "aBFu7ll_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Ul_BFu0ll");
    static aBFu7ll_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7ll_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ul_BFu0ll(Test_aBFu7ll_Ul_BFu0ll, "aBFu7ll_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Ul_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Ul_BFu0s");
    static aBFu7ll_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7ll_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Ul_BFu0s(Test_aBFu7ll_Ul_BFu0s, "aBFu7ll_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Us_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Us_BFu0c");
    static aBFu7ll_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7ll_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Us_BFu0c(Test_aBFu7ll_Us_BFu0c, "aBFu7ll_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Us_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Us_BFu0i");
    static aBFu7ll_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Us_BFu0i(Test_aBFu7ll_Us_BFu0i, "aBFu7ll_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Us_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Us_BFu0ll");
    static aBFu7ll_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7ll_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Us_BFu0ll(Test_aBFu7ll_Us_BFu0ll, "aBFu7ll_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Us_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Us_BFu0s");
    static aBFu7ll_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7ll_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Us_BFu0s(Test_aBFu7ll_Us_BFu0s, "aBFu7ll_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Vp_BFu0c()
{
  {
    init_simple_test("aBFu7ll_Vp_BFu0c");
    static aBFu7ll_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7ll_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7ll_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Vp_BFu0c(Test_aBFu7ll_Vp_BFu0c, "aBFu7ll_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Vp_BFu0i()
{
  {
    init_simple_test("aBFu7ll_Vp_BFu0i");
    static aBFu7ll_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7ll_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7ll_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Vp_BFu0i(Test_aBFu7ll_Vp_BFu0i, "aBFu7ll_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu7ll_Vp_BFu0ll");
    static aBFu7ll_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7ll_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7ll_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Vp_BFu0ll(Test_aBFu7ll_Vp_BFu0ll, "aBFu7ll_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7ll_Vp_BFu0s()
{
  {
    init_simple_test("aBFu7ll_Vp_BFu0s");
    static aBFu7ll_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7ll_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7ll_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7ll_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7ll_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7ll_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7ll_Vp_BFu0s(Test_aBFu7ll_Vp_BFu0s, "aBFu7ll_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu0c");
    static aBFu7s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c(Test_aBFu7s_BFu0c, "aBFu7s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu0c");
    static aBFu7s_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu0c(Test_aBFu7s_BFu0c_BFu0c, "aBFu7s_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu0i");
    static aBFu7s_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu0i(Test_aBFu7s_BFu0c_BFu0i, "aBFu7s_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu0ll");
    static aBFu7s_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu0ll(Test_aBFu7s_BFu0c_BFu0ll, "aBFu7s_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu0s");
    static aBFu7s_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu0s(Test_aBFu7s_BFu0c_BFu0s, "aBFu7s_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu15i");
    static aBFu7s_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu15i(Test_aBFu7s_BFu0c_BFu15i, "aBFu7s_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu15ll");
    static aBFu7s_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu15ll(Test_aBFu7s_BFu0c_BFu15ll, "aBFu7s_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu15s");
    static aBFu7s_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu15s(Test_aBFu7s_BFu0c_BFu15s, "aBFu7s_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu16i");
    static aBFu7s_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu16i(Test_aBFu7s_BFu0c_BFu16i, "aBFu7s_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu16ll");
    static aBFu7s_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu16ll(Test_aBFu7s_BFu0c_BFu16ll, "aBFu7s_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu16s");
    static aBFu7s_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu16s(Test_aBFu7s_BFu0c_BFu16s, "aBFu7s_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu17i");
    static aBFu7s_BFu0c_BFu17i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu17i(Test_aBFu7s_BFu0c_BFu17i, "aBFu7s_BFu0c_BFu17i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu17ll");
    static aBFu7s_BFu0c_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu17ll(Test_aBFu7s_BFu0c_BFu17ll, "aBFu7s_BFu0c_BFu17ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu1c");
    static aBFu7s_BFu0c_BFu1c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu1c(Test_aBFu7s_BFu0c_BFu1c, "aBFu7s_BFu0c_BFu1c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu1i");
    static aBFu7s_BFu0c_BFu1i lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu1i(Test_aBFu7s_BFu0c_BFu1i, "aBFu7s_BFu0c_BFu1i", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu1ll");
    static aBFu7s_BFu0c_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu1ll(Test_aBFu7s_BFu0c_BFu1ll, "aBFu7s_BFu0c_BFu1ll", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu1s");
    static aBFu7s_BFu0c_BFu1s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu1s(Test_aBFu7s_BFu0c_BFu1s, "aBFu7s_BFu0c_BFu1s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu31i");
    static aBFu7s_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu31i(Test_aBFu7s_BFu0c_BFu31i, "aBFu7s_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu31ll");
    static aBFu7s_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu31ll(Test_aBFu7s_BFu0c_BFu31ll, "aBFu7s_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu32i");
    static aBFu7s_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu32i(Test_aBFu7s_BFu0c_BFu32i, "aBFu7s_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu32ll");
    static aBFu7s_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu32ll(Test_aBFu7s_BFu0c_BFu32ll, "aBFu7s_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu33");
    static aBFu7s_BFu0c_BFu33 lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, 1, "aBFu7s_BFu0c_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7s_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu33(Test_aBFu7s_BFu0c_BFu33, "aBFu7s_BFu0c_BFu33", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu7c");
    static aBFu7s_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu7c(Test_aBFu7s_BFu0c_BFu7c, "aBFu7s_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu7i");
    static aBFu7s_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu7i(Test_aBFu7s_BFu0c_BFu7i, "aBFu7s_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu7ll");
    static aBFu7s_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu7ll(Test_aBFu7s_BFu0c_BFu7ll, "aBFu7s_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu7s");
    static aBFu7s_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu7s(Test_aBFu7s_BFu0c_BFu7s, "aBFu7s_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu8c");
    static aBFu7s_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu8c(Test_aBFu7s_BFu0c_BFu8c, "aBFu7s_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu8i");
    static aBFu7s_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu8i(Test_aBFu7s_BFu0c_BFu8i, "aBFu7s_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu8ll");
    static aBFu7s_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu8ll(Test_aBFu7s_BFu0c_BFu8ll, "aBFu7s_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu8s");
    static aBFu7s_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu8s(Test_aBFu7s_BFu0c_BFu8s, "aBFu7s_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu9i");
    static aBFu7s_BFu0c_BFu9i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu9i(Test_aBFu7s_BFu0c_BFu9i, "aBFu7s_BFu0c_BFu9i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu9ll");
    static aBFu7s_BFu0c_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu9ll(Test_aBFu7s_BFu0c_BFu9ll, "aBFu7s_BFu0c_BFu9ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu7s_BFu0c_BFu9s");
    static aBFu7s_BFu0c_BFu9s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(1,1), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_BFu9s(Test_aBFu7s_BFu0c_BFu9s, "aBFu7s_BFu0c_BFu9s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_C()
{
  {
    init_simple_test("aBFu7s_BFu0c_C");
    static aBFu7s_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_C(Test_aBFu7s_BFu0c_C, "aBFu7s_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_D()
{
  {
    init_simple_test("aBFu7s_BFu0c_D");
    static aBFu7s_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_D(Test_aBFu7s_BFu0c_D, "aBFu7s_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_F()
{
  {
    init_simple_test("aBFu7s_BFu0c_F");
    static aBFu7s_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_F(Test_aBFu7s_BFu0c_F, "aBFu7s_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_I()
{
  {
    init_simple_test("aBFu7s_BFu0c_I");
    static aBFu7s_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_I(Test_aBFu7s_BFu0c_I, "aBFu7s_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Ip()
{
  {
    init_simple_test("aBFu7s_BFu0c_Ip");
    static aBFu7s_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Ip(Test_aBFu7s_BFu0c_Ip, "aBFu7s_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_L()
{
  {
    init_simple_test("aBFu7s_BFu0c_L");
    static aBFu7s_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_L(Test_aBFu7s_BFu0c_L, "aBFu7s_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_S()
{
  {
    init_simple_test("aBFu7s_BFu0c_S");
    static aBFu7s_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_S(Test_aBFu7s_BFu0c_S, "aBFu7s_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Uc()
{
  {
    init_simple_test("aBFu7s_BFu0c_Uc");
    static aBFu7s_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Uc(Test_aBFu7s_BFu0c_Uc, "aBFu7s_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Ui()
{
  {
    init_simple_test("aBFu7s_BFu0c_Ui");
    static aBFu7s_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Ui(Test_aBFu7s_BFu0c_Ui, "aBFu7s_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Ul()
{
  {
    init_simple_test("aBFu7s_BFu0c_Ul");
    static aBFu7s_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Ul(Test_aBFu7s_BFu0c_Ul, "aBFu7s_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Us()
{
  {
    init_simple_test("aBFu7s_BFu0c_Us");
    static aBFu7s_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Us(Test_aBFu7s_BFu0c_Us, "aBFu7s_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0c_Vp()
{
  {
    init_simple_test("aBFu7s_BFu0c_Vp");
    static aBFu7s_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu7s_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0c_Vp(Test_aBFu7s_BFu0c_Vp, "aBFu7s_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu0i");
    static aBFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i(Test_aBFu7s_BFu0i, "aBFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu0c");
    static aBFu7s_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu0c(Test_aBFu7s_BFu0i_BFu0c, "aBFu7s_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu0i");
    static aBFu7s_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu0i(Test_aBFu7s_BFu0i_BFu0i, "aBFu7s_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu0ll");
    static aBFu7s_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu0ll(Test_aBFu7s_BFu0i_BFu0ll, "aBFu7s_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu0s");
    static aBFu7s_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu0s(Test_aBFu7s_BFu0i_BFu0s, "aBFu7s_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu15i");
    static aBFu7s_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu15i(Test_aBFu7s_BFu0i_BFu15i, "aBFu7s_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu15ll");
    static aBFu7s_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu15ll(Test_aBFu7s_BFu0i_BFu15ll, "aBFu7s_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu15s");
    static aBFu7s_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu15s(Test_aBFu7s_BFu0i_BFu15s, "aBFu7s_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu16i");
    static aBFu7s_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu16i(Test_aBFu7s_BFu0i_BFu16i, "aBFu7s_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu16ll");
    static aBFu7s_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu16ll(Test_aBFu7s_BFu0i_BFu16ll, "aBFu7s_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu16s");
    static aBFu7s_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu16s(Test_aBFu7s_BFu0i_BFu16s, "aBFu7s_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu17i");
    static aBFu7s_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7s_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu17i(Test_aBFu7s_BFu0i_BFu17i, "aBFu7s_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu17ll");
    static aBFu7s_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7s_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu17ll(Test_aBFu7s_BFu0i_BFu17ll, "aBFu7s_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu1c");
    static aBFu7s_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu1c(Test_aBFu7s_BFu0i_BFu1c, "aBFu7s_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu1i");
    static aBFu7s_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu1i(Test_aBFu7s_BFu0i_BFu1i, "aBFu7s_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu1ll");
    static aBFu7s_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu1ll(Test_aBFu7s_BFu0i_BFu1ll, "aBFu7s_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu1s");
    static aBFu7s_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu1s(Test_aBFu7s_BFu0i_BFu1s, "aBFu7s_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu31i");
    static aBFu7s_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu31i(Test_aBFu7s_BFu0i_BFu31i, "aBFu7s_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu31ll");
    static aBFu7s_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu31ll(Test_aBFu7s_BFu0i_BFu31ll, "aBFu7s_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu32i");
    static aBFu7s_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu32i(Test_aBFu7s_BFu0i_BFu32i, "aBFu7s_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu32ll");
    static aBFu7s_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu32ll(Test_aBFu7s_BFu0i_BFu32ll, "aBFu7s_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu33");
    static aBFu7s_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu7s_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, 1, "aBFu7s_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7s_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu33(Test_aBFu7s_BFu0i_BFu33, "aBFu7s_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu7c");
    static aBFu7s_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu7c(Test_aBFu7s_BFu0i_BFu7c, "aBFu7s_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu7i");
    static aBFu7s_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu7i(Test_aBFu7s_BFu0i_BFu7i, "aBFu7s_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu7ll");
    static aBFu7s_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu7ll(Test_aBFu7s_BFu0i_BFu7ll, "aBFu7s_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu7s");
    static aBFu7s_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu7s(Test_aBFu7s_BFu0i_BFu7s, "aBFu7s_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu8c");
    static aBFu7s_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu8c(Test_aBFu7s_BFu0i_BFu8c, "aBFu7s_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu8i");
    static aBFu7s_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu8i(Test_aBFu7s_BFu0i_BFu8i, "aBFu7s_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu8ll");
    static aBFu7s_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu8ll(Test_aBFu7s_BFu0i_BFu8ll, "aBFu7s_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu8s");
    static aBFu7s_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu8s(Test_aBFu7s_BFu0i_BFu8s, "aBFu7s_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu9i");
    static aBFu7s_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu9i(Test_aBFu7s_BFu0i_BFu9i, "aBFu7s_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu9ll");
    static aBFu7s_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu9ll(Test_aBFu7s_BFu0i_BFu9ll, "aBFu7s_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu7s_BFu0i_BFu9s");
    static aBFu7s_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_BFu9s(Test_aBFu7s_BFu0i_BFu9s, "aBFu7s_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_C()
{
  {
    init_simple_test("aBFu7s_BFu0i_C");
    static aBFu7s_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_C(Test_aBFu7s_BFu0i_C, "aBFu7s_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_D()
{
  {
    init_simple_test("aBFu7s_BFu0i_D");
    static aBFu7s_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_D(Test_aBFu7s_BFu0i_D, "aBFu7s_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_F()
{
  {
    init_simple_test("aBFu7s_BFu0i_F");
    static aBFu7s_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_F(Test_aBFu7s_BFu0i_F, "aBFu7s_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_I()
{
  {
    init_simple_test("aBFu7s_BFu0i_I");
    static aBFu7s_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_I(Test_aBFu7s_BFu0i_I, "aBFu7s_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Ip()
{
  {
    init_simple_test("aBFu7s_BFu0i_Ip");
    static aBFu7s_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Ip(Test_aBFu7s_BFu0i_Ip, "aBFu7s_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_L()
{
  {
    init_simple_test("aBFu7s_BFu0i_L");
    static aBFu7s_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_L(Test_aBFu7s_BFu0i_L, "aBFu7s_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_S()
{
  {
    init_simple_test("aBFu7s_BFu0i_S");
    static aBFu7s_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_S(Test_aBFu7s_BFu0i_S, "aBFu7s_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Uc()
{
  {
    init_simple_test("aBFu7s_BFu0i_Uc");
    static aBFu7s_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Uc(Test_aBFu7s_BFu0i_Uc, "aBFu7s_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Ui()
{
  {
    init_simple_test("aBFu7s_BFu0i_Ui");
    static aBFu7s_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Ui(Test_aBFu7s_BFu0i_Ui, "aBFu7s_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Ul()
{
  {
    init_simple_test("aBFu7s_BFu0i_Ul");
    static aBFu7s_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Ul(Test_aBFu7s_BFu0i_Ul, "aBFu7s_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Us()
{
  {
    init_simple_test("aBFu7s_BFu0i_Us");
    static aBFu7s_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Us(Test_aBFu7s_BFu0i_Us, "aBFu7s_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0i_Vp()
{
  {
    init_simple_test("aBFu7s_BFu0i_Vp");
    static aBFu7s_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu7s_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0i_Vp(Test_aBFu7s_BFu0i_Vp, "aBFu7s_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll");
    static aBFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll(Test_aBFu7s_BFu0ll, "aBFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu0c");
    static aBFu7s_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu0c(Test_aBFu7s_BFu0ll_BFu0c, "aBFu7s_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu0i");
    static aBFu7s_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu0i(Test_aBFu7s_BFu0ll_BFu0i, "aBFu7s_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu0ll");
    static aBFu7s_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu0ll(Test_aBFu7s_BFu0ll_BFu0ll, "aBFu7s_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu0s");
    static aBFu7s_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu0s(Test_aBFu7s_BFu0ll_BFu0s, "aBFu7s_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu15i");
    static aBFu7s_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu15i(Test_aBFu7s_BFu0ll_BFu15i, "aBFu7s_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu15ll");
    static aBFu7s_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu15ll(Test_aBFu7s_BFu0ll_BFu15ll, "aBFu7s_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu15s");
    static aBFu7s_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu15s(Test_aBFu7s_BFu0ll_BFu15s, "aBFu7s_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu16i");
    static aBFu7s_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu16i(Test_aBFu7s_BFu0ll_BFu16i, "aBFu7s_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu16ll");
    static aBFu7s_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu16ll(Test_aBFu7s_BFu0ll_BFu16ll, "aBFu7s_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu16s");
    static aBFu7s_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu16s(Test_aBFu7s_BFu0ll_BFu16s, "aBFu7s_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu17i");
    static aBFu7s_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7s_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu17i(Test_aBFu7s_BFu0ll_BFu17i, "aBFu7s_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu17ll");
    static aBFu7s_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu7s_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu17ll(Test_aBFu7s_BFu0ll_BFu17ll, "aBFu7s_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu1c");
    static aBFu7s_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu1c(Test_aBFu7s_BFu0ll_BFu1c, "aBFu7s_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu1i");
    static aBFu7s_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu1i(Test_aBFu7s_BFu0ll_BFu1i, "aBFu7s_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu1ll");
    static aBFu7s_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu1ll(Test_aBFu7s_BFu0ll_BFu1ll, "aBFu7s_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu1s");
    static aBFu7s_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu1s(Test_aBFu7s_BFu0ll_BFu1s, "aBFu7s_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu31i");
    static aBFu7s_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu31i(Test_aBFu7s_BFu0ll_BFu31i, "aBFu7s_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu31ll");
    static aBFu7s_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu31ll(Test_aBFu7s_BFu0ll_BFu31ll, "aBFu7s_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu32i");
    static aBFu7s_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu32i(Test_aBFu7s_BFu0ll_BFu32i, "aBFu7s_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu32ll");
    static aBFu7s_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu32ll(Test_aBFu7s_BFu0ll_BFu32ll, "aBFu7s_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu33");
    static aBFu7s_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu7s_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, 1, "aBFu7s_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7s_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu33(Test_aBFu7s_BFu0ll_BFu33, "aBFu7s_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu7c");
    static aBFu7s_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu7c(Test_aBFu7s_BFu0ll_BFu7c, "aBFu7s_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu7i");
    static aBFu7s_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu7i(Test_aBFu7s_BFu0ll_BFu7i, "aBFu7s_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu7ll");
    static aBFu7s_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu7ll(Test_aBFu7s_BFu0ll_BFu7ll, "aBFu7s_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu7s");
    static aBFu7s_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu7s(Test_aBFu7s_BFu0ll_BFu7s, "aBFu7s_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu8c");
    static aBFu7s_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu8c(Test_aBFu7s_BFu0ll_BFu8c, "aBFu7s_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu8i");
    static aBFu7s_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu8i(Test_aBFu7s_BFu0ll_BFu8i, "aBFu7s_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu8ll");
    static aBFu7s_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu8ll(Test_aBFu7s_BFu0ll_BFu8ll, "aBFu7s_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu8s");
    static aBFu7s_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu8s(Test_aBFu7s_BFu0ll_BFu8s, "aBFu7s_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu9i");
    static aBFu7s_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu9i(Test_aBFu7s_BFu0ll_BFu9i, "aBFu7s_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu9ll");
    static aBFu7s_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu9ll(Test_aBFu7s_BFu0ll_BFu9ll, "aBFu7s_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu7s_BFu0ll_BFu9s");
    static aBFu7s_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_BFu9s(Test_aBFu7s_BFu0ll_BFu9s, "aBFu7s_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_C()
{
  {
    init_simple_test("aBFu7s_BFu0ll_C");
    static aBFu7s_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_C(Test_aBFu7s_BFu0ll_C, "aBFu7s_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_D()
{
  {
    init_simple_test("aBFu7s_BFu0ll_D");
    static aBFu7s_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_D(Test_aBFu7s_BFu0ll_D, "aBFu7s_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_F()
{
  {
    init_simple_test("aBFu7s_BFu0ll_F");
    static aBFu7s_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_F(Test_aBFu7s_BFu0ll_F, "aBFu7s_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_I()
{
  {
    init_simple_test("aBFu7s_BFu0ll_I");
    static aBFu7s_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_I(Test_aBFu7s_BFu0ll_I, "aBFu7s_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Ip");
    static aBFu7s_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7s_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Ip(Test_aBFu7s_BFu0ll_Ip, "aBFu7s_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_L()
{
  {
    init_simple_test("aBFu7s_BFu0ll_L");
    static aBFu7s_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_L(Test_aBFu7s_BFu0ll_L, "aBFu7s_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_S()
{
  {
    init_simple_test("aBFu7s_BFu0ll_S");
    static aBFu7s_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_S(Test_aBFu7s_BFu0ll_S, "aBFu7s_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Uc");
    static aBFu7s_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Uc(Test_aBFu7s_BFu0ll_Uc, "aBFu7s_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Ui");
    static aBFu7s_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Ui(Test_aBFu7s_BFu0ll_Ui, "aBFu7s_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Ul");
    static aBFu7s_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Ul(Test_aBFu7s_BFu0ll_Ul, "aBFu7s_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Us()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Us");
    static aBFu7s_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Us(Test_aBFu7s_BFu0ll_Us, "aBFu7s_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu7s_BFu0ll_Vp");
    static aBFu7s_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7s_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu7s_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0ll_Vp(Test_aBFu7s_BFu0ll_Vp, "aBFu7s_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu0s");
    static aBFu7s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s(Test_aBFu7s_BFu0s, "aBFu7s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu0c");
    static aBFu7s_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu0c(Test_aBFu7s_BFu0s_BFu0c, "aBFu7s_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu0i");
    static aBFu7s_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu0i(Test_aBFu7s_BFu0s_BFu0i, "aBFu7s_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu0ll");
    static aBFu7s_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu0ll(Test_aBFu7s_BFu0s_BFu0ll, "aBFu7s_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu0s");
    static aBFu7s_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu0s(Test_aBFu7s_BFu0s_BFu0s, "aBFu7s_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu15i");
    static aBFu7s_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu15i(Test_aBFu7s_BFu0s_BFu15i, "aBFu7s_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu15ll");
    static aBFu7s_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu15ll(Test_aBFu7s_BFu0s_BFu15ll, "aBFu7s_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu15s");
    static aBFu7s_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, 1, "aBFu7s_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 15, hide_ull(1LL<<14), "aBFu7s_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu15s(Test_aBFu7s_BFu0s_BFu15s, "aBFu7s_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu16i");
    static aBFu7s_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu16i(Test_aBFu7s_BFu0s_BFu16i, "aBFu7s_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu16ll");
    static aBFu7s_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu16ll(Test_aBFu7s_BFu0s_BFu16ll, "aBFu7s_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu16s");
    static aBFu7s_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, 1, "aBFu7s_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 16, hide_ull(1LL<<15), "aBFu7s_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu16s(Test_aBFu7s_BFu0s_BFu16s, "aBFu7s_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu17i");
    static aBFu7s_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu17i(Test_aBFu7s_BFu0s_BFu17i, "aBFu7s_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu17ll");
    static aBFu7s_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu7s_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, 1, "aBFu7s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 17, hide_ull(1LL<<16), "aBFu7s_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu17ll(Test_aBFu7s_BFu0s_BFu17ll, "aBFu7s_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu1c");
    static aBFu7s_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu1c(Test_aBFu7s_BFu0s_BFu1c, "aBFu7s_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu1i");
    static aBFu7s_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu1i(Test_aBFu7s_BFu0s_BFu1i, "aBFu7s_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu1ll");
    static aBFu7s_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu1ll(Test_aBFu7s_BFu0s_BFu1ll, "aBFu7s_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu1s");
    static aBFu7s_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 1, 1, "aBFu7s_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu1s(Test_aBFu7s_BFu0s_BFu1s, "aBFu7s_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu31i");
    static aBFu7s_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu31i(Test_aBFu7s_BFu0s_BFu31i, "aBFu7s_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu31ll");
    static aBFu7s_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, 1, "aBFu7s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 31, hide_ull(1LL<<30), "aBFu7s_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu31ll(Test_aBFu7s_BFu0s_BFu31ll, "aBFu7s_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu32i");
    static aBFu7s_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu32i(Test_aBFu7s_BFu0s_BFu32i, "aBFu7s_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu32ll");
    static aBFu7s_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, 1, "aBFu7s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 32, hide_ull(1LL<<31), "aBFu7s_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu32ll(Test_aBFu7s_BFu0s_BFu32ll, "aBFu7s_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu33");
    static aBFu7s_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu7s_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, 1, "aBFu7s_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 33, hide_ull(1LL<<32), "aBFu7s_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu33(Test_aBFu7s_BFu0s_BFu33, "aBFu7s_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu7c");
    static aBFu7s_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu7c(Test_aBFu7s_BFu0s_BFu7c, "aBFu7s_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu7i");
    static aBFu7s_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu7i(Test_aBFu7s_BFu0s_BFu7i, "aBFu7s_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu7ll");
    static aBFu7s_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu7ll(Test_aBFu7s_BFu0s_BFu7ll, "aBFu7s_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu7s");
    static aBFu7s_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, 1, "aBFu7s_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu7s(Test_aBFu7s_BFu0s_BFu7s, "aBFu7s_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu8c");
    static aBFu7s_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu8c(Test_aBFu7s_BFu0s_BFu8c, "aBFu7s_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu8i");
    static aBFu7s_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu8i(Test_aBFu7s_BFu0s_BFu8i, "aBFu7s_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu8ll");
    static aBFu7s_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu8ll(Test_aBFu7s_BFu0s_BFu8ll, "aBFu7s_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu8s");
    static aBFu7s_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, 1, "aBFu7s_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 8, hide_ull(1LL<<7), "aBFu7s_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu8s(Test_aBFu7s_BFu0s_BFu8s, "aBFu7s_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu9i");
    static aBFu7s_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu9i(Test_aBFu7s_BFu0s_BFu9i, "aBFu7s_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu9ll");
    static aBFu7s_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu9ll(Test_aBFu7s_BFu0s_BFu9ll, "aBFu7s_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu7s_BFu0s_BFu9s");
    static aBFu7s_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, 1, "aBFu7s_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), ABISELECT(0,0), 9, hide_ull(1LL<<8), "aBFu7s_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_BFu9s(Test_aBFu7s_BFu0s_BFu9s, "aBFu7s_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_C()
{
  {
    init_simple_test("aBFu7s_BFu0s_C");
    static aBFu7s_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_C(Test_aBFu7s_BFu0s_C, "aBFu7s_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_D()
{
  {
    init_simple_test("aBFu7s_BFu0s_D");
    static aBFu7s_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_D(Test_aBFu7s_BFu0s_D, "aBFu7s_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_F()
{
  {
    init_simple_test("aBFu7s_BFu0s_F");
    static aBFu7s_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_F(Test_aBFu7s_BFu0s_F, "aBFu7s_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_I()
{
  {
    init_simple_test("aBFu7s_BFu0s_I");
    static aBFu7s_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_I(Test_aBFu7s_BFu0s_I, "aBFu7s_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Ip()
{
  {
    init_simple_test("aBFu7s_BFu0s_Ip");
    static aBFu7s_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Ip(Test_aBFu7s_BFu0s_Ip, "aBFu7s_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_L()
{
  {
    init_simple_test("aBFu7s_BFu0s_L");
    static aBFu7s_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_L(Test_aBFu7s_BFu0s_L, "aBFu7s_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_S()
{
  {
    init_simple_test("aBFu7s_BFu0s_S");
    static aBFu7s_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_S(Test_aBFu7s_BFu0s_S, "aBFu7s_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Uc()
{
  {
    init_simple_test("aBFu7s_BFu0s_Uc");
    static aBFu7s_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu7s_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Uc(Test_aBFu7s_BFu0s_Uc, "aBFu7s_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Ui()
{
  {
    init_simple_test("aBFu7s_BFu0s_Ui");
    static aBFu7s_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Ui(Test_aBFu7s_BFu0s_Ui, "aBFu7s_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Ul()
{
  {
    init_simple_test("aBFu7s_BFu0s_Ul");
    static aBFu7s_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Ul(Test_aBFu7s_BFu0s_Ul, "aBFu7s_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Us()
{
  {
    init_simple_test("aBFu7s_BFu0s_Us");
    static aBFu7s_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Us(Test_aBFu7s_BFu0s_Us, "aBFu7s_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu0s_Vp()
{
  {
    init_simple_test("aBFu7s_BFu0s_Vp");
    static aBFu7s_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu7s_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu0s_Vp(Test_aBFu7s_BFu0s_Vp, "aBFu7s_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu15i_BFu0c");
    static aBFu7s_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15i_BFu0c(Test_aBFu7s_BFu15i_BFu0c, "aBFu7s_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu15i_BFu0i");
    static aBFu7s_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15i_BFu0i(Test_aBFu7s_BFu15i_BFu0i, "aBFu7s_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu15i_BFu0ll");
    static aBFu7s_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15i_BFu0ll(Test_aBFu7s_BFu15i_BFu0ll, "aBFu7s_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu15i_BFu0s");
    static aBFu7s_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15i_BFu0s(Test_aBFu7s_BFu15i_BFu0s, "aBFu7s_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu15ll_BFu0c");
    static aBFu7s_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15ll_BFu0c(Test_aBFu7s_BFu15ll_BFu0c, "aBFu7s_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu15ll_BFu0i");
    static aBFu7s_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15ll_BFu0i(Test_aBFu7s_BFu15ll_BFu0i, "aBFu7s_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu15ll_BFu0ll");
    static aBFu7s_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15ll_BFu0ll(Test_aBFu7s_BFu15ll_BFu0ll, "aBFu7s_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu15ll_BFu0s");
    static aBFu7s_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15ll_BFu0s(Test_aBFu7s_BFu15ll_BFu0s, "aBFu7s_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu15s_BFu0c");
    static aBFu7s_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15s_BFu0c(Test_aBFu7s_BFu15s_BFu0c, "aBFu7s_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu15s_BFu0i");
    static aBFu7s_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15s_BFu0i(Test_aBFu7s_BFu15s_BFu0i, "aBFu7s_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu15s_BFu0ll");
    static aBFu7s_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15s_BFu0ll(Test_aBFu7s_BFu15s_BFu0ll, "aBFu7s_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu15s_BFu0s");
    static aBFu7s_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, 1, "aBFu7s_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 15, hide_ull(1LL<<14), "aBFu7s_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu15s_BFu0s(Test_aBFu7s_BFu15s_BFu0s, "aBFu7s_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu16i_BFu0c");
    static aBFu7s_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16i_BFu0c(Test_aBFu7s_BFu16i_BFu0c, "aBFu7s_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu16i_BFu0i");
    static aBFu7s_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16i_BFu0i(Test_aBFu7s_BFu16i_BFu0i, "aBFu7s_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu16i_BFu0ll");
    static aBFu7s_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16i_BFu0ll(Test_aBFu7s_BFu16i_BFu0ll, "aBFu7s_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu16i_BFu0s");
    static aBFu7s_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16i_BFu0s(Test_aBFu7s_BFu16i_BFu0s, "aBFu7s_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu16ll_BFu0c");
    static aBFu7s_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16ll_BFu0c(Test_aBFu7s_BFu16ll_BFu0c, "aBFu7s_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu16ll_BFu0i");
    static aBFu7s_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16ll_BFu0i(Test_aBFu7s_BFu16ll_BFu0i, "aBFu7s_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu16ll_BFu0ll");
    static aBFu7s_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16ll_BFu0ll(Test_aBFu7s_BFu16ll_BFu0ll, "aBFu7s_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu16ll_BFu0s");
    static aBFu7s_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16ll_BFu0s(Test_aBFu7s_BFu16ll_BFu0s, "aBFu7s_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu16s_BFu0c");
    static aBFu7s_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16s_BFu0c(Test_aBFu7s_BFu16s_BFu0c, "aBFu7s_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu16s_BFu0i");
    static aBFu7s_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16s_BFu0i(Test_aBFu7s_BFu16s_BFu0i, "aBFu7s_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu16s_BFu0ll");
    static aBFu7s_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16s_BFu0ll(Test_aBFu7s_BFu16s_BFu0ll, "aBFu7s_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu16s_BFu0s");
    static aBFu7s_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, 1, "aBFu7s_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 16, hide_ull(1LL<<15), "aBFu7s_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu16s_BFu0s(Test_aBFu7s_BFu16s_BFu0s, "aBFu7s_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu17i_BFu0c");
    static aBFu7s_BFu17i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17i_BFu0c(Test_aBFu7s_BFu17i_BFu0c, "aBFu7s_BFu17i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu17i_BFu0i");
    static aBFu7s_BFu17i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17i_BFu0i(Test_aBFu7s_BFu17i_BFu0i, "aBFu7s_BFu17i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu17i_BFu0ll");
    static aBFu7s_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17i_BFu0ll(Test_aBFu7s_BFu17i_BFu0ll, "aBFu7s_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu17i_BFu0s");
    static aBFu7s_BFu17i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17i_BFu0s(Test_aBFu7s_BFu17i_BFu0s, "aBFu7s_BFu17i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu17ll_BFu0c");
    static aBFu7s_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17ll_BFu0c(Test_aBFu7s_BFu17ll_BFu0c, "aBFu7s_BFu17ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu17ll_BFu0i");
    static aBFu7s_BFu17ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17ll_BFu0i(Test_aBFu7s_BFu17ll_BFu0i, "aBFu7s_BFu17ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu17ll_BFu0ll");
    static aBFu7s_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17ll_BFu0ll(Test_aBFu7s_BFu17ll_BFu0ll, "aBFu7s_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu17ll_BFu0s");
    static aBFu7s_BFu17ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, 1, "aBFu7s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 17, hide_ull(1LL<<16), "aBFu7s_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu17ll_BFu0s(Test_aBFu7s_BFu17ll_BFu0s, "aBFu7s_BFu17ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu1c_BFu0c");
    static aBFu7s_BFu1c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1c_BFu0c(Test_aBFu7s_BFu1c_BFu0c, "aBFu7s_BFu1c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu1c_BFu0i");
    static aBFu7s_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1c_BFu0i(Test_aBFu7s_BFu1c_BFu0i, "aBFu7s_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu1c_BFu0ll");
    static aBFu7s_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1c_BFu0ll(Test_aBFu7s_BFu1c_BFu0ll, "aBFu7s_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu1c_BFu0s");
    static aBFu7s_BFu1c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1c_BFu0s(Test_aBFu7s_BFu1c_BFu0s, "aBFu7s_BFu1c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu1i_BFu0c");
    static aBFu7s_BFu1i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1i_BFu0c(Test_aBFu7s_BFu1i_BFu0c, "aBFu7s_BFu1i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu1i_BFu0i");
    static aBFu7s_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1i_BFu0i(Test_aBFu7s_BFu1i_BFu0i, "aBFu7s_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu1i_BFu0ll");
    static aBFu7s_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1i_BFu0ll(Test_aBFu7s_BFu1i_BFu0ll, "aBFu7s_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu1i_BFu0s");
    static aBFu7s_BFu1i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1i_BFu0s(Test_aBFu7s_BFu1i_BFu0s, "aBFu7s_BFu1i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu1ll_BFu0c");
    static aBFu7s_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1ll_BFu0c(Test_aBFu7s_BFu1ll_BFu0c, "aBFu7s_BFu1ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu1ll_BFu0i");
    static aBFu7s_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1ll_BFu0i(Test_aBFu7s_BFu1ll_BFu0i, "aBFu7s_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu1ll_BFu0ll");
    static aBFu7s_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1ll_BFu0ll(Test_aBFu7s_BFu1ll_BFu0ll, "aBFu7s_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu1ll_BFu0s");
    static aBFu7s_BFu1ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1ll_BFu0s(Test_aBFu7s_BFu1ll_BFu0s, "aBFu7s_BFu1ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu1s_BFu0c");
    static aBFu7s_BFu1s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu7s_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1s_BFu0c(Test_aBFu7s_BFu1s_BFu0c, "aBFu7s_BFu1s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu1s_BFu0i");
    static aBFu7s_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1s_BFu0i(Test_aBFu7s_BFu1s_BFu0i, "aBFu7s_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu1s_BFu0ll");
    static aBFu7s_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1s_BFu0ll(Test_aBFu7s_BFu1s_BFu0ll, "aBFu7s_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu1s_BFu0s");
    static aBFu7s_BFu1s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu7s_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 1, 1, "aBFu7s_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu1s_BFu0s(Test_aBFu7s_BFu1s_BFu0s, "aBFu7s_BFu1s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu31i_BFu0c");
    static aBFu7s_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31i_BFu0c(Test_aBFu7s_BFu31i_BFu0c, "aBFu7s_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu31i_BFu0i");
    static aBFu7s_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31i_BFu0i(Test_aBFu7s_BFu31i_BFu0i, "aBFu7s_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu31i_BFu0ll");
    static aBFu7s_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31i_BFu0ll(Test_aBFu7s_BFu31i_BFu0ll, "aBFu7s_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu31i_BFu0s");
    static aBFu7s_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31i_BFu0s(Test_aBFu7s_BFu31i_BFu0s, "aBFu7s_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu31ll_BFu0c");
    static aBFu7s_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31ll_BFu0c(Test_aBFu7s_BFu31ll_BFu0c, "aBFu7s_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu31ll_BFu0i");
    static aBFu7s_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31ll_BFu0i(Test_aBFu7s_BFu31ll_BFu0i, "aBFu7s_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu31ll_BFu0ll");
    static aBFu7s_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31ll_BFu0ll(Test_aBFu7s_BFu31ll_BFu0ll, "aBFu7s_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu31ll_BFu0s");
    static aBFu7s_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, 1, "aBFu7s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 31, hide_ull(1LL<<30), "aBFu7s_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu31ll_BFu0s(Test_aBFu7s_BFu31ll_BFu0s, "aBFu7s_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu32i_BFu0c");
    static aBFu7s_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32i_BFu0c(Test_aBFu7s_BFu32i_BFu0c, "aBFu7s_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu32i_BFu0i");
    static aBFu7s_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32i_BFu0i(Test_aBFu7s_BFu32i_BFu0i, "aBFu7s_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu32i_BFu0ll");
    static aBFu7s_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32i_BFu0ll(Test_aBFu7s_BFu32i_BFu0ll, "aBFu7s_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu32i_BFu0s");
    static aBFu7s_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32i_BFu0s(Test_aBFu7s_BFu32i_BFu0s, "aBFu7s_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu32ll_BFu0c");
    static aBFu7s_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32ll_BFu0c(Test_aBFu7s_BFu32ll_BFu0c, "aBFu7s_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu32ll_BFu0i");
    static aBFu7s_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32ll_BFu0i(Test_aBFu7s_BFu32ll_BFu0i, "aBFu7s_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu32ll_BFu0ll");
    static aBFu7s_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32ll_BFu0ll(Test_aBFu7s_BFu32ll_BFu0ll, "aBFu7s_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu32ll_BFu0s");
    static aBFu7s_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, 1, "aBFu7s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 32, hide_ull(1LL<<31), "aBFu7s_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu32ll_BFu0s(Test_aBFu7s_BFu32ll_BFu0s, "aBFu7s_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu33_BFu0c");
    static aBFu7s_BFu33_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7s_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7s_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu33_BFu0c(Test_aBFu7s_BFu33_BFu0c, "aBFu7s_BFu33_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu33_BFu0i");
    static aBFu7s_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7s_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7s_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu33_BFu0i(Test_aBFu7s_BFu33_BFu0i, "aBFu7s_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu33_BFu0ll");
    static aBFu7s_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7s_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7s_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu33_BFu0ll(Test_aBFu7s_BFu33_BFu0ll, "aBFu7s_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu33_BFu0s");
    static aBFu7s_BFu33_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, 1, "aBFu7s_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 33, hide_ull(1LL<<32), "aBFu7s_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu33_BFu0s(Test_aBFu7s_BFu33_BFu0s, "aBFu7s_BFu33_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu7c_BFu0c");
    static aBFu7s_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7c_BFu0c(Test_aBFu7s_BFu7c_BFu0c, "aBFu7s_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu7c_BFu0i");
    static aBFu7s_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7c_BFu0i(Test_aBFu7s_BFu7c_BFu0i, "aBFu7s_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu7c_BFu0ll");
    static aBFu7s_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7c_BFu0ll(Test_aBFu7s_BFu7c_BFu0ll, "aBFu7s_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu7c_BFu0s");
    static aBFu7s_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7c_BFu0s(Test_aBFu7s_BFu7c_BFu0s, "aBFu7s_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu7i_BFu0c");
    static aBFu7s_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7i_BFu0c(Test_aBFu7s_BFu7i_BFu0c, "aBFu7s_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu7i_BFu0i");
    static aBFu7s_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7i_BFu0i(Test_aBFu7s_BFu7i_BFu0i, "aBFu7s_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu7i_BFu0ll");
    static aBFu7s_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7i_BFu0ll(Test_aBFu7s_BFu7i_BFu0ll, "aBFu7s_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu7i_BFu0s");
    static aBFu7s_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7i_BFu0s(Test_aBFu7s_BFu7i_BFu0s, "aBFu7s_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu7ll_BFu0c");
    static aBFu7s_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7ll_BFu0c(Test_aBFu7s_BFu7ll_BFu0c, "aBFu7s_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu7ll_BFu0i");
    static aBFu7s_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7ll_BFu0i(Test_aBFu7s_BFu7ll_BFu0i, "aBFu7s_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu7ll_BFu0ll");
    static aBFu7s_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7ll_BFu0ll(Test_aBFu7s_BFu7ll_BFu0ll, "aBFu7s_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu7ll_BFu0s");
    static aBFu7s_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7ll_BFu0s(Test_aBFu7s_BFu7ll_BFu0s, "aBFu7s_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu7s_BFu0c");
    static aBFu7s_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7s_BFu0c(Test_aBFu7s_BFu7s_BFu0c, "aBFu7s_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu7s_BFu0i");
    static aBFu7s_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7s_BFu0i(Test_aBFu7s_BFu7s_BFu0i, "aBFu7s_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu7s_BFu0ll");
    static aBFu7s_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7s_BFu0ll(Test_aBFu7s_BFu7s_BFu0ll, "aBFu7s_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu7s_BFu0s");
    static aBFu7s_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, 1, "aBFu7s_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 7, hide_ull(1LL<<6), "aBFu7s_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu7s_BFu0s(Test_aBFu7s_BFu7s_BFu0s, "aBFu7s_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu8c_BFu0c");
    static aBFu7s_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8c_BFu0c(Test_aBFu7s_BFu8c_BFu0c, "aBFu7s_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu8c_BFu0i");
    static aBFu7s_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8c_BFu0i(Test_aBFu7s_BFu8c_BFu0i, "aBFu7s_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu8c_BFu0ll");
    static aBFu7s_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8c_BFu0ll(Test_aBFu7s_BFu8c_BFu0ll, "aBFu7s_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu8c_BFu0s");
    static aBFu7s_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8c_BFu0s(Test_aBFu7s_BFu8c_BFu0s, "aBFu7s_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu8i_BFu0c");
    static aBFu7s_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8i_BFu0c(Test_aBFu7s_BFu8i_BFu0c, "aBFu7s_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu8i_BFu0i");
    static aBFu7s_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8i_BFu0i(Test_aBFu7s_BFu8i_BFu0i, "aBFu7s_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu8i_BFu0ll");
    static aBFu7s_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8i_BFu0ll(Test_aBFu7s_BFu8i_BFu0ll, "aBFu7s_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu8i_BFu0s");
    static aBFu7s_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8i_BFu0s(Test_aBFu7s_BFu8i_BFu0s, "aBFu7s_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu8ll_BFu0c");
    static aBFu7s_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8ll_BFu0c(Test_aBFu7s_BFu8ll_BFu0c, "aBFu7s_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu8ll_BFu0i");
    static aBFu7s_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8ll_BFu0i(Test_aBFu7s_BFu8ll_BFu0i, "aBFu7s_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu8ll_BFu0ll");
    static aBFu7s_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8ll_BFu0ll(Test_aBFu7s_BFu8ll_BFu0ll, "aBFu7s_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu8ll_BFu0s");
    static aBFu7s_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8ll_BFu0s(Test_aBFu7s_BFu8ll_BFu0s, "aBFu7s_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu8s_BFu0c");
    static aBFu7s_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8s_BFu0c(Test_aBFu7s_BFu8s_BFu0c, "aBFu7s_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu8s_BFu0i");
    static aBFu7s_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8s_BFu0i(Test_aBFu7s_BFu8s_BFu0i, "aBFu7s_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu8s_BFu0ll");
    static aBFu7s_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8s_BFu0ll(Test_aBFu7s_BFu8s_BFu0ll, "aBFu7s_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu8s_BFu0s");
    static aBFu7s_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, 1, "aBFu7s_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 8, hide_ull(1LL<<7), "aBFu7s_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu8s_BFu0s(Test_aBFu7s_BFu8s_BFu0s, "aBFu7s_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu9i_BFu0c");
    static aBFu7s_BFu9i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9i_BFu0c(Test_aBFu7s_BFu9i_BFu0c, "aBFu7s_BFu9i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu9i_BFu0i");
    static aBFu7s_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9i_BFu0i(Test_aBFu7s_BFu9i_BFu0i, "aBFu7s_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu9i_BFu0ll");
    static aBFu7s_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9i_BFu0ll(Test_aBFu7s_BFu9i_BFu0ll, "aBFu7s_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu9i_BFu0s");
    static aBFu7s_BFu9i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9i_BFu0s(Test_aBFu7s_BFu9i_BFu0s, "aBFu7s_BFu9i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu9ll_BFu0c");
    static aBFu7s_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9ll_BFu0c(Test_aBFu7s_BFu9ll_BFu0c, "aBFu7s_BFu9ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu9ll_BFu0i");
    static aBFu7s_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9ll_BFu0i(Test_aBFu7s_BFu9ll_BFu0i, "aBFu7s_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu9ll_BFu0ll");
    static aBFu7s_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9ll_BFu0ll(Test_aBFu7s_BFu9ll_BFu0ll, "aBFu7s_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu9ll_BFu0s");
    static aBFu7s_BFu9ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9ll_BFu0s(Test_aBFu7s_BFu9ll_BFu0s, "aBFu7s_BFu9ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu7s_BFu9s_BFu0c");
    static aBFu7s_BFu9s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9s_BFu0c(Test_aBFu7s_BFu9s_BFu0c, "aBFu7s_BFu9s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu7s_BFu9s_BFu0i");
    static aBFu7s_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9s_BFu0i(Test_aBFu7s_BFu9s_BFu0i, "aBFu7s_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu7s_BFu9s_BFu0ll");
    static aBFu7s_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9s_BFu0ll(Test_aBFu7s_BFu9s_BFu0ll, "aBFu7s_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu7s_BFu9s_BFu0s");
    static aBFu7s_BFu9s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, 1, "aBFu7s_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 0, 7, 9, hide_ull(1LL<<8), "aBFu7s_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu7s_BFu9s_BFu0s(Test_aBFu7s_BFu9s_BFu0s, "aBFu7s_BFu9s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_C_BFu0c()
{
  {
    init_simple_test("aBFu7s_C_BFu0c");
    static aBFu7s_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_C_BFu0c(Test_aBFu7s_C_BFu0c, "aBFu7s_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_C_BFu0i()
{
  {
    init_simple_test("aBFu7s_C_BFu0i");
    static aBFu7s_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_C_BFu0i(Test_aBFu7s_C_BFu0i, "aBFu7s_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_C_BFu0ll()
{
  {
    init_simple_test("aBFu7s_C_BFu0ll");
    static aBFu7s_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_C_BFu0ll(Test_aBFu7s_C_BFu0ll, "aBFu7s_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_C_BFu0s()
{
  {
    init_simple_test("aBFu7s_C_BFu0s");
    static aBFu7s_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_C_BFu0s(Test_aBFu7s_C_BFu0s, "aBFu7s_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_D_BFu0c()
{
  {
    init_simple_test("aBFu7s_D_BFu0c");
    static aBFu7s_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_D_BFu0c(Test_aBFu7s_D_BFu0c, "aBFu7s_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_D_BFu0i()
{
  {
    init_simple_test("aBFu7s_D_BFu0i");
    static aBFu7s_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_D_BFu0i(Test_aBFu7s_D_BFu0i, "aBFu7s_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_D_BFu0ll()
{
  {
    init_simple_test("aBFu7s_D_BFu0ll");
    static aBFu7s_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_D_BFu0ll(Test_aBFu7s_D_BFu0ll, "aBFu7s_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_D_BFu0s()
{
  {
    init_simple_test("aBFu7s_D_BFu0s");
    static aBFu7s_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_D_BFu0s(Test_aBFu7s_D_BFu0s, "aBFu7s_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_F_BFu0c()
{
  {
    init_simple_test("aBFu7s_F_BFu0c");
    static aBFu7s_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_F_BFu0c(Test_aBFu7s_F_BFu0c, "aBFu7s_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_F_BFu0i()
{
  {
    init_simple_test("aBFu7s_F_BFu0i");
    static aBFu7s_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_F_BFu0i(Test_aBFu7s_F_BFu0i, "aBFu7s_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_F_BFu0ll()
{
  {
    init_simple_test("aBFu7s_F_BFu0ll");
    static aBFu7s_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_F_BFu0ll(Test_aBFu7s_F_BFu0ll, "aBFu7s_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_F_BFu0s()
{
  {
    init_simple_test("aBFu7s_F_BFu0s");
    static aBFu7s_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_F_BFu0s(Test_aBFu7s_F_BFu0s, "aBFu7s_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_I_BFu0c()
{
  {
    init_simple_test("aBFu7s_I_BFu0c");
    static aBFu7s_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_I_BFu0c(Test_aBFu7s_I_BFu0c, "aBFu7s_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_I_BFu0i()
{
  {
    init_simple_test("aBFu7s_I_BFu0i");
    static aBFu7s_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_I_BFu0i(Test_aBFu7s_I_BFu0i, "aBFu7s_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_I_BFu0ll()
{
  {
    init_simple_test("aBFu7s_I_BFu0ll");
    static aBFu7s_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_I_BFu0ll(Test_aBFu7s_I_BFu0ll, "aBFu7s_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_I_BFu0s()
{
  {
    init_simple_test("aBFu7s_I_BFu0s");
    static aBFu7s_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_I_BFu0s(Test_aBFu7s_I_BFu0s, "aBFu7s_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ip_BFu0c()
{
  {
    init_simple_test("aBFu7s_Ip_BFu0c");
    static aBFu7s_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ip_BFu0c(Test_aBFu7s_Ip_BFu0c, "aBFu7s_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ip_BFu0i()
{
  {
    init_simple_test("aBFu7s_Ip_BFu0i");
    static aBFu7s_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ip_BFu0i(Test_aBFu7s_Ip_BFu0i, "aBFu7s_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Ip_BFu0ll");
    static aBFu7s_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7s_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ip_BFu0ll(Test_aBFu7s_Ip_BFu0ll, "aBFu7s_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ip_BFu0s()
{
  {
    init_simple_test("aBFu7s_Ip_BFu0s");
    static aBFu7s_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ip_BFu0s(Test_aBFu7s_Ip_BFu0s, "aBFu7s_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_L_BFu0c()
{
  {
    init_simple_test("aBFu7s_L_BFu0c");
    static aBFu7s_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_L_BFu0c(Test_aBFu7s_L_BFu0c, "aBFu7s_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_L_BFu0i()
{
  {
    init_simple_test("aBFu7s_L_BFu0i");
    static aBFu7s_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_L_BFu0i(Test_aBFu7s_L_BFu0i, "aBFu7s_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_L_BFu0ll()
{
  {
    init_simple_test("aBFu7s_L_BFu0ll");
    static aBFu7s_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_L_BFu0ll(Test_aBFu7s_L_BFu0ll, "aBFu7s_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_L_BFu0s()
{
  {
    init_simple_test("aBFu7s_L_BFu0s");
    static aBFu7s_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_L_BFu0s(Test_aBFu7s_L_BFu0s, "aBFu7s_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_S_BFu0c()
{
  {
    init_simple_test("aBFu7s_S_BFu0c");
    static aBFu7s_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_S_BFu0c(Test_aBFu7s_S_BFu0c, "aBFu7s_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_S_BFu0i()
{
  {
    init_simple_test("aBFu7s_S_BFu0i");
    static aBFu7s_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_S_BFu0i(Test_aBFu7s_S_BFu0i, "aBFu7s_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_S_BFu0ll()
{
  {
    init_simple_test("aBFu7s_S_BFu0ll");
    static aBFu7s_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_S_BFu0ll(Test_aBFu7s_S_BFu0ll, "aBFu7s_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_S_BFu0s()
{
  {
    init_simple_test("aBFu7s_S_BFu0s");
    static aBFu7s_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_S_BFu0s(Test_aBFu7s_S_BFu0s, "aBFu7s_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Uc_BFu0c()
{
  {
    init_simple_test("aBFu7s_Uc_BFu0c");
    static aBFu7s_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Uc_BFu0c(Test_aBFu7s_Uc_BFu0c, "aBFu7s_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Uc_BFu0i()
{
  {
    init_simple_test("aBFu7s_Uc_BFu0i");
    static aBFu7s_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Uc_BFu0i(Test_aBFu7s_Uc_BFu0i, "aBFu7s_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Uc_BFu0ll");
    static aBFu7s_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Uc_BFu0ll(Test_aBFu7s_Uc_BFu0ll, "aBFu7s_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Uc_BFu0s()
{
  {
    init_simple_test("aBFu7s_Uc_BFu0s");
    static aBFu7s_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu7s_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Uc_BFu0s(Test_aBFu7s_Uc_BFu0s, "aBFu7s_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ui_BFu0c()
{
  {
    init_simple_test("aBFu7s_Ui_BFu0c");
    static aBFu7s_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu7s_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ui_BFu0c(Test_aBFu7s_Ui_BFu0c, "aBFu7s_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ui_BFu0i()
{
  {
    init_simple_test("aBFu7s_Ui_BFu0i");
    static aBFu7s_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ui_BFu0i(Test_aBFu7s_Ui_BFu0i, "aBFu7s_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Ui_BFu0ll");
    static aBFu7s_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu7s_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ui_BFu0ll(Test_aBFu7s_Ui_BFu0ll, "aBFu7s_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ui_BFu0s()
{
  {
    init_simple_test("aBFu7s_Ui_BFu0s");
    static aBFu7s_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu7s_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ui_BFu0s(Test_aBFu7s_Ui_BFu0s, "aBFu7s_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ul_BFu0c()
{
  {
    init_simple_test("aBFu7s_Ul_BFu0c");
    static aBFu7s_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu7s_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ul_BFu0c(Test_aBFu7s_Ul_BFu0c, "aBFu7s_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ul_BFu0i()
{
  {
    init_simple_test("aBFu7s_Ul_BFu0i");
    static aBFu7s_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu7s_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ul_BFu0i(Test_aBFu7s_Ul_BFu0i, "aBFu7s_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Ul_BFu0ll");
    static aBFu7s_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu7s_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ul_BFu0ll(Test_aBFu7s_Ul_BFu0ll, "aBFu7s_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Ul_BFu0s()
{
  {
    init_simple_test("aBFu7s_Ul_BFu0s");
    static aBFu7s_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu7s_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Ul_BFu0s(Test_aBFu7s_Ul_BFu0s, "aBFu7s_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Us_BFu0c()
{
  {
    init_simple_test("aBFu7s_Us_BFu0c");
    static aBFu7s_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu7s_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Us_BFu0c(Test_aBFu7s_Us_BFu0c, "aBFu7s_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Us_BFu0i()
{
  {
    init_simple_test("aBFu7s_Us_BFu0i");
    static aBFu7s_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Us_BFu0i(Test_aBFu7s_Us_BFu0i, "aBFu7s_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Us_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Us_BFu0ll");
    static aBFu7s_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu7s_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Us_BFu0ll(Test_aBFu7s_Us_BFu0ll, "aBFu7s_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Us_BFu0s()
{
  {
    init_simple_test("aBFu7s_Us_BFu0s");
    static aBFu7s_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu7s_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Us_BFu0s(Test_aBFu7s_Us_BFu0s, "aBFu7s_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Vp_BFu0c()
{
  {
    init_simple_test("aBFu7s_Vp_BFu0c");
    static aBFu7s_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu7s_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu7s_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Vp_BFu0c(Test_aBFu7s_Vp_BFu0c, "aBFu7s_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Vp_BFu0i()
{
  {
    init_simple_test("aBFu7s_Vp_BFu0i");
    static aBFu7s_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu7s_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu7s_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Vp_BFu0i(Test_aBFu7s_Vp_BFu0i, "aBFu7s_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu7s_Vp_BFu0ll");
    static aBFu7s_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu7s_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu7s_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Vp_BFu0ll(Test_aBFu7s_Vp_BFu0ll, "aBFu7s_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu7s_Vp_BFu0s()
{
  {
    init_simple_test("aBFu7s_Vp_BFu0s");
    static aBFu7s_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu7s_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu7s_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 7, 1, "aBFu7s_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 7, hide_ull(1LL<<6), "aBFu7s_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu7s_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu7s_Vp_BFu0s(Test_aBFu7s_Vp_BFu0s, "aBFu7s_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu0c");
    static aBFu8c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c(Test_aBFu8c_BFu0c, "aBFu8c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu0c");
    static aBFu8c_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8c_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu0c(Test_aBFu8c_BFu0c_BFu0c, "aBFu8c_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu0i");
    static aBFu8c_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu0i(Test_aBFu8c_BFu0c_BFu0i, "aBFu8c_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu0ll");
    static aBFu8c_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu0ll(Test_aBFu8c_BFu0c_BFu0ll, "aBFu8c_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu0s");
    static aBFu8c_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8c_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu0s(Test_aBFu8c_BFu0c_BFu0s, "aBFu8c_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu15i");
    static aBFu8c_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu15i(Test_aBFu8c_BFu0c_BFu15i, "aBFu8c_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu15ll");
    static aBFu8c_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu15ll(Test_aBFu8c_BFu0c_BFu15ll, "aBFu8c_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu15s");
    static aBFu8c_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu15s(Test_aBFu8c_BFu0c_BFu15s, "aBFu8c_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu16i");
    static aBFu8c_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu16i(Test_aBFu8c_BFu0c_BFu16i, "aBFu8c_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu16ll");
    static aBFu8c_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu16ll(Test_aBFu8c_BFu0c_BFu16ll, "aBFu8c_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu16s");
    static aBFu8c_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu16s(Test_aBFu8c_BFu0c_BFu16s, "aBFu8c_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu17i");
    static aBFu8c_BFu0c_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu17i(Test_aBFu8c_BFu0c_BFu17i, "aBFu8c_BFu0c_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu17ll");
    static aBFu8c_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu17ll(Test_aBFu8c_BFu0c_BFu17ll, "aBFu8c_BFu0c_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu1c");
    static aBFu8c_BFu0c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu1c(Test_aBFu8c_BFu0c_BFu1c, "aBFu8c_BFu0c_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu1i");
    static aBFu8c_BFu0c_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu1i(Test_aBFu8c_BFu0c_BFu1i, "aBFu8c_BFu0c_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu1ll");
    static aBFu8c_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu1ll(Test_aBFu8c_BFu0c_BFu1ll, "aBFu8c_BFu0c_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu1s");
    static aBFu8c_BFu0c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu1s(Test_aBFu8c_BFu0c_BFu1s, "aBFu8c_BFu0c_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu31i");
    static aBFu8c_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu31i(Test_aBFu8c_BFu0c_BFu31i, "aBFu8c_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu31ll");
    static aBFu8c_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu31ll(Test_aBFu8c_BFu0c_BFu31ll, "aBFu8c_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu32i");
    static aBFu8c_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu32i(Test_aBFu8c_BFu0c_BFu32i, "aBFu8c_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu32ll");
    static aBFu8c_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu32ll(Test_aBFu8c_BFu0c_BFu32ll, "aBFu8c_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu33");
    static aBFu8c_BFu0c_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8c_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8c_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu33(Test_aBFu8c_BFu0c_BFu33, "aBFu8c_BFu0c_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu7c");
    static aBFu8c_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu7c(Test_aBFu8c_BFu0c_BFu7c, "aBFu8c_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu7i");
    static aBFu8c_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu7i(Test_aBFu8c_BFu0c_BFu7i, "aBFu8c_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu7ll");
    static aBFu8c_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu7ll(Test_aBFu8c_BFu0c_BFu7ll, "aBFu8c_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu7s");
    static aBFu8c_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu7s(Test_aBFu8c_BFu0c_BFu7s, "aBFu8c_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu8c");
    static aBFu8c_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu8c(Test_aBFu8c_BFu0c_BFu8c, "aBFu8c_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu8i");
    static aBFu8c_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu8i(Test_aBFu8c_BFu0c_BFu8i, "aBFu8c_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu8ll");
    static aBFu8c_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu8ll(Test_aBFu8c_BFu0c_BFu8ll, "aBFu8c_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu8s");
    static aBFu8c_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu8s(Test_aBFu8c_BFu0c_BFu8s, "aBFu8c_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu9i");
    static aBFu8c_BFu0c_BFu9i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu9i(Test_aBFu8c_BFu0c_BFu9i, "aBFu8c_BFu0c_BFu9i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu9ll");
    static aBFu8c_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu9ll(Test_aBFu8c_BFu0c_BFu9ll, "aBFu8c_BFu0c_BFu9ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu8c_BFu0c_BFu9s");
    static aBFu8c_BFu0c_BFu9s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_BFu9s(Test_aBFu8c_BFu0c_BFu9s, "aBFu8c_BFu0c_BFu9s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_C()
{
  {
    init_simple_test("aBFu8c_BFu0c_C");
    static aBFu8c_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_C(Test_aBFu8c_BFu0c_C, "aBFu8c_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_D()
{
  {
    init_simple_test("aBFu8c_BFu0c_D");
    static aBFu8c_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_D(Test_aBFu8c_BFu0c_D, "aBFu8c_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_F()
{
  {
    init_simple_test("aBFu8c_BFu0c_F");
    static aBFu8c_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_F(Test_aBFu8c_BFu0c_F, "aBFu8c_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_I()
{
  {
    init_simple_test("aBFu8c_BFu0c_I");
    static aBFu8c_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_I(Test_aBFu8c_BFu0c_I, "aBFu8c_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Ip()
{
  {
    init_simple_test("aBFu8c_BFu0c_Ip");
    static aBFu8c_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Ip(Test_aBFu8c_BFu0c_Ip, "aBFu8c_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_L()
{
  {
    init_simple_test("aBFu8c_BFu0c_L");
    static aBFu8c_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_L(Test_aBFu8c_BFu0c_L, "aBFu8c_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_S()
{
  {
    init_simple_test("aBFu8c_BFu0c_S");
    static aBFu8c_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_S(Test_aBFu8c_BFu0c_S, "aBFu8c_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Uc()
{
  {
    init_simple_test("aBFu8c_BFu0c_Uc");
    static aBFu8c_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Uc(Test_aBFu8c_BFu0c_Uc, "aBFu8c_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Ui()
{
  {
    init_simple_test("aBFu8c_BFu0c_Ui");
    static aBFu8c_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Ui(Test_aBFu8c_BFu0c_Ui, "aBFu8c_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Ul()
{
  {
    init_simple_test("aBFu8c_BFu0c_Ul");
    static aBFu8c_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Ul(Test_aBFu8c_BFu0c_Ul, "aBFu8c_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Us()
{
  {
    init_simple_test("aBFu8c_BFu0c_Us");
    static aBFu8c_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Us(Test_aBFu8c_BFu0c_Us, "aBFu8c_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0c_Vp()
{
  {
    init_simple_test("aBFu8c_BFu0c_Vp");
    static aBFu8c_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu8c_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0c_Vp(Test_aBFu8c_BFu0c_Vp, "aBFu8c_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu0i");
    static aBFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i(Test_aBFu8c_BFu0i, "aBFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu0c");
    static aBFu8c_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu0c(Test_aBFu8c_BFu0i_BFu0c, "aBFu8c_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu0i");
    static aBFu8c_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu0i(Test_aBFu8c_BFu0i_BFu0i, "aBFu8c_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu0ll");
    static aBFu8c_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu0ll(Test_aBFu8c_BFu0i_BFu0ll, "aBFu8c_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu0s");
    static aBFu8c_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu0s(Test_aBFu8c_BFu0i_BFu0s, "aBFu8c_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu15i");
    static aBFu8c_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8c_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu15i(Test_aBFu8c_BFu0i_BFu15i, "aBFu8c_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu15ll");
    static aBFu8c_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8c_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu15ll(Test_aBFu8c_BFu0i_BFu15ll, "aBFu8c_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu15s");
    static aBFu8c_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8c_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu15s(Test_aBFu8c_BFu0i_BFu15s, "aBFu8c_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu16i");
    static aBFu8c_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8c_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu16i(Test_aBFu8c_BFu0i_BFu16i, "aBFu8c_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu16ll");
    static aBFu8c_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8c_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu16ll(Test_aBFu8c_BFu0i_BFu16ll, "aBFu8c_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu16s");
    static aBFu8c_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8c_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu16s(Test_aBFu8c_BFu0i_BFu16s, "aBFu8c_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu17i");
    static aBFu8c_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8c_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8c_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu17i(Test_aBFu8c_BFu0i_BFu17i, "aBFu8c_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu17ll");
    static aBFu8c_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8c_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8c_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu17ll(Test_aBFu8c_BFu0i_BFu17ll, "aBFu8c_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu1c");
    static aBFu8c_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8c_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu1c(Test_aBFu8c_BFu0i_BFu1c, "aBFu8c_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu1i");
    static aBFu8c_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8c_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu1i(Test_aBFu8c_BFu0i_BFu1i, "aBFu8c_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu1ll");
    static aBFu8c_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8c_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu1ll(Test_aBFu8c_BFu0i_BFu1ll, "aBFu8c_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu1s");
    static aBFu8c_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8c_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu1s(Test_aBFu8c_BFu0i_BFu1s, "aBFu8c_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu31i");
    static aBFu8c_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8c_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu31i(Test_aBFu8c_BFu0i_BFu31i, "aBFu8c_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu31ll");
    static aBFu8c_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8c_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu31ll(Test_aBFu8c_BFu0i_BFu31ll, "aBFu8c_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu32i");
    static aBFu8c_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8c_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu32i(Test_aBFu8c_BFu0i_BFu32i, "aBFu8c_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu32ll");
    static aBFu8c_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8c_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu32ll(Test_aBFu8c_BFu0i_BFu32ll, "aBFu8c_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu33");
    static aBFu8c_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu8c_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, 1, "aBFu8c_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu33(Test_aBFu8c_BFu0i_BFu33, "aBFu8c_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu7c");
    static aBFu8c_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8c_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu7c(Test_aBFu8c_BFu0i_BFu7c, "aBFu8c_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu7i");
    static aBFu8c_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8c_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu7i(Test_aBFu8c_BFu0i_BFu7i, "aBFu8c_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu7ll");
    static aBFu8c_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8c_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu7ll(Test_aBFu8c_BFu0i_BFu7ll, "aBFu8c_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu7s");
    static aBFu8c_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8c_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu7s(Test_aBFu8c_BFu0i_BFu7s, "aBFu8c_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu8c");
    static aBFu8c_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8c_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu8c(Test_aBFu8c_BFu0i_BFu8c, "aBFu8c_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu8i");
    static aBFu8c_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8c_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu8i(Test_aBFu8c_BFu0i_BFu8i, "aBFu8c_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu8ll");
    static aBFu8c_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8c_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu8ll(Test_aBFu8c_BFu0i_BFu8ll, "aBFu8c_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu8s");
    static aBFu8c_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8c_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu8s(Test_aBFu8c_BFu0i_BFu8s, "aBFu8c_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu9i");
    static aBFu8c_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8c_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu9i(Test_aBFu8c_BFu0i_BFu9i, "aBFu8c_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu9ll");
    static aBFu8c_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8c_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu9ll(Test_aBFu8c_BFu0i_BFu9ll, "aBFu8c_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu8c_BFu0i_BFu9s");
    static aBFu8c_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8c_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_BFu9s(Test_aBFu8c_BFu0i_BFu9s, "aBFu8c_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_C()
{
  {
    init_simple_test("aBFu8c_BFu0i_C");
    static aBFu8c_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_C(Test_aBFu8c_BFu0i_C, "aBFu8c_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_D()
{
  {
    init_simple_test("aBFu8c_BFu0i_D");
    static aBFu8c_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_D(Test_aBFu8c_BFu0i_D, "aBFu8c_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_F()
{
  {
    init_simple_test("aBFu8c_BFu0i_F");
    static aBFu8c_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_F(Test_aBFu8c_BFu0i_F, "aBFu8c_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_I()
{
  {
    init_simple_test("aBFu8c_BFu0i_I");
    static aBFu8c_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_I(Test_aBFu8c_BFu0i_I, "aBFu8c_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Ip()
{
  {
    init_simple_test("aBFu8c_BFu0i_Ip");
    static aBFu8c_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Ip(Test_aBFu8c_BFu0i_Ip, "aBFu8c_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_L()
{
  {
    init_simple_test("aBFu8c_BFu0i_L");
    static aBFu8c_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_L(Test_aBFu8c_BFu0i_L, "aBFu8c_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_S()
{
  {
    init_simple_test("aBFu8c_BFu0i_S");
    static aBFu8c_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_S(Test_aBFu8c_BFu0i_S, "aBFu8c_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Uc()
{
  {
    init_simple_test("aBFu8c_BFu0i_Uc");
    static aBFu8c_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Uc(Test_aBFu8c_BFu0i_Uc, "aBFu8c_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Ui()
{
  {
    init_simple_test("aBFu8c_BFu0i_Ui");
    static aBFu8c_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Ui(Test_aBFu8c_BFu0i_Ui, "aBFu8c_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Ul()
{
  {
    init_simple_test("aBFu8c_BFu0i_Ul");
    static aBFu8c_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Ul(Test_aBFu8c_BFu0i_Ul, "aBFu8c_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Us()
{
  {
    init_simple_test("aBFu8c_BFu0i_Us");
    static aBFu8c_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Us(Test_aBFu8c_BFu0i_Us, "aBFu8c_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0i_Vp()
{
  {
    init_simple_test("aBFu8c_BFu0i_Vp");
    static aBFu8c_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8c_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0i_Vp(Test_aBFu8c_BFu0i_Vp, "aBFu8c_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll");
    static aBFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll(Test_aBFu8c_BFu0ll, "aBFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu0c");
    static aBFu8c_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu0c(Test_aBFu8c_BFu0ll_BFu0c, "aBFu8c_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu0i");
    static aBFu8c_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu0i(Test_aBFu8c_BFu0ll_BFu0i, "aBFu8c_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu0ll");
    static aBFu8c_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu0ll(Test_aBFu8c_BFu0ll_BFu0ll, "aBFu8c_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu0s");
    static aBFu8c_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu0s(Test_aBFu8c_BFu0ll_BFu0s, "aBFu8c_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu15i");
    static aBFu8c_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8c_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu15i(Test_aBFu8c_BFu0ll_BFu15i, "aBFu8c_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu15ll");
    static aBFu8c_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8c_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu15ll(Test_aBFu8c_BFu0ll_BFu15ll, "aBFu8c_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu15s");
    static aBFu8c_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8c_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu15s(Test_aBFu8c_BFu0ll_BFu15s, "aBFu8c_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu16i");
    static aBFu8c_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8c_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu16i(Test_aBFu8c_BFu0ll_BFu16i, "aBFu8c_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu16ll");
    static aBFu8c_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8c_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu16ll(Test_aBFu8c_BFu0ll_BFu16ll, "aBFu8c_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu16s");
    static aBFu8c_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8c_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu16s(Test_aBFu8c_BFu0ll_BFu16s, "aBFu8c_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu17i");
    static aBFu8c_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8c_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8c_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu17i(Test_aBFu8c_BFu0ll_BFu17i, "aBFu8c_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu17ll");
    static aBFu8c_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8c_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8c_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu17ll(Test_aBFu8c_BFu0ll_BFu17ll, "aBFu8c_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu1c");
    static aBFu8c_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8c_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu1c(Test_aBFu8c_BFu0ll_BFu1c, "aBFu8c_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu1i");
    static aBFu8c_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8c_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu1i(Test_aBFu8c_BFu0ll_BFu1i, "aBFu8c_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu1ll");
    static aBFu8c_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8c_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu1ll(Test_aBFu8c_BFu0ll_BFu1ll, "aBFu8c_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu1s");
    static aBFu8c_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8c_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu1s(Test_aBFu8c_BFu0ll_BFu1s, "aBFu8c_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu31i");
    static aBFu8c_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8c_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu31i(Test_aBFu8c_BFu0ll_BFu31i, "aBFu8c_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu31ll");
    static aBFu8c_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8c_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu31ll(Test_aBFu8c_BFu0ll_BFu31ll, "aBFu8c_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu32i");
    static aBFu8c_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8c_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu32i(Test_aBFu8c_BFu0ll_BFu32i, "aBFu8c_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu32ll");
    static aBFu8c_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8c_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu32ll(Test_aBFu8c_BFu0ll_BFu32ll, "aBFu8c_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu33");
    static aBFu8c_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu8c_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aBFu8c_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu33(Test_aBFu8c_BFu0ll_BFu33, "aBFu8c_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu7c");
    static aBFu8c_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8c_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu7c(Test_aBFu8c_BFu0ll_BFu7c, "aBFu8c_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu7i");
    static aBFu8c_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8c_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu7i(Test_aBFu8c_BFu0ll_BFu7i, "aBFu8c_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu7ll");
    static aBFu8c_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8c_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu7ll(Test_aBFu8c_BFu0ll_BFu7ll, "aBFu8c_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu7s");
    static aBFu8c_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8c_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu7s(Test_aBFu8c_BFu0ll_BFu7s, "aBFu8c_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu8c");
    static aBFu8c_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8c_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu8c(Test_aBFu8c_BFu0ll_BFu8c, "aBFu8c_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu8i");
    static aBFu8c_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8c_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu8i(Test_aBFu8c_BFu0ll_BFu8i, "aBFu8c_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu8ll");
    static aBFu8c_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8c_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu8ll(Test_aBFu8c_BFu0ll_BFu8ll, "aBFu8c_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu8s");
    static aBFu8c_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8c_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu8s(Test_aBFu8c_BFu0ll_BFu8s, "aBFu8c_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu9i");
    static aBFu8c_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8c_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu9i(Test_aBFu8c_BFu0ll_BFu9i, "aBFu8c_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu9ll");
    static aBFu8c_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8c_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu9ll(Test_aBFu8c_BFu0ll_BFu9ll, "aBFu8c_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu8c_BFu0ll_BFu9s");
    static aBFu8c_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8c_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_BFu9s(Test_aBFu8c_BFu0ll_BFu9s, "aBFu8c_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_C()
{
  {
    init_simple_test("aBFu8c_BFu0ll_C");
    static aBFu8c_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_C(Test_aBFu8c_BFu0ll_C, "aBFu8c_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_D()
{
  {
    init_simple_test("aBFu8c_BFu0ll_D");
    static aBFu8c_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_D(Test_aBFu8c_BFu0ll_D, "aBFu8c_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_F()
{
  {
    init_simple_test("aBFu8c_BFu0ll_F");
    static aBFu8c_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_F(Test_aBFu8c_BFu0ll_F, "aBFu8c_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_I()
{
  {
    init_simple_test("aBFu8c_BFu0ll_I");
    static aBFu8c_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_I(Test_aBFu8c_BFu0ll_I, "aBFu8c_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Ip");
    static aBFu8c_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8c_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Ip(Test_aBFu8c_BFu0ll_Ip, "aBFu8c_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_L()
{
  {
    init_simple_test("aBFu8c_BFu0ll_L");
    static aBFu8c_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_L(Test_aBFu8c_BFu0ll_L, "aBFu8c_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_S()
{
  {
    init_simple_test("aBFu8c_BFu0ll_S");
    static aBFu8c_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_S(Test_aBFu8c_BFu0ll_S, "aBFu8c_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Uc");
    static aBFu8c_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Uc(Test_aBFu8c_BFu0ll_Uc, "aBFu8c_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Ui");
    static aBFu8c_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Ui(Test_aBFu8c_BFu0ll_Ui, "aBFu8c_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Ul");
    static aBFu8c_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Ul(Test_aBFu8c_BFu0ll_Ul, "aBFu8c_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Us()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Us");
    static aBFu8c_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Us(Test_aBFu8c_BFu0ll_Us, "aBFu8c_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu8c_BFu0ll_Vp");
    static aBFu8c_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8c_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8c_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0ll_Vp(Test_aBFu8c_BFu0ll_Vp, "aBFu8c_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu0s");
    static aBFu8c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s(Test_aBFu8c_BFu0s, "aBFu8c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu0c");
    static aBFu8c_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8c_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu0c(Test_aBFu8c_BFu0s_BFu0c, "aBFu8c_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu0i");
    static aBFu8c_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu0i(Test_aBFu8c_BFu0s_BFu0i, "aBFu8c_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu0ll");
    static aBFu8c_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu0ll(Test_aBFu8c_BFu0s_BFu0ll, "aBFu8c_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu0s");
    static aBFu8c_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8c_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu0s(Test_aBFu8c_BFu0s_BFu0s, "aBFu8c_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu15i");
    static aBFu8c_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8c_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu15i(Test_aBFu8c_BFu0s_BFu15i, "aBFu8c_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu15ll");
    static aBFu8c_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8c_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu15ll(Test_aBFu8c_BFu0s_BFu15ll, "aBFu8c_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu15s");
    static aBFu8c_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8c_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu15s(Test_aBFu8c_BFu0s_BFu15s, "aBFu8c_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu16i");
    static aBFu8c_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8c_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu16i(Test_aBFu8c_BFu0s_BFu16i, "aBFu8c_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu16ll");
    static aBFu8c_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8c_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu16ll(Test_aBFu8c_BFu0s_BFu16ll, "aBFu8c_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu16s");
    static aBFu8c_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8c_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu16s(Test_aBFu8c_BFu0s_BFu16s, "aBFu8c_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu17i");
    static aBFu8c_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8c_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu17i(Test_aBFu8c_BFu0s_BFu17i, "aBFu8c_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu17ll");
    static aBFu8c_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8c_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8c_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu17ll(Test_aBFu8c_BFu0s_BFu17ll, "aBFu8c_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu1c");
    static aBFu8c_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8c_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu1c(Test_aBFu8c_BFu0s_BFu1c, "aBFu8c_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu1i");
    static aBFu8c_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8c_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu1i(Test_aBFu8c_BFu0s_BFu1i, "aBFu8c_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu1ll");
    static aBFu8c_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8c_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu1ll(Test_aBFu8c_BFu0s_BFu1ll, "aBFu8c_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu1s");
    static aBFu8c_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8c_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu1s(Test_aBFu8c_BFu0s_BFu1s, "aBFu8c_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu31i");
    static aBFu8c_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8c_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu31i(Test_aBFu8c_BFu0s_BFu31i, "aBFu8c_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu31ll");
    static aBFu8c_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8c_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu31ll(Test_aBFu8c_BFu0s_BFu31ll, "aBFu8c_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu32i");
    static aBFu8c_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8c_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu32i(Test_aBFu8c_BFu0s_BFu32i, "aBFu8c_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu32ll");
    static aBFu8c_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8c_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu32ll(Test_aBFu8c_BFu0s_BFu32ll, "aBFu8c_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu33");
    static aBFu8c_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8c_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, 1, "aBFu8c_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu33(Test_aBFu8c_BFu0s_BFu33, "aBFu8c_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu7c");
    static aBFu8c_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8c_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu7c(Test_aBFu8c_BFu0s_BFu7c, "aBFu8c_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu7i");
    static aBFu8c_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8c_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu7i(Test_aBFu8c_BFu0s_BFu7i, "aBFu8c_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu7ll");
    static aBFu8c_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8c_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu7ll(Test_aBFu8c_BFu0s_BFu7ll, "aBFu8c_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu7s");
    static aBFu8c_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8c_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu7s(Test_aBFu8c_BFu0s_BFu7s, "aBFu8c_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu8c");
    static aBFu8c_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8c_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu8c(Test_aBFu8c_BFu0s_BFu8c, "aBFu8c_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu8i");
    static aBFu8c_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8c_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu8i(Test_aBFu8c_BFu0s_BFu8i, "aBFu8c_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu8ll");
    static aBFu8c_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8c_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu8ll(Test_aBFu8c_BFu0s_BFu8ll, "aBFu8c_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu8s");
    static aBFu8c_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8c_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu8s(Test_aBFu8c_BFu0s_BFu8s, "aBFu8c_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu9i");
    static aBFu8c_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8c_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu9i(Test_aBFu8c_BFu0s_BFu9i, "aBFu8c_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu9ll");
    static aBFu8c_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8c_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu9ll(Test_aBFu8c_BFu0s_BFu9ll, "aBFu8c_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu8c_BFu0s_BFu9s");
    static aBFu8c_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8c_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_BFu9s(Test_aBFu8c_BFu0s_BFu9s, "aBFu8c_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_C()
{
  {
    init_simple_test("aBFu8c_BFu0s_C");
    static aBFu8c_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_C(Test_aBFu8c_BFu0s_C, "aBFu8c_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_D()
{
  {
    init_simple_test("aBFu8c_BFu0s_D");
    static aBFu8c_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_D(Test_aBFu8c_BFu0s_D, "aBFu8c_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_F()
{
  {
    init_simple_test("aBFu8c_BFu0s_F");
    static aBFu8c_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_F(Test_aBFu8c_BFu0s_F, "aBFu8c_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_I()
{
  {
    init_simple_test("aBFu8c_BFu0s_I");
    static aBFu8c_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_I(Test_aBFu8c_BFu0s_I, "aBFu8c_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Ip()
{
  {
    init_simple_test("aBFu8c_BFu0s_Ip");
    static aBFu8c_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Ip(Test_aBFu8c_BFu0s_Ip, "aBFu8c_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_L()
{
  {
    init_simple_test("aBFu8c_BFu0s_L");
    static aBFu8c_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_L(Test_aBFu8c_BFu0s_L, "aBFu8c_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_S()
{
  {
    init_simple_test("aBFu8c_BFu0s_S");
    static aBFu8c_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_S(Test_aBFu8c_BFu0s_S, "aBFu8c_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Uc()
{
  {
    init_simple_test("aBFu8c_BFu0s_Uc");
    static aBFu8c_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8c_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Uc(Test_aBFu8c_BFu0s_Uc, "aBFu8c_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Ui()
{
  {
    init_simple_test("aBFu8c_BFu0s_Ui");
    static aBFu8c_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Ui(Test_aBFu8c_BFu0s_Ui, "aBFu8c_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Ul()
{
  {
    init_simple_test("aBFu8c_BFu0s_Ul");
    static aBFu8c_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Ul(Test_aBFu8c_BFu0s_Ul, "aBFu8c_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Us()
{
  {
    init_simple_test("aBFu8c_BFu0s_Us");
    static aBFu8c_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Us(Test_aBFu8c_BFu0s_Us, "aBFu8c_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu0s_Vp()
{
  {
    init_simple_test("aBFu8c_BFu0s_Vp");
    static aBFu8c_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8c_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu0s_Vp(Test_aBFu8c_BFu0s_Vp, "aBFu8c_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu15i_BFu0c");
    static aBFu8c_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15i_BFu0c(Test_aBFu8c_BFu15i_BFu0c, "aBFu8c_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu15i_BFu0i");
    static aBFu8c_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15i_BFu0i(Test_aBFu8c_BFu15i_BFu0i, "aBFu8c_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu15i_BFu0ll");
    static aBFu8c_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15i_BFu0ll(Test_aBFu8c_BFu15i_BFu0ll, "aBFu8c_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu15i_BFu0s");
    static aBFu8c_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15i_BFu0s(Test_aBFu8c_BFu15i_BFu0s, "aBFu8c_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu15ll_BFu0c");
    static aBFu8c_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15ll_BFu0c(Test_aBFu8c_BFu15ll_BFu0c, "aBFu8c_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu15ll_BFu0i");
    static aBFu8c_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15ll_BFu0i(Test_aBFu8c_BFu15ll_BFu0i, "aBFu8c_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu15ll_BFu0ll");
    static aBFu8c_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15ll_BFu0ll(Test_aBFu8c_BFu15ll_BFu0ll, "aBFu8c_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu15ll_BFu0s");
    static aBFu8c_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15ll_BFu0s(Test_aBFu8c_BFu15ll_BFu0s, "aBFu8c_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu15s_BFu0c");
    static aBFu8c_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15s_BFu0c(Test_aBFu8c_BFu15s_BFu0c, "aBFu8c_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu15s_BFu0i");
    static aBFu8c_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15s_BFu0i(Test_aBFu8c_BFu15s_BFu0i, "aBFu8c_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu15s_BFu0ll");
    static aBFu8c_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15s_BFu0ll(Test_aBFu8c_BFu15s_BFu0ll, "aBFu8c_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu15s_BFu0s");
    static aBFu8c_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8c_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8c_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu15s_BFu0s(Test_aBFu8c_BFu15s_BFu0s, "aBFu8c_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu16i_BFu0c");
    static aBFu8c_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16i_BFu0c(Test_aBFu8c_BFu16i_BFu0c, "aBFu8c_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu16i_BFu0i");
    static aBFu8c_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16i_BFu0i(Test_aBFu8c_BFu16i_BFu0i, "aBFu8c_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu16i_BFu0ll");
    static aBFu8c_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16i_BFu0ll(Test_aBFu8c_BFu16i_BFu0ll, "aBFu8c_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu16i_BFu0s");
    static aBFu8c_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16i_BFu0s(Test_aBFu8c_BFu16i_BFu0s, "aBFu8c_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu16ll_BFu0c");
    static aBFu8c_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16ll_BFu0c(Test_aBFu8c_BFu16ll_BFu0c, "aBFu8c_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu16ll_BFu0i");
    static aBFu8c_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16ll_BFu0i(Test_aBFu8c_BFu16ll_BFu0i, "aBFu8c_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu16ll_BFu0ll");
    static aBFu8c_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16ll_BFu0ll(Test_aBFu8c_BFu16ll_BFu0ll, "aBFu8c_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu16ll_BFu0s");
    static aBFu8c_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16ll_BFu0s(Test_aBFu8c_BFu16ll_BFu0s, "aBFu8c_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu16s_BFu0c");
    static aBFu8c_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16s_BFu0c(Test_aBFu8c_BFu16s_BFu0c, "aBFu8c_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu16s_BFu0i");
    static aBFu8c_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16s_BFu0i(Test_aBFu8c_BFu16s_BFu0i, "aBFu8c_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu16s_BFu0ll");
    static aBFu8c_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16s_BFu0ll(Test_aBFu8c_BFu16s_BFu0ll, "aBFu8c_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu16s_BFu0s");
    static aBFu8c_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8c_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8c_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu16s_BFu0s(Test_aBFu8c_BFu16s_BFu0s, "aBFu8c_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu17i_BFu0c");
    static aBFu8c_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17i_BFu0c(Test_aBFu8c_BFu17i_BFu0c, "aBFu8c_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu17i_BFu0i");
    static aBFu8c_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17i_BFu0i(Test_aBFu8c_BFu17i_BFu0i, "aBFu8c_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu17i_BFu0ll");
    static aBFu8c_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17i_BFu0ll(Test_aBFu8c_BFu17i_BFu0ll, "aBFu8c_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu17i_BFu0s");
    static aBFu8c_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17i_BFu0s(Test_aBFu8c_BFu17i_BFu0s, "aBFu8c_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu17ll_BFu0c");
    static aBFu8c_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17ll_BFu0c(Test_aBFu8c_BFu17ll_BFu0c, "aBFu8c_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu17ll_BFu0i");
    static aBFu8c_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17ll_BFu0i(Test_aBFu8c_BFu17ll_BFu0i, "aBFu8c_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu17ll_BFu0ll");
    static aBFu8c_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17ll_BFu0ll(Test_aBFu8c_BFu17ll_BFu0ll, "aBFu8c_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu17ll_BFu0s");
    static aBFu8c_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8c_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8c_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8c_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu17ll_BFu0s(Test_aBFu8c_BFu17ll_BFu0s, "aBFu8c_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu1c_BFu0c");
    static aBFu8c_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1c_BFu0c(Test_aBFu8c_BFu1c_BFu0c, "aBFu8c_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu1c_BFu0i");
    static aBFu8c_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1c_BFu0i(Test_aBFu8c_BFu1c_BFu0i, "aBFu8c_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu1c_BFu0ll");
    static aBFu8c_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1c_BFu0ll(Test_aBFu8c_BFu1c_BFu0ll, "aBFu8c_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu1c_BFu0s");
    static aBFu8c_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1c_BFu0s(Test_aBFu8c_BFu1c_BFu0s, "aBFu8c_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu1i_BFu0c");
    static aBFu8c_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1i_BFu0c(Test_aBFu8c_BFu1i_BFu0c, "aBFu8c_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu1i_BFu0i");
    static aBFu8c_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1i_BFu0i(Test_aBFu8c_BFu1i_BFu0i, "aBFu8c_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu1i_BFu0ll");
    static aBFu8c_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1i_BFu0ll(Test_aBFu8c_BFu1i_BFu0ll, "aBFu8c_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu1i_BFu0s");
    static aBFu8c_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1i_BFu0s(Test_aBFu8c_BFu1i_BFu0s, "aBFu8c_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu1ll_BFu0c");
    static aBFu8c_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1ll_BFu0c(Test_aBFu8c_BFu1ll_BFu0c, "aBFu8c_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu1ll_BFu0i");
    static aBFu8c_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1ll_BFu0i(Test_aBFu8c_BFu1ll_BFu0i, "aBFu8c_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu1ll_BFu0ll");
    static aBFu8c_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1ll_BFu0ll(Test_aBFu8c_BFu1ll_BFu0ll, "aBFu8c_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu1ll_BFu0s");
    static aBFu8c_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1ll_BFu0s(Test_aBFu8c_BFu1ll_BFu0s, "aBFu8c_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu1s_BFu0c");
    static aBFu8c_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1s_BFu0c(Test_aBFu8c_BFu1s_BFu0c, "aBFu8c_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu1s_BFu0i");
    static aBFu8c_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1s_BFu0i(Test_aBFu8c_BFu1s_BFu0i, "aBFu8c_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu1s_BFu0ll");
    static aBFu8c_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1s_BFu0ll(Test_aBFu8c_BFu1s_BFu0ll, "aBFu8c_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu1s_BFu0s");
    static aBFu8c_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8c_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu1s_BFu0s(Test_aBFu8c_BFu1s_BFu0s, "aBFu8c_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu31i_BFu0c");
    static aBFu8c_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31i_BFu0c(Test_aBFu8c_BFu31i_BFu0c, "aBFu8c_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu31i_BFu0i");
    static aBFu8c_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31i_BFu0i(Test_aBFu8c_BFu31i_BFu0i, "aBFu8c_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu31i_BFu0ll");
    static aBFu8c_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31i_BFu0ll(Test_aBFu8c_BFu31i_BFu0ll, "aBFu8c_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu31i_BFu0s");
    static aBFu8c_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31i_BFu0s(Test_aBFu8c_BFu31i_BFu0s, "aBFu8c_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu31ll_BFu0c");
    static aBFu8c_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31ll_BFu0c(Test_aBFu8c_BFu31ll_BFu0c, "aBFu8c_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu31ll_BFu0i");
    static aBFu8c_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31ll_BFu0i(Test_aBFu8c_BFu31ll_BFu0i, "aBFu8c_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu31ll_BFu0ll");
    static aBFu8c_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31ll_BFu0ll(Test_aBFu8c_BFu31ll_BFu0ll, "aBFu8c_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu31ll_BFu0s");
    static aBFu8c_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8c_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8c_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu31ll_BFu0s(Test_aBFu8c_BFu31ll_BFu0s, "aBFu8c_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu32i_BFu0c");
    static aBFu8c_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32i_BFu0c(Test_aBFu8c_BFu32i_BFu0c, "aBFu8c_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu32i_BFu0i");
    static aBFu8c_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32i_BFu0i(Test_aBFu8c_BFu32i_BFu0i, "aBFu8c_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu32i_BFu0ll");
    static aBFu8c_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32i_BFu0ll(Test_aBFu8c_BFu32i_BFu0ll, "aBFu8c_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu32i_BFu0s");
    static aBFu8c_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32i_BFu0s(Test_aBFu8c_BFu32i_BFu0s, "aBFu8c_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu32ll_BFu0c");
    static aBFu8c_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32ll_BFu0c(Test_aBFu8c_BFu32ll_BFu0c, "aBFu8c_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu32ll_BFu0i");
    static aBFu8c_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32ll_BFu0i(Test_aBFu8c_BFu32ll_BFu0i, "aBFu8c_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu32ll_BFu0ll");
    static aBFu8c_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32ll_BFu0ll(Test_aBFu8c_BFu32ll_BFu0ll, "aBFu8c_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu32ll_BFu0s");
    static aBFu8c_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8c_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8c_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu32ll_BFu0s(Test_aBFu8c_BFu32ll_BFu0s, "aBFu8c_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu33_BFu0c");
    static aBFu8c_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8c_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8c_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu33_BFu0c(Test_aBFu8c_BFu33_BFu0c, "aBFu8c_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu33_BFu0i");
    static aBFu8c_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8c_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu33_BFu0i(Test_aBFu8c_BFu33_BFu0i, "aBFu8c_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu33_BFu0ll");
    static aBFu8c_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8c_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu33_BFu0ll(Test_aBFu8c_BFu33_BFu0ll, "aBFu8c_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu33_BFu0s");
    static aBFu8c_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8c_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8c_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8c_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu33_BFu0s(Test_aBFu8c_BFu33_BFu0s, "aBFu8c_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu7c_BFu0c");
    static aBFu8c_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7c_BFu0c(Test_aBFu8c_BFu7c_BFu0c, "aBFu8c_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu7c_BFu0i");
    static aBFu8c_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7c_BFu0i(Test_aBFu8c_BFu7c_BFu0i, "aBFu8c_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu7c_BFu0ll");
    static aBFu8c_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7c_BFu0ll(Test_aBFu8c_BFu7c_BFu0ll, "aBFu8c_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu7c_BFu0s");
    static aBFu8c_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7c_BFu0s(Test_aBFu8c_BFu7c_BFu0s, "aBFu8c_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu7i_BFu0c");
    static aBFu8c_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7i_BFu0c(Test_aBFu8c_BFu7i_BFu0c, "aBFu8c_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu7i_BFu0i");
    static aBFu8c_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7i_BFu0i(Test_aBFu8c_BFu7i_BFu0i, "aBFu8c_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu7i_BFu0ll");
    static aBFu8c_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7i_BFu0ll(Test_aBFu8c_BFu7i_BFu0ll, "aBFu8c_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu7i_BFu0s");
    static aBFu8c_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7i_BFu0s(Test_aBFu8c_BFu7i_BFu0s, "aBFu8c_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu7ll_BFu0c");
    static aBFu8c_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7ll_BFu0c(Test_aBFu8c_BFu7ll_BFu0c, "aBFu8c_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu7ll_BFu0i");
    static aBFu8c_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7ll_BFu0i(Test_aBFu8c_BFu7ll_BFu0i, "aBFu8c_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu7ll_BFu0ll");
    static aBFu8c_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7ll_BFu0ll(Test_aBFu8c_BFu7ll_BFu0ll, "aBFu8c_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu7ll_BFu0s");
    static aBFu8c_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7ll_BFu0s(Test_aBFu8c_BFu7ll_BFu0s, "aBFu8c_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu7s_BFu0c");
    static aBFu8c_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7s_BFu0c(Test_aBFu8c_BFu7s_BFu0c, "aBFu8c_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu7s_BFu0i");
    static aBFu8c_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7s_BFu0i(Test_aBFu8c_BFu7s_BFu0i, "aBFu8c_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu7s_BFu0ll");
    static aBFu8c_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7s_BFu0ll(Test_aBFu8c_BFu7s_BFu0ll, "aBFu8c_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu7s_BFu0s");
    static aBFu8c_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8c_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8c_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu7s_BFu0s(Test_aBFu8c_BFu7s_BFu0s, "aBFu8c_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu8c_BFu0c");
    static aBFu8c_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8c_BFu0c(Test_aBFu8c_BFu8c_BFu0c, "aBFu8c_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu8c_BFu0i");
    static aBFu8c_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8c_BFu0i(Test_aBFu8c_BFu8c_BFu0i, "aBFu8c_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu8c_BFu0ll");
    static aBFu8c_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8c_BFu0ll(Test_aBFu8c_BFu8c_BFu0ll, "aBFu8c_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu8c_BFu0s");
    static aBFu8c_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8c_BFu0s(Test_aBFu8c_BFu8c_BFu0s, "aBFu8c_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu8i_BFu0c");
    static aBFu8c_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8i_BFu0c(Test_aBFu8c_BFu8i_BFu0c, "aBFu8c_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu8i_BFu0i");
    static aBFu8c_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8i_BFu0i(Test_aBFu8c_BFu8i_BFu0i, "aBFu8c_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu8i_BFu0ll");
    static aBFu8c_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8i_BFu0ll(Test_aBFu8c_BFu8i_BFu0ll, "aBFu8c_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu8i_BFu0s");
    static aBFu8c_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8i_BFu0s(Test_aBFu8c_BFu8i_BFu0s, "aBFu8c_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu8ll_BFu0c");
    static aBFu8c_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8ll_BFu0c(Test_aBFu8c_BFu8ll_BFu0c, "aBFu8c_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu8ll_BFu0i");
    static aBFu8c_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8ll_BFu0i(Test_aBFu8c_BFu8ll_BFu0i, "aBFu8c_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu8ll_BFu0ll");
    static aBFu8c_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8ll_BFu0ll(Test_aBFu8c_BFu8ll_BFu0ll, "aBFu8c_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu8ll_BFu0s");
    static aBFu8c_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8ll_BFu0s(Test_aBFu8c_BFu8ll_BFu0s, "aBFu8c_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu8s_BFu0c");
    static aBFu8c_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8s_BFu0c(Test_aBFu8c_BFu8s_BFu0c, "aBFu8c_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu8s_BFu0i");
    static aBFu8c_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8s_BFu0i(Test_aBFu8c_BFu8s_BFu0i, "aBFu8c_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu8s_BFu0ll");
    static aBFu8c_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8s_BFu0ll(Test_aBFu8c_BFu8s_BFu0ll, "aBFu8c_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu8s_BFu0s");
    static aBFu8c_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8c_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu8s_BFu0s(Test_aBFu8c_BFu8s_BFu0s, "aBFu8c_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu9i_BFu0c");
    static aBFu8c_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9i_BFu0c(Test_aBFu8c_BFu9i_BFu0c, "aBFu8c_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu9i_BFu0i");
    static aBFu8c_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9i_BFu0i(Test_aBFu8c_BFu9i_BFu0i, "aBFu8c_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu9i_BFu0ll");
    static aBFu8c_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9i_BFu0ll(Test_aBFu8c_BFu9i_BFu0ll, "aBFu8c_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu9i_BFu0s");
    static aBFu8c_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9i_BFu0s(Test_aBFu8c_BFu9i_BFu0s, "aBFu8c_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu9ll_BFu0c");
    static aBFu8c_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9ll_BFu0c(Test_aBFu8c_BFu9ll_BFu0c, "aBFu8c_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu9ll_BFu0i");
    static aBFu8c_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9ll_BFu0i(Test_aBFu8c_BFu9ll_BFu0i, "aBFu8c_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu9ll_BFu0ll");
    static aBFu8c_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9ll_BFu0ll(Test_aBFu8c_BFu9ll_BFu0ll, "aBFu8c_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu9ll_BFu0s");
    static aBFu8c_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9ll_BFu0s(Test_aBFu8c_BFu9ll_BFu0s, "aBFu8c_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu8c_BFu9s_BFu0c");
    static aBFu8c_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9s_BFu0c(Test_aBFu8c_BFu9s_BFu0c, "aBFu8c_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu8c_BFu9s_BFu0i");
    static aBFu8c_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9s_BFu0i(Test_aBFu8c_BFu9s_BFu0i, "aBFu8c_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu8c_BFu9s_BFu0ll");
    static aBFu8c_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9s_BFu0ll(Test_aBFu8c_BFu9s_BFu0ll, "aBFu8c_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu8c_BFu9s_BFu0s");
    static aBFu8c_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8c_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8c_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8c_BFu9s_BFu0s(Test_aBFu8c_BFu9s_BFu0s, "aBFu8c_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_C_BFu0c()
{
  {
    init_simple_test("aBFu8c_C_BFu0c");
    static aBFu8c_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_C_BFu0c(Test_aBFu8c_C_BFu0c, "aBFu8c_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_C_BFu0i()
{
  {
    init_simple_test("aBFu8c_C_BFu0i");
    static aBFu8c_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_C_BFu0i(Test_aBFu8c_C_BFu0i, "aBFu8c_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_C_BFu0ll()
{
  {
    init_simple_test("aBFu8c_C_BFu0ll");
    static aBFu8c_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_C_BFu0ll(Test_aBFu8c_C_BFu0ll, "aBFu8c_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_C_BFu0s()
{
  {
    init_simple_test("aBFu8c_C_BFu0s");
    static aBFu8c_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_C_BFu0s(Test_aBFu8c_C_BFu0s, "aBFu8c_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_D_BFu0c()
{
  {
    init_simple_test("aBFu8c_D_BFu0c");
    static aBFu8c_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_D_BFu0c(Test_aBFu8c_D_BFu0c, "aBFu8c_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_D_BFu0i()
{
  {
    init_simple_test("aBFu8c_D_BFu0i");
    static aBFu8c_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_D_BFu0i(Test_aBFu8c_D_BFu0i, "aBFu8c_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_D_BFu0ll()
{
  {
    init_simple_test("aBFu8c_D_BFu0ll");
    static aBFu8c_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_D_BFu0ll(Test_aBFu8c_D_BFu0ll, "aBFu8c_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_D_BFu0s()
{
  {
    init_simple_test("aBFu8c_D_BFu0s");
    static aBFu8c_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_D_BFu0s(Test_aBFu8c_D_BFu0s, "aBFu8c_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_F_BFu0c()
{
  {
    init_simple_test("aBFu8c_F_BFu0c");
    static aBFu8c_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_F_BFu0c(Test_aBFu8c_F_BFu0c, "aBFu8c_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_F_BFu0i()
{
  {
    init_simple_test("aBFu8c_F_BFu0i");
    static aBFu8c_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_F_BFu0i(Test_aBFu8c_F_BFu0i, "aBFu8c_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_F_BFu0ll()
{
  {
    init_simple_test("aBFu8c_F_BFu0ll");
    static aBFu8c_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_F_BFu0ll(Test_aBFu8c_F_BFu0ll, "aBFu8c_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_F_BFu0s()
{
  {
    init_simple_test("aBFu8c_F_BFu0s");
    static aBFu8c_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_F_BFu0s(Test_aBFu8c_F_BFu0s, "aBFu8c_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_I_BFu0c()
{
  {
    init_simple_test("aBFu8c_I_BFu0c");
    static aBFu8c_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_I_BFu0c(Test_aBFu8c_I_BFu0c, "aBFu8c_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_I_BFu0i()
{
  {
    init_simple_test("aBFu8c_I_BFu0i");
    static aBFu8c_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_I_BFu0i(Test_aBFu8c_I_BFu0i, "aBFu8c_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_I_BFu0ll()
{
  {
    init_simple_test("aBFu8c_I_BFu0ll");
    static aBFu8c_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_I_BFu0ll(Test_aBFu8c_I_BFu0ll, "aBFu8c_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_I_BFu0s()
{
  {
    init_simple_test("aBFu8c_I_BFu0s");
    static aBFu8c_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_I_BFu0s(Test_aBFu8c_I_BFu0s, "aBFu8c_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ip_BFu0c()
{
  {
    init_simple_test("aBFu8c_Ip_BFu0c");
    static aBFu8c_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ip_BFu0c(Test_aBFu8c_Ip_BFu0c, "aBFu8c_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ip_BFu0i()
{
  {
    init_simple_test("aBFu8c_Ip_BFu0i");
    static aBFu8c_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ip_BFu0i(Test_aBFu8c_Ip_BFu0i, "aBFu8c_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Ip_BFu0ll");
    static aBFu8c_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8c_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ip_BFu0ll(Test_aBFu8c_Ip_BFu0ll, "aBFu8c_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ip_BFu0s()
{
  {
    init_simple_test("aBFu8c_Ip_BFu0s");
    static aBFu8c_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ip_BFu0s(Test_aBFu8c_Ip_BFu0s, "aBFu8c_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_L_BFu0c()
{
  {
    init_simple_test("aBFu8c_L_BFu0c");
    static aBFu8c_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_L_BFu0c(Test_aBFu8c_L_BFu0c, "aBFu8c_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_L_BFu0i()
{
  {
    init_simple_test("aBFu8c_L_BFu0i");
    static aBFu8c_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_L_BFu0i(Test_aBFu8c_L_BFu0i, "aBFu8c_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_L_BFu0ll()
{
  {
    init_simple_test("aBFu8c_L_BFu0ll");
    static aBFu8c_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_L_BFu0ll(Test_aBFu8c_L_BFu0ll, "aBFu8c_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_L_BFu0s()
{
  {
    init_simple_test("aBFu8c_L_BFu0s");
    static aBFu8c_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_L_BFu0s(Test_aBFu8c_L_BFu0s, "aBFu8c_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_S_BFu0c()
{
  {
    init_simple_test("aBFu8c_S_BFu0c");
    static aBFu8c_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_S_BFu0c(Test_aBFu8c_S_BFu0c, "aBFu8c_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_S_BFu0i()
{
  {
    init_simple_test("aBFu8c_S_BFu0i");
    static aBFu8c_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_S_BFu0i(Test_aBFu8c_S_BFu0i, "aBFu8c_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_S_BFu0ll()
{
  {
    init_simple_test("aBFu8c_S_BFu0ll");
    static aBFu8c_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_S_BFu0ll(Test_aBFu8c_S_BFu0ll, "aBFu8c_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_S_BFu0s()
{
  {
    init_simple_test("aBFu8c_S_BFu0s");
    static aBFu8c_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_S_BFu0s(Test_aBFu8c_S_BFu0s, "aBFu8c_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Uc_BFu0c()
{
  {
    init_simple_test("aBFu8c_Uc_BFu0c");
    static aBFu8c_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Uc_BFu0c(Test_aBFu8c_Uc_BFu0c, "aBFu8c_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Uc_BFu0i()
{
  {
    init_simple_test("aBFu8c_Uc_BFu0i");
    static aBFu8c_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Uc_BFu0i(Test_aBFu8c_Uc_BFu0i, "aBFu8c_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Uc_BFu0ll");
    static aBFu8c_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Uc_BFu0ll(Test_aBFu8c_Uc_BFu0ll, "aBFu8c_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Uc_BFu0s()
{
  {
    init_simple_test("aBFu8c_Uc_BFu0s");
    static aBFu8c_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8c_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Uc_BFu0s(Test_aBFu8c_Uc_BFu0s, "aBFu8c_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ui_BFu0c()
{
  {
    init_simple_test("aBFu8c_Ui_BFu0c");
    static aBFu8c_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8c_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ui_BFu0c(Test_aBFu8c_Ui_BFu0c, "aBFu8c_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ui_BFu0i()
{
  {
    init_simple_test("aBFu8c_Ui_BFu0i");
    static aBFu8c_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ui_BFu0i(Test_aBFu8c_Ui_BFu0i, "aBFu8c_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Ui_BFu0ll");
    static aBFu8c_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8c_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ui_BFu0ll(Test_aBFu8c_Ui_BFu0ll, "aBFu8c_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ui_BFu0s()
{
  {
    init_simple_test("aBFu8c_Ui_BFu0s");
    static aBFu8c_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8c_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ui_BFu0s(Test_aBFu8c_Ui_BFu0s, "aBFu8c_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ul_BFu0c()
{
  {
    init_simple_test("aBFu8c_Ul_BFu0c");
    static aBFu8c_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8c_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ul_BFu0c(Test_aBFu8c_Ul_BFu0c, "aBFu8c_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ul_BFu0i()
{
  {
    init_simple_test("aBFu8c_Ul_BFu0i");
    static aBFu8c_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8c_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ul_BFu0i(Test_aBFu8c_Ul_BFu0i, "aBFu8c_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Ul_BFu0ll");
    static aBFu8c_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8c_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ul_BFu0ll(Test_aBFu8c_Ul_BFu0ll, "aBFu8c_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Ul_BFu0s()
{
  {
    init_simple_test("aBFu8c_Ul_BFu0s");
    static aBFu8c_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8c_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Ul_BFu0s(Test_aBFu8c_Ul_BFu0s, "aBFu8c_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Us_BFu0c()
{
  {
    init_simple_test("aBFu8c_Us_BFu0c");
    static aBFu8c_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8c_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Us_BFu0c(Test_aBFu8c_Us_BFu0c, "aBFu8c_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Us_BFu0i()
{
  {
    init_simple_test("aBFu8c_Us_BFu0i");
    static aBFu8c_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Us_BFu0i(Test_aBFu8c_Us_BFu0i, "aBFu8c_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Us_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Us_BFu0ll");
    static aBFu8c_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8c_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Us_BFu0ll(Test_aBFu8c_Us_BFu0ll, "aBFu8c_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Us_BFu0s()
{
  {
    init_simple_test("aBFu8c_Us_BFu0s");
    static aBFu8c_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8c_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Us_BFu0s(Test_aBFu8c_Us_BFu0s, "aBFu8c_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Vp_BFu0c()
{
  {
    init_simple_test("aBFu8c_Vp_BFu0c");
    static aBFu8c_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8c_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8c_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Vp_BFu0c(Test_aBFu8c_Vp_BFu0c, "aBFu8c_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Vp_BFu0i()
{
  {
    init_simple_test("aBFu8c_Vp_BFu0i");
    static aBFu8c_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8c_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8c_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Vp_BFu0i(Test_aBFu8c_Vp_BFu0i, "aBFu8c_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu8c_Vp_BFu0ll");
    static aBFu8c_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8c_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8c_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Vp_BFu0ll(Test_aBFu8c_Vp_BFu0ll, "aBFu8c_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8c_Vp_BFu0s()
{
  {
    init_simple_test("aBFu8c_Vp_BFu0s");
    static aBFu8c_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8c_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8c_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8c_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8c_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8c_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8c_Vp_BFu0s(Test_aBFu8c_Vp_BFu0s, "aBFu8c_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu0c");
    static aBFu8i_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c(Test_aBFu8i_BFu0c, "aBFu8i_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu0c");
    static aBFu8i_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8i_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu0c(Test_aBFu8i_BFu0c_BFu0c, "aBFu8i_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu0i");
    static aBFu8i_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu0i(Test_aBFu8i_BFu0c_BFu0i, "aBFu8i_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu0ll");
    static aBFu8i_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu0ll(Test_aBFu8i_BFu0c_BFu0ll, "aBFu8i_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu0s");
    static aBFu8i_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8i_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu0s(Test_aBFu8i_BFu0c_BFu0s, "aBFu8i_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu15i");
    static aBFu8i_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu15i(Test_aBFu8i_BFu0c_BFu15i, "aBFu8i_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu15ll");
    static aBFu8i_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu15ll(Test_aBFu8i_BFu0c_BFu15ll, "aBFu8i_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu15s");
    static aBFu8i_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu15s(Test_aBFu8i_BFu0c_BFu15s, "aBFu8i_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu16i");
    static aBFu8i_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu16i(Test_aBFu8i_BFu0c_BFu16i, "aBFu8i_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu16ll");
    static aBFu8i_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu16ll(Test_aBFu8i_BFu0c_BFu16ll, "aBFu8i_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu16s");
    static aBFu8i_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu16s(Test_aBFu8i_BFu0c_BFu16s, "aBFu8i_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu17i");
    static aBFu8i_BFu0c_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu17i(Test_aBFu8i_BFu0c_BFu17i, "aBFu8i_BFu0c_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu17ll");
    static aBFu8i_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu17ll(Test_aBFu8i_BFu0c_BFu17ll, "aBFu8i_BFu0c_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu1c");
    static aBFu8i_BFu0c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu1c(Test_aBFu8i_BFu0c_BFu1c, "aBFu8i_BFu0c_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu1i");
    static aBFu8i_BFu0c_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu1i(Test_aBFu8i_BFu0c_BFu1i, "aBFu8i_BFu0c_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu1ll");
    static aBFu8i_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu1ll(Test_aBFu8i_BFu0c_BFu1ll, "aBFu8i_BFu0c_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu1s");
    static aBFu8i_BFu0c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu1s(Test_aBFu8i_BFu0c_BFu1s, "aBFu8i_BFu0c_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu31i");
    static aBFu8i_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu31i(Test_aBFu8i_BFu0c_BFu31i, "aBFu8i_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu31ll");
    static aBFu8i_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu31ll(Test_aBFu8i_BFu0c_BFu31ll, "aBFu8i_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu32i");
    static aBFu8i_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu32i(Test_aBFu8i_BFu0c_BFu32i, "aBFu8i_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu32ll");
    static aBFu8i_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu32ll(Test_aBFu8i_BFu0c_BFu32ll, "aBFu8i_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu33");
    static aBFu8i_BFu0c_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8i_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8i_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu33(Test_aBFu8i_BFu0c_BFu33, "aBFu8i_BFu0c_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu7c");
    static aBFu8i_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu7c(Test_aBFu8i_BFu0c_BFu7c, "aBFu8i_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu7i");
    static aBFu8i_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu7i(Test_aBFu8i_BFu0c_BFu7i, "aBFu8i_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu7ll");
    static aBFu8i_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu7ll(Test_aBFu8i_BFu0c_BFu7ll, "aBFu8i_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu7s");
    static aBFu8i_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu7s(Test_aBFu8i_BFu0c_BFu7s, "aBFu8i_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu8c");
    static aBFu8i_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu8c(Test_aBFu8i_BFu0c_BFu8c, "aBFu8i_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu8i");
    static aBFu8i_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu8i(Test_aBFu8i_BFu0c_BFu8i, "aBFu8i_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu8ll");
    static aBFu8i_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu8ll(Test_aBFu8i_BFu0c_BFu8ll, "aBFu8i_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu8s");
    static aBFu8i_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu8s(Test_aBFu8i_BFu0c_BFu8s, "aBFu8i_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu9i");
    static aBFu8i_BFu0c_BFu9i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu9i(Test_aBFu8i_BFu0c_BFu9i, "aBFu8i_BFu0c_BFu9i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu9ll");
    static aBFu8i_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu9ll(Test_aBFu8i_BFu0c_BFu9ll, "aBFu8i_BFu0c_BFu9ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu8i_BFu0c_BFu9s");
    static aBFu8i_BFu0c_BFu9s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_BFu9s(Test_aBFu8i_BFu0c_BFu9s, "aBFu8i_BFu0c_BFu9s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_C()
{
  {
    init_simple_test("aBFu8i_BFu0c_C");
    static aBFu8i_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_C(Test_aBFu8i_BFu0c_C, "aBFu8i_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_D()
{
  {
    init_simple_test("aBFu8i_BFu0c_D");
    static aBFu8i_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_D(Test_aBFu8i_BFu0c_D, "aBFu8i_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_F()
{
  {
    init_simple_test("aBFu8i_BFu0c_F");
    static aBFu8i_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_F(Test_aBFu8i_BFu0c_F, "aBFu8i_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_I()
{
  {
    init_simple_test("aBFu8i_BFu0c_I");
    static aBFu8i_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_I(Test_aBFu8i_BFu0c_I, "aBFu8i_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Ip()
{
  {
    init_simple_test("aBFu8i_BFu0c_Ip");
    static aBFu8i_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Ip(Test_aBFu8i_BFu0c_Ip, "aBFu8i_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_L()
{
  {
    init_simple_test("aBFu8i_BFu0c_L");
    static aBFu8i_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_L(Test_aBFu8i_BFu0c_L, "aBFu8i_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_S()
{
  {
    init_simple_test("aBFu8i_BFu0c_S");
    static aBFu8i_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_S(Test_aBFu8i_BFu0c_S, "aBFu8i_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Uc()
{
  {
    init_simple_test("aBFu8i_BFu0c_Uc");
    static aBFu8i_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Uc(Test_aBFu8i_BFu0c_Uc, "aBFu8i_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Ui()
{
  {
    init_simple_test("aBFu8i_BFu0c_Ui");
    static aBFu8i_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Ui(Test_aBFu8i_BFu0c_Ui, "aBFu8i_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Ul()
{
  {
    init_simple_test("aBFu8i_BFu0c_Ul");
    static aBFu8i_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Ul(Test_aBFu8i_BFu0c_Ul, "aBFu8i_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Us()
{
  {
    init_simple_test("aBFu8i_BFu0c_Us");
    static aBFu8i_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Us(Test_aBFu8i_BFu0c_Us, "aBFu8i_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0c_Vp()
{
  {
    init_simple_test("aBFu8i_BFu0c_Vp");
    static aBFu8i_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu8i_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0c_Vp(Test_aBFu8i_BFu0c_Vp, "aBFu8i_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu0i");
    static aBFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i(Test_aBFu8i_BFu0i, "aBFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu0c");
    static aBFu8i_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu0c(Test_aBFu8i_BFu0i_BFu0c, "aBFu8i_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu0i");
    static aBFu8i_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu0i(Test_aBFu8i_BFu0i_BFu0i, "aBFu8i_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu0ll");
    static aBFu8i_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu0ll(Test_aBFu8i_BFu0i_BFu0ll, "aBFu8i_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu0s");
    static aBFu8i_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu0s(Test_aBFu8i_BFu0i_BFu0s, "aBFu8i_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu15i");
    static aBFu8i_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8i_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu15i(Test_aBFu8i_BFu0i_BFu15i, "aBFu8i_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu15ll");
    static aBFu8i_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8i_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu15ll(Test_aBFu8i_BFu0i_BFu15ll, "aBFu8i_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu15s");
    static aBFu8i_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8i_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu15s(Test_aBFu8i_BFu0i_BFu15s, "aBFu8i_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu16i");
    static aBFu8i_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8i_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu16i(Test_aBFu8i_BFu0i_BFu16i, "aBFu8i_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu16ll");
    static aBFu8i_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8i_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu16ll(Test_aBFu8i_BFu0i_BFu16ll, "aBFu8i_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu16s");
    static aBFu8i_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8i_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu16s(Test_aBFu8i_BFu0i_BFu16s, "aBFu8i_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu17i");
    static aBFu8i_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8i_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8i_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu17i(Test_aBFu8i_BFu0i_BFu17i, "aBFu8i_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu17ll");
    static aBFu8i_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8i_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8i_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu17ll(Test_aBFu8i_BFu0i_BFu17ll, "aBFu8i_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu1c");
    static aBFu8i_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8i_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu1c(Test_aBFu8i_BFu0i_BFu1c, "aBFu8i_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu1i");
    static aBFu8i_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8i_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu1i(Test_aBFu8i_BFu0i_BFu1i, "aBFu8i_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu1ll");
    static aBFu8i_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8i_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu1ll(Test_aBFu8i_BFu0i_BFu1ll, "aBFu8i_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu1s");
    static aBFu8i_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8i_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu1s(Test_aBFu8i_BFu0i_BFu1s, "aBFu8i_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu31i");
    static aBFu8i_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8i_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu31i(Test_aBFu8i_BFu0i_BFu31i, "aBFu8i_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu31ll");
    static aBFu8i_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8i_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu31ll(Test_aBFu8i_BFu0i_BFu31ll, "aBFu8i_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu32i");
    static aBFu8i_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8i_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu32i(Test_aBFu8i_BFu0i_BFu32i, "aBFu8i_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu32ll");
    static aBFu8i_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8i_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu32ll(Test_aBFu8i_BFu0i_BFu32ll, "aBFu8i_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu33");
    static aBFu8i_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu8i_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, 1, "aBFu8i_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu33(Test_aBFu8i_BFu0i_BFu33, "aBFu8i_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu7c");
    static aBFu8i_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8i_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu7c(Test_aBFu8i_BFu0i_BFu7c, "aBFu8i_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu7i");
    static aBFu8i_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8i_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu7i(Test_aBFu8i_BFu0i_BFu7i, "aBFu8i_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu7ll");
    static aBFu8i_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8i_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu7ll(Test_aBFu8i_BFu0i_BFu7ll, "aBFu8i_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu7s");
    static aBFu8i_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8i_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu7s(Test_aBFu8i_BFu0i_BFu7s, "aBFu8i_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu8c");
    static aBFu8i_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8i_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu8c(Test_aBFu8i_BFu0i_BFu8c, "aBFu8i_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu8i");
    static aBFu8i_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8i_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu8i(Test_aBFu8i_BFu0i_BFu8i, "aBFu8i_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu8ll");
    static aBFu8i_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8i_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu8ll(Test_aBFu8i_BFu0i_BFu8ll, "aBFu8i_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu8s");
    static aBFu8i_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8i_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu8s(Test_aBFu8i_BFu0i_BFu8s, "aBFu8i_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu9i");
    static aBFu8i_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8i_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu9i(Test_aBFu8i_BFu0i_BFu9i, "aBFu8i_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu9ll");
    static aBFu8i_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8i_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu9ll(Test_aBFu8i_BFu0i_BFu9ll, "aBFu8i_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu8i_BFu0i_BFu9s");
    static aBFu8i_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8i_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_BFu9s(Test_aBFu8i_BFu0i_BFu9s, "aBFu8i_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_C()
{
  {
    init_simple_test("aBFu8i_BFu0i_C");
    static aBFu8i_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_C(Test_aBFu8i_BFu0i_C, "aBFu8i_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_D()
{
  {
    init_simple_test("aBFu8i_BFu0i_D");
    static aBFu8i_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_D(Test_aBFu8i_BFu0i_D, "aBFu8i_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_F()
{
  {
    init_simple_test("aBFu8i_BFu0i_F");
    static aBFu8i_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_F(Test_aBFu8i_BFu0i_F, "aBFu8i_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_I()
{
  {
    init_simple_test("aBFu8i_BFu0i_I");
    static aBFu8i_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_I(Test_aBFu8i_BFu0i_I, "aBFu8i_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Ip()
{
  {
    init_simple_test("aBFu8i_BFu0i_Ip");
    static aBFu8i_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Ip(Test_aBFu8i_BFu0i_Ip, "aBFu8i_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_L()
{
  {
    init_simple_test("aBFu8i_BFu0i_L");
    static aBFu8i_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_L(Test_aBFu8i_BFu0i_L, "aBFu8i_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_S()
{
  {
    init_simple_test("aBFu8i_BFu0i_S");
    static aBFu8i_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_S(Test_aBFu8i_BFu0i_S, "aBFu8i_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Uc()
{
  {
    init_simple_test("aBFu8i_BFu0i_Uc");
    static aBFu8i_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Uc(Test_aBFu8i_BFu0i_Uc, "aBFu8i_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Ui()
{
  {
    init_simple_test("aBFu8i_BFu0i_Ui");
    static aBFu8i_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Ui(Test_aBFu8i_BFu0i_Ui, "aBFu8i_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Ul()
{
  {
    init_simple_test("aBFu8i_BFu0i_Ul");
    static aBFu8i_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Ul(Test_aBFu8i_BFu0i_Ul, "aBFu8i_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Us()
{
  {
    init_simple_test("aBFu8i_BFu0i_Us");
    static aBFu8i_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Us(Test_aBFu8i_BFu0i_Us, "aBFu8i_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0i_Vp()
{
  {
    init_simple_test("aBFu8i_BFu0i_Vp");
    static aBFu8i_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8i_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0i_Vp(Test_aBFu8i_BFu0i_Vp, "aBFu8i_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll");
    static aBFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll(Test_aBFu8i_BFu0ll, "aBFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu0c");
    static aBFu8i_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu0c(Test_aBFu8i_BFu0ll_BFu0c, "aBFu8i_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu0i");
    static aBFu8i_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu0i(Test_aBFu8i_BFu0ll_BFu0i, "aBFu8i_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu0ll");
    static aBFu8i_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu0ll(Test_aBFu8i_BFu0ll_BFu0ll, "aBFu8i_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu0s");
    static aBFu8i_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu0s(Test_aBFu8i_BFu0ll_BFu0s, "aBFu8i_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu15i");
    static aBFu8i_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8i_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu15i(Test_aBFu8i_BFu0ll_BFu15i, "aBFu8i_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu15ll");
    static aBFu8i_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8i_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu15ll(Test_aBFu8i_BFu0ll_BFu15ll, "aBFu8i_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu15s");
    static aBFu8i_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8i_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu15s(Test_aBFu8i_BFu0ll_BFu15s, "aBFu8i_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu16i");
    static aBFu8i_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8i_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu16i(Test_aBFu8i_BFu0ll_BFu16i, "aBFu8i_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu16ll");
    static aBFu8i_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8i_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu16ll(Test_aBFu8i_BFu0ll_BFu16ll, "aBFu8i_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu16s");
    static aBFu8i_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8i_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu16s(Test_aBFu8i_BFu0ll_BFu16s, "aBFu8i_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu17i");
    static aBFu8i_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8i_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8i_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu17i(Test_aBFu8i_BFu0ll_BFu17i, "aBFu8i_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu17ll");
    static aBFu8i_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8i_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8i_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu17ll(Test_aBFu8i_BFu0ll_BFu17ll, "aBFu8i_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu1c");
    static aBFu8i_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8i_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu1c(Test_aBFu8i_BFu0ll_BFu1c, "aBFu8i_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu1i");
    static aBFu8i_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8i_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu1i(Test_aBFu8i_BFu0ll_BFu1i, "aBFu8i_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu1ll");
    static aBFu8i_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8i_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu1ll(Test_aBFu8i_BFu0ll_BFu1ll, "aBFu8i_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu1s");
    static aBFu8i_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8i_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu1s(Test_aBFu8i_BFu0ll_BFu1s, "aBFu8i_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu31i");
    static aBFu8i_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8i_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu31i(Test_aBFu8i_BFu0ll_BFu31i, "aBFu8i_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu31ll");
    static aBFu8i_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8i_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu31ll(Test_aBFu8i_BFu0ll_BFu31ll, "aBFu8i_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu32i");
    static aBFu8i_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8i_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu32i(Test_aBFu8i_BFu0ll_BFu32i, "aBFu8i_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu32ll");
    static aBFu8i_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8i_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu32ll(Test_aBFu8i_BFu0ll_BFu32ll, "aBFu8i_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu33");
    static aBFu8i_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu8i_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aBFu8i_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu33(Test_aBFu8i_BFu0ll_BFu33, "aBFu8i_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu7c");
    static aBFu8i_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8i_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu7c(Test_aBFu8i_BFu0ll_BFu7c, "aBFu8i_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu7i");
    static aBFu8i_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8i_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu7i(Test_aBFu8i_BFu0ll_BFu7i, "aBFu8i_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu7ll");
    static aBFu8i_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8i_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu7ll(Test_aBFu8i_BFu0ll_BFu7ll, "aBFu8i_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu7s");
    static aBFu8i_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8i_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu7s(Test_aBFu8i_BFu0ll_BFu7s, "aBFu8i_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu8c");
    static aBFu8i_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8i_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu8c(Test_aBFu8i_BFu0ll_BFu8c, "aBFu8i_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu8i");
    static aBFu8i_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8i_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu8i(Test_aBFu8i_BFu0ll_BFu8i, "aBFu8i_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu8ll");
    static aBFu8i_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8i_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu8ll(Test_aBFu8i_BFu0ll_BFu8ll, "aBFu8i_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu8s");
    static aBFu8i_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8i_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu8s(Test_aBFu8i_BFu0ll_BFu8s, "aBFu8i_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu9i");
    static aBFu8i_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8i_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu9i(Test_aBFu8i_BFu0ll_BFu9i, "aBFu8i_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu9ll");
    static aBFu8i_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8i_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu9ll(Test_aBFu8i_BFu0ll_BFu9ll, "aBFu8i_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu8i_BFu0ll_BFu9s");
    static aBFu8i_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8i_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_BFu9s(Test_aBFu8i_BFu0ll_BFu9s, "aBFu8i_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_C()
{
  {
    init_simple_test("aBFu8i_BFu0ll_C");
    static aBFu8i_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_C(Test_aBFu8i_BFu0ll_C, "aBFu8i_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_D()
{
  {
    init_simple_test("aBFu8i_BFu0ll_D");
    static aBFu8i_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_D(Test_aBFu8i_BFu0ll_D, "aBFu8i_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_F()
{
  {
    init_simple_test("aBFu8i_BFu0ll_F");
    static aBFu8i_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_F(Test_aBFu8i_BFu0ll_F, "aBFu8i_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_I()
{
  {
    init_simple_test("aBFu8i_BFu0ll_I");
    static aBFu8i_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_I(Test_aBFu8i_BFu0ll_I, "aBFu8i_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Ip");
    static aBFu8i_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8i_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Ip(Test_aBFu8i_BFu0ll_Ip, "aBFu8i_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_L()
{
  {
    init_simple_test("aBFu8i_BFu0ll_L");
    static aBFu8i_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_L(Test_aBFu8i_BFu0ll_L, "aBFu8i_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_S()
{
  {
    init_simple_test("aBFu8i_BFu0ll_S");
    static aBFu8i_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_S(Test_aBFu8i_BFu0ll_S, "aBFu8i_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Uc");
    static aBFu8i_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Uc(Test_aBFu8i_BFu0ll_Uc, "aBFu8i_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Ui");
    static aBFu8i_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Ui(Test_aBFu8i_BFu0ll_Ui, "aBFu8i_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Ul");
    static aBFu8i_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Ul(Test_aBFu8i_BFu0ll_Ul, "aBFu8i_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Us()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Us");
    static aBFu8i_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Us(Test_aBFu8i_BFu0ll_Us, "aBFu8i_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu8i_BFu0ll_Vp");
    static aBFu8i_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8i_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8i_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0ll_Vp(Test_aBFu8i_BFu0ll_Vp, "aBFu8i_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu0s");
    static aBFu8i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s(Test_aBFu8i_BFu0s, "aBFu8i_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu0c");
    static aBFu8i_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8i_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu0c(Test_aBFu8i_BFu0s_BFu0c, "aBFu8i_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu0i");
    static aBFu8i_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu0i(Test_aBFu8i_BFu0s_BFu0i, "aBFu8i_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu0ll");
    static aBFu8i_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu0ll(Test_aBFu8i_BFu0s_BFu0ll, "aBFu8i_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu0s");
    static aBFu8i_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8i_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu0s(Test_aBFu8i_BFu0s_BFu0s, "aBFu8i_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu15i");
    static aBFu8i_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8i_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu15i(Test_aBFu8i_BFu0s_BFu15i, "aBFu8i_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu15ll");
    static aBFu8i_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8i_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu15ll(Test_aBFu8i_BFu0s_BFu15ll, "aBFu8i_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu15s");
    static aBFu8i_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8i_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu15s(Test_aBFu8i_BFu0s_BFu15s, "aBFu8i_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu16i");
    static aBFu8i_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8i_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu16i(Test_aBFu8i_BFu0s_BFu16i, "aBFu8i_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu16ll");
    static aBFu8i_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8i_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu16ll(Test_aBFu8i_BFu0s_BFu16ll, "aBFu8i_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu16s");
    static aBFu8i_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8i_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu16s(Test_aBFu8i_BFu0s_BFu16s, "aBFu8i_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu17i");
    static aBFu8i_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8i_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu17i(Test_aBFu8i_BFu0s_BFu17i, "aBFu8i_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu17ll");
    static aBFu8i_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8i_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8i_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu17ll(Test_aBFu8i_BFu0s_BFu17ll, "aBFu8i_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu1c");
    static aBFu8i_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8i_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu1c(Test_aBFu8i_BFu0s_BFu1c, "aBFu8i_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu1i");
    static aBFu8i_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8i_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu1i(Test_aBFu8i_BFu0s_BFu1i, "aBFu8i_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu1ll");
    static aBFu8i_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8i_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu1ll(Test_aBFu8i_BFu0s_BFu1ll, "aBFu8i_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu1s");
    static aBFu8i_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8i_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu1s(Test_aBFu8i_BFu0s_BFu1s, "aBFu8i_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu31i");
    static aBFu8i_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8i_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu31i(Test_aBFu8i_BFu0s_BFu31i, "aBFu8i_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu31ll");
    static aBFu8i_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8i_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu31ll(Test_aBFu8i_BFu0s_BFu31ll, "aBFu8i_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu32i");
    static aBFu8i_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8i_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu32i(Test_aBFu8i_BFu0s_BFu32i, "aBFu8i_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu32ll");
    static aBFu8i_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8i_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu32ll(Test_aBFu8i_BFu0s_BFu32ll, "aBFu8i_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu33");
    static aBFu8i_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8i_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, 1, "aBFu8i_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu33(Test_aBFu8i_BFu0s_BFu33, "aBFu8i_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu7c");
    static aBFu8i_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8i_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu7c(Test_aBFu8i_BFu0s_BFu7c, "aBFu8i_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu7i");
    static aBFu8i_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8i_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu7i(Test_aBFu8i_BFu0s_BFu7i, "aBFu8i_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu7ll");
    static aBFu8i_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8i_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu7ll(Test_aBFu8i_BFu0s_BFu7ll, "aBFu8i_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu7s");
    static aBFu8i_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8i_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu7s(Test_aBFu8i_BFu0s_BFu7s, "aBFu8i_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu8c");
    static aBFu8i_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8i_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu8c(Test_aBFu8i_BFu0s_BFu8c, "aBFu8i_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu8i");
    static aBFu8i_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8i_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu8i(Test_aBFu8i_BFu0s_BFu8i, "aBFu8i_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu8ll");
    static aBFu8i_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8i_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu8ll(Test_aBFu8i_BFu0s_BFu8ll, "aBFu8i_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu8s");
    static aBFu8i_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8i_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu8s(Test_aBFu8i_BFu0s_BFu8s, "aBFu8i_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu9i");
    static aBFu8i_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8i_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu9i(Test_aBFu8i_BFu0s_BFu9i, "aBFu8i_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu9ll");
    static aBFu8i_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8i_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu9ll(Test_aBFu8i_BFu0s_BFu9ll, "aBFu8i_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu8i_BFu0s_BFu9s");
    static aBFu8i_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8i_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_BFu9s(Test_aBFu8i_BFu0s_BFu9s, "aBFu8i_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_C()
{
  {
    init_simple_test("aBFu8i_BFu0s_C");
    static aBFu8i_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_C(Test_aBFu8i_BFu0s_C, "aBFu8i_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_D()
{
  {
    init_simple_test("aBFu8i_BFu0s_D");
    static aBFu8i_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_D(Test_aBFu8i_BFu0s_D, "aBFu8i_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_F()
{
  {
    init_simple_test("aBFu8i_BFu0s_F");
    static aBFu8i_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_F(Test_aBFu8i_BFu0s_F, "aBFu8i_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_I()
{
  {
    init_simple_test("aBFu8i_BFu0s_I");
    static aBFu8i_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_I(Test_aBFu8i_BFu0s_I, "aBFu8i_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Ip()
{
  {
    init_simple_test("aBFu8i_BFu0s_Ip");
    static aBFu8i_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Ip(Test_aBFu8i_BFu0s_Ip, "aBFu8i_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_L()
{
  {
    init_simple_test("aBFu8i_BFu0s_L");
    static aBFu8i_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_L(Test_aBFu8i_BFu0s_L, "aBFu8i_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_S()
{
  {
    init_simple_test("aBFu8i_BFu0s_S");
    static aBFu8i_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_S(Test_aBFu8i_BFu0s_S, "aBFu8i_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Uc()
{
  {
    init_simple_test("aBFu8i_BFu0s_Uc");
    static aBFu8i_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8i_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Uc(Test_aBFu8i_BFu0s_Uc, "aBFu8i_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Ui()
{
  {
    init_simple_test("aBFu8i_BFu0s_Ui");
    static aBFu8i_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Ui(Test_aBFu8i_BFu0s_Ui, "aBFu8i_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Ul()
{
  {
    init_simple_test("aBFu8i_BFu0s_Ul");
    static aBFu8i_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Ul(Test_aBFu8i_BFu0s_Ul, "aBFu8i_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Us()
{
  {
    init_simple_test("aBFu8i_BFu0s_Us");
    static aBFu8i_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Us(Test_aBFu8i_BFu0s_Us, "aBFu8i_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu0s_Vp()
{
  {
    init_simple_test("aBFu8i_BFu0s_Vp");
    static aBFu8i_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8i_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu0s_Vp(Test_aBFu8i_BFu0s_Vp, "aBFu8i_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu15i_BFu0c");
    static aBFu8i_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15i_BFu0c(Test_aBFu8i_BFu15i_BFu0c, "aBFu8i_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu15i_BFu0i");
    static aBFu8i_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15i_BFu0i(Test_aBFu8i_BFu15i_BFu0i, "aBFu8i_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu15i_BFu0ll");
    static aBFu8i_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15i_BFu0ll(Test_aBFu8i_BFu15i_BFu0ll, "aBFu8i_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu15i_BFu0s");
    static aBFu8i_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15i_BFu0s(Test_aBFu8i_BFu15i_BFu0s, "aBFu8i_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu15ll_BFu0c");
    static aBFu8i_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15ll_BFu0c(Test_aBFu8i_BFu15ll_BFu0c, "aBFu8i_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu15ll_BFu0i");
    static aBFu8i_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15ll_BFu0i(Test_aBFu8i_BFu15ll_BFu0i, "aBFu8i_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu15ll_BFu0ll");
    static aBFu8i_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15ll_BFu0ll(Test_aBFu8i_BFu15ll_BFu0ll, "aBFu8i_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu15ll_BFu0s");
    static aBFu8i_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15ll_BFu0s(Test_aBFu8i_BFu15ll_BFu0s, "aBFu8i_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu15s_BFu0c");
    static aBFu8i_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15s_BFu0c(Test_aBFu8i_BFu15s_BFu0c, "aBFu8i_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu15s_BFu0i");
    static aBFu8i_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15s_BFu0i(Test_aBFu8i_BFu15s_BFu0i, "aBFu8i_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu15s_BFu0ll");
    static aBFu8i_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15s_BFu0ll(Test_aBFu8i_BFu15s_BFu0ll, "aBFu8i_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu15s_BFu0s");
    static aBFu8i_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8i_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8i_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu15s_BFu0s(Test_aBFu8i_BFu15s_BFu0s, "aBFu8i_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu16i_BFu0c");
    static aBFu8i_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16i_BFu0c(Test_aBFu8i_BFu16i_BFu0c, "aBFu8i_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu16i_BFu0i");
    static aBFu8i_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16i_BFu0i(Test_aBFu8i_BFu16i_BFu0i, "aBFu8i_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu16i_BFu0ll");
    static aBFu8i_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16i_BFu0ll(Test_aBFu8i_BFu16i_BFu0ll, "aBFu8i_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu16i_BFu0s");
    static aBFu8i_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16i_BFu0s(Test_aBFu8i_BFu16i_BFu0s, "aBFu8i_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu16ll_BFu0c");
    static aBFu8i_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16ll_BFu0c(Test_aBFu8i_BFu16ll_BFu0c, "aBFu8i_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu16ll_BFu0i");
    static aBFu8i_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16ll_BFu0i(Test_aBFu8i_BFu16ll_BFu0i, "aBFu8i_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu16ll_BFu0ll");
    static aBFu8i_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16ll_BFu0ll(Test_aBFu8i_BFu16ll_BFu0ll, "aBFu8i_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu16ll_BFu0s");
    static aBFu8i_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16ll_BFu0s(Test_aBFu8i_BFu16ll_BFu0s, "aBFu8i_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu16s_BFu0c");
    static aBFu8i_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16s_BFu0c(Test_aBFu8i_BFu16s_BFu0c, "aBFu8i_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu16s_BFu0i");
    static aBFu8i_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16s_BFu0i(Test_aBFu8i_BFu16s_BFu0i, "aBFu8i_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu16s_BFu0ll");
    static aBFu8i_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16s_BFu0ll(Test_aBFu8i_BFu16s_BFu0ll, "aBFu8i_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu16s_BFu0s");
    static aBFu8i_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8i_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8i_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu16s_BFu0s(Test_aBFu8i_BFu16s_BFu0s, "aBFu8i_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu17i_BFu0c");
    static aBFu8i_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17i_BFu0c(Test_aBFu8i_BFu17i_BFu0c, "aBFu8i_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu17i_BFu0i");
    static aBFu8i_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17i_BFu0i(Test_aBFu8i_BFu17i_BFu0i, "aBFu8i_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu17i_BFu0ll");
    static aBFu8i_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17i_BFu0ll(Test_aBFu8i_BFu17i_BFu0ll, "aBFu8i_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu17i_BFu0s");
    static aBFu8i_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17i_BFu0s(Test_aBFu8i_BFu17i_BFu0s, "aBFu8i_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu17ll_BFu0c");
    static aBFu8i_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17ll_BFu0c(Test_aBFu8i_BFu17ll_BFu0c, "aBFu8i_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu17ll_BFu0i");
    static aBFu8i_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17ll_BFu0i(Test_aBFu8i_BFu17ll_BFu0i, "aBFu8i_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu17ll_BFu0ll");
    static aBFu8i_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17ll_BFu0ll(Test_aBFu8i_BFu17ll_BFu0ll, "aBFu8i_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu17ll_BFu0s");
    static aBFu8i_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8i_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8i_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8i_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu17ll_BFu0s(Test_aBFu8i_BFu17ll_BFu0s, "aBFu8i_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu1c_BFu0c");
    static aBFu8i_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1c_BFu0c(Test_aBFu8i_BFu1c_BFu0c, "aBFu8i_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu1c_BFu0i");
    static aBFu8i_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1c_BFu0i(Test_aBFu8i_BFu1c_BFu0i, "aBFu8i_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu1c_BFu0ll");
    static aBFu8i_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1c_BFu0ll(Test_aBFu8i_BFu1c_BFu0ll, "aBFu8i_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu1c_BFu0s");
    static aBFu8i_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1c_BFu0s(Test_aBFu8i_BFu1c_BFu0s, "aBFu8i_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu1i_BFu0c");
    static aBFu8i_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1i_BFu0c(Test_aBFu8i_BFu1i_BFu0c, "aBFu8i_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu1i_BFu0i");
    static aBFu8i_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1i_BFu0i(Test_aBFu8i_BFu1i_BFu0i, "aBFu8i_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu1i_BFu0ll");
    static aBFu8i_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1i_BFu0ll(Test_aBFu8i_BFu1i_BFu0ll, "aBFu8i_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu1i_BFu0s");
    static aBFu8i_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1i_BFu0s(Test_aBFu8i_BFu1i_BFu0s, "aBFu8i_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu1ll_BFu0c");
    static aBFu8i_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1ll_BFu0c(Test_aBFu8i_BFu1ll_BFu0c, "aBFu8i_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu1ll_BFu0i");
    static aBFu8i_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1ll_BFu0i(Test_aBFu8i_BFu1ll_BFu0i, "aBFu8i_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu1ll_BFu0ll");
    static aBFu8i_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1ll_BFu0ll(Test_aBFu8i_BFu1ll_BFu0ll, "aBFu8i_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu1ll_BFu0s");
    static aBFu8i_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1ll_BFu0s(Test_aBFu8i_BFu1ll_BFu0s, "aBFu8i_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu1s_BFu0c");
    static aBFu8i_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1s_BFu0c(Test_aBFu8i_BFu1s_BFu0c, "aBFu8i_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu1s_BFu0i");
    static aBFu8i_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1s_BFu0i(Test_aBFu8i_BFu1s_BFu0i, "aBFu8i_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu1s_BFu0ll");
    static aBFu8i_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1s_BFu0ll(Test_aBFu8i_BFu1s_BFu0ll, "aBFu8i_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu1s_BFu0s");
    static aBFu8i_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8i_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu1s_BFu0s(Test_aBFu8i_BFu1s_BFu0s, "aBFu8i_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu31i_BFu0c");
    static aBFu8i_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31i_BFu0c(Test_aBFu8i_BFu31i_BFu0c, "aBFu8i_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu31i_BFu0i");
    static aBFu8i_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31i_BFu0i(Test_aBFu8i_BFu31i_BFu0i, "aBFu8i_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu31i_BFu0ll");
    static aBFu8i_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31i_BFu0ll(Test_aBFu8i_BFu31i_BFu0ll, "aBFu8i_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu31i_BFu0s");
    static aBFu8i_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31i_BFu0s(Test_aBFu8i_BFu31i_BFu0s, "aBFu8i_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu31ll_BFu0c");
    static aBFu8i_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31ll_BFu0c(Test_aBFu8i_BFu31ll_BFu0c, "aBFu8i_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu31ll_BFu0i");
    static aBFu8i_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31ll_BFu0i(Test_aBFu8i_BFu31ll_BFu0i, "aBFu8i_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu31ll_BFu0ll");
    static aBFu8i_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31ll_BFu0ll(Test_aBFu8i_BFu31ll_BFu0ll, "aBFu8i_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu31ll_BFu0s");
    static aBFu8i_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8i_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8i_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu31ll_BFu0s(Test_aBFu8i_BFu31ll_BFu0s, "aBFu8i_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu32i_BFu0c");
    static aBFu8i_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32i_BFu0c(Test_aBFu8i_BFu32i_BFu0c, "aBFu8i_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu32i_BFu0i");
    static aBFu8i_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32i_BFu0i(Test_aBFu8i_BFu32i_BFu0i, "aBFu8i_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu32i_BFu0ll");
    static aBFu8i_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32i_BFu0ll(Test_aBFu8i_BFu32i_BFu0ll, "aBFu8i_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu32i_BFu0s");
    static aBFu8i_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32i_BFu0s(Test_aBFu8i_BFu32i_BFu0s, "aBFu8i_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu32ll_BFu0c");
    static aBFu8i_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32ll_BFu0c(Test_aBFu8i_BFu32ll_BFu0c, "aBFu8i_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu32ll_BFu0i");
    static aBFu8i_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32ll_BFu0i(Test_aBFu8i_BFu32ll_BFu0i, "aBFu8i_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu32ll_BFu0ll");
    static aBFu8i_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32ll_BFu0ll(Test_aBFu8i_BFu32ll_BFu0ll, "aBFu8i_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu32ll_BFu0s");
    static aBFu8i_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8i_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8i_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu32ll_BFu0s(Test_aBFu8i_BFu32ll_BFu0s, "aBFu8i_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu33_BFu0c");
    static aBFu8i_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8i_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8i_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu33_BFu0c(Test_aBFu8i_BFu33_BFu0c, "aBFu8i_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu33_BFu0i");
    static aBFu8i_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8i_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu33_BFu0i(Test_aBFu8i_BFu33_BFu0i, "aBFu8i_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu33_BFu0ll");
    static aBFu8i_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8i_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu33_BFu0ll(Test_aBFu8i_BFu33_BFu0ll, "aBFu8i_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu33_BFu0s");
    static aBFu8i_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8i_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8i_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8i_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu33_BFu0s(Test_aBFu8i_BFu33_BFu0s, "aBFu8i_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu7c_BFu0c");
    static aBFu8i_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7c_BFu0c(Test_aBFu8i_BFu7c_BFu0c, "aBFu8i_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu7c_BFu0i");
    static aBFu8i_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7c_BFu0i(Test_aBFu8i_BFu7c_BFu0i, "aBFu8i_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu7c_BFu0ll");
    static aBFu8i_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7c_BFu0ll(Test_aBFu8i_BFu7c_BFu0ll, "aBFu8i_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu7c_BFu0s");
    static aBFu8i_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7c_BFu0s(Test_aBFu8i_BFu7c_BFu0s, "aBFu8i_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu7i_BFu0c");
    static aBFu8i_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7i_BFu0c(Test_aBFu8i_BFu7i_BFu0c, "aBFu8i_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu7i_BFu0i");
    static aBFu8i_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7i_BFu0i(Test_aBFu8i_BFu7i_BFu0i, "aBFu8i_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu7i_BFu0ll");
    static aBFu8i_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7i_BFu0ll(Test_aBFu8i_BFu7i_BFu0ll, "aBFu8i_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu7i_BFu0s");
    static aBFu8i_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7i_BFu0s(Test_aBFu8i_BFu7i_BFu0s, "aBFu8i_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu7ll_BFu0c");
    static aBFu8i_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7ll_BFu0c(Test_aBFu8i_BFu7ll_BFu0c, "aBFu8i_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu7ll_BFu0i");
    static aBFu8i_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7ll_BFu0i(Test_aBFu8i_BFu7ll_BFu0i, "aBFu8i_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu7ll_BFu0ll");
    static aBFu8i_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7ll_BFu0ll(Test_aBFu8i_BFu7ll_BFu0ll, "aBFu8i_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu7ll_BFu0s");
    static aBFu8i_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7ll_BFu0s(Test_aBFu8i_BFu7ll_BFu0s, "aBFu8i_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu7s_BFu0c");
    static aBFu8i_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7s_BFu0c(Test_aBFu8i_BFu7s_BFu0c, "aBFu8i_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu7s_BFu0i");
    static aBFu8i_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7s_BFu0i(Test_aBFu8i_BFu7s_BFu0i, "aBFu8i_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu7s_BFu0ll");
    static aBFu8i_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7s_BFu0ll(Test_aBFu8i_BFu7s_BFu0ll, "aBFu8i_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu7s_BFu0s");
    static aBFu8i_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8i_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8i_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu7s_BFu0s(Test_aBFu8i_BFu7s_BFu0s, "aBFu8i_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu8c_BFu0c");
    static aBFu8i_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8c_BFu0c(Test_aBFu8i_BFu8c_BFu0c, "aBFu8i_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu8c_BFu0i");
    static aBFu8i_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8c_BFu0i(Test_aBFu8i_BFu8c_BFu0i, "aBFu8i_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu8c_BFu0ll");
    static aBFu8i_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8c_BFu0ll(Test_aBFu8i_BFu8c_BFu0ll, "aBFu8i_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu8c_BFu0s");
    static aBFu8i_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8c_BFu0s(Test_aBFu8i_BFu8c_BFu0s, "aBFu8i_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu8i_BFu0c");
    static aBFu8i_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8i_BFu0c(Test_aBFu8i_BFu8i_BFu0c, "aBFu8i_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu8i_BFu0i");
    static aBFu8i_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8i_BFu0i(Test_aBFu8i_BFu8i_BFu0i, "aBFu8i_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu8i_BFu0ll");
    static aBFu8i_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8i_BFu0ll(Test_aBFu8i_BFu8i_BFu0ll, "aBFu8i_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu8i_BFu0s");
    static aBFu8i_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8i_BFu0s(Test_aBFu8i_BFu8i_BFu0s, "aBFu8i_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu8ll_BFu0c");
    static aBFu8i_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8ll_BFu0c(Test_aBFu8i_BFu8ll_BFu0c, "aBFu8i_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu8ll_BFu0i");
    static aBFu8i_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8ll_BFu0i(Test_aBFu8i_BFu8ll_BFu0i, "aBFu8i_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu8ll_BFu0ll");
    static aBFu8i_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8ll_BFu0ll(Test_aBFu8i_BFu8ll_BFu0ll, "aBFu8i_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu8ll_BFu0s");
    static aBFu8i_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8ll_BFu0s(Test_aBFu8i_BFu8ll_BFu0s, "aBFu8i_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu8s_BFu0c");
    static aBFu8i_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8s_BFu0c(Test_aBFu8i_BFu8s_BFu0c, "aBFu8i_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu8s_BFu0i");
    static aBFu8i_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8s_BFu0i(Test_aBFu8i_BFu8s_BFu0i, "aBFu8i_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu8s_BFu0ll");
    static aBFu8i_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8s_BFu0ll(Test_aBFu8i_BFu8s_BFu0ll, "aBFu8i_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu8s_BFu0s");
    static aBFu8i_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8i_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu8s_BFu0s(Test_aBFu8i_BFu8s_BFu0s, "aBFu8i_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu9i_BFu0c");
    static aBFu8i_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9i_BFu0c(Test_aBFu8i_BFu9i_BFu0c, "aBFu8i_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu9i_BFu0i");
    static aBFu8i_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9i_BFu0i(Test_aBFu8i_BFu9i_BFu0i, "aBFu8i_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu9i_BFu0ll");
    static aBFu8i_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9i_BFu0ll(Test_aBFu8i_BFu9i_BFu0ll, "aBFu8i_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu9i_BFu0s");
    static aBFu8i_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9i_BFu0s(Test_aBFu8i_BFu9i_BFu0s, "aBFu8i_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu9ll_BFu0c");
    static aBFu8i_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9ll_BFu0c(Test_aBFu8i_BFu9ll_BFu0c, "aBFu8i_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu9ll_BFu0i");
    static aBFu8i_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9ll_BFu0i(Test_aBFu8i_BFu9ll_BFu0i, "aBFu8i_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu9ll_BFu0ll");
    static aBFu8i_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9ll_BFu0ll(Test_aBFu8i_BFu9ll_BFu0ll, "aBFu8i_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu9ll_BFu0s");
    static aBFu8i_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9ll_BFu0s(Test_aBFu8i_BFu9ll_BFu0s, "aBFu8i_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu8i_BFu9s_BFu0c");
    static aBFu8i_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9s_BFu0c(Test_aBFu8i_BFu9s_BFu0c, "aBFu8i_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu8i_BFu9s_BFu0i");
    static aBFu8i_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9s_BFu0i(Test_aBFu8i_BFu9s_BFu0i, "aBFu8i_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu8i_BFu9s_BFu0ll");
    static aBFu8i_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9s_BFu0ll(Test_aBFu8i_BFu9s_BFu0ll, "aBFu8i_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu8i_BFu9s_BFu0s");
    static aBFu8i_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8i_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8i_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8i_BFu9s_BFu0s(Test_aBFu8i_BFu9s_BFu0s, "aBFu8i_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_C_BFu0c()
{
  {
    init_simple_test("aBFu8i_C_BFu0c");
    static aBFu8i_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_C_BFu0c(Test_aBFu8i_C_BFu0c, "aBFu8i_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_C_BFu0i()
{
  {
    init_simple_test("aBFu8i_C_BFu0i");
    static aBFu8i_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_C_BFu0i(Test_aBFu8i_C_BFu0i, "aBFu8i_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_C_BFu0ll()
{
  {
    init_simple_test("aBFu8i_C_BFu0ll");
    static aBFu8i_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_C_BFu0ll(Test_aBFu8i_C_BFu0ll, "aBFu8i_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_C_BFu0s()
{
  {
    init_simple_test("aBFu8i_C_BFu0s");
    static aBFu8i_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_C_BFu0s(Test_aBFu8i_C_BFu0s, "aBFu8i_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_D_BFu0c()
{
  {
    init_simple_test("aBFu8i_D_BFu0c");
    static aBFu8i_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_D_BFu0c(Test_aBFu8i_D_BFu0c, "aBFu8i_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_D_BFu0i()
{
  {
    init_simple_test("aBFu8i_D_BFu0i");
    static aBFu8i_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_D_BFu0i(Test_aBFu8i_D_BFu0i, "aBFu8i_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_D_BFu0ll()
{
  {
    init_simple_test("aBFu8i_D_BFu0ll");
    static aBFu8i_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_D_BFu0ll(Test_aBFu8i_D_BFu0ll, "aBFu8i_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_D_BFu0s()
{
  {
    init_simple_test("aBFu8i_D_BFu0s");
    static aBFu8i_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_D_BFu0s(Test_aBFu8i_D_BFu0s, "aBFu8i_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_F_BFu0c()
{
  {
    init_simple_test("aBFu8i_F_BFu0c");
    static aBFu8i_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_F_BFu0c(Test_aBFu8i_F_BFu0c, "aBFu8i_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_F_BFu0i()
{
  {
    init_simple_test("aBFu8i_F_BFu0i");
    static aBFu8i_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_F_BFu0i(Test_aBFu8i_F_BFu0i, "aBFu8i_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_F_BFu0ll()
{
  {
    init_simple_test("aBFu8i_F_BFu0ll");
    static aBFu8i_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_F_BFu0ll(Test_aBFu8i_F_BFu0ll, "aBFu8i_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_F_BFu0s()
{
  {
    init_simple_test("aBFu8i_F_BFu0s");
    static aBFu8i_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_F_BFu0s(Test_aBFu8i_F_BFu0s, "aBFu8i_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_I_BFu0c()
{
  {
    init_simple_test("aBFu8i_I_BFu0c");
    static aBFu8i_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_I_BFu0c(Test_aBFu8i_I_BFu0c, "aBFu8i_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_I_BFu0i()
{
  {
    init_simple_test("aBFu8i_I_BFu0i");
    static aBFu8i_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_I_BFu0i(Test_aBFu8i_I_BFu0i, "aBFu8i_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_I_BFu0ll()
{
  {
    init_simple_test("aBFu8i_I_BFu0ll");
    static aBFu8i_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_I_BFu0ll(Test_aBFu8i_I_BFu0ll, "aBFu8i_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_I_BFu0s()
{
  {
    init_simple_test("aBFu8i_I_BFu0s");
    static aBFu8i_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_I_BFu0s(Test_aBFu8i_I_BFu0s, "aBFu8i_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ip_BFu0c()
{
  {
    init_simple_test("aBFu8i_Ip_BFu0c");
    static aBFu8i_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ip_BFu0c(Test_aBFu8i_Ip_BFu0c, "aBFu8i_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ip_BFu0i()
{
  {
    init_simple_test("aBFu8i_Ip_BFu0i");
    static aBFu8i_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ip_BFu0i(Test_aBFu8i_Ip_BFu0i, "aBFu8i_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Ip_BFu0ll");
    static aBFu8i_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8i_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ip_BFu0ll(Test_aBFu8i_Ip_BFu0ll, "aBFu8i_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ip_BFu0s()
{
  {
    init_simple_test("aBFu8i_Ip_BFu0s");
    static aBFu8i_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ip_BFu0s(Test_aBFu8i_Ip_BFu0s, "aBFu8i_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_L_BFu0c()
{
  {
    init_simple_test("aBFu8i_L_BFu0c");
    static aBFu8i_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_L_BFu0c(Test_aBFu8i_L_BFu0c, "aBFu8i_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_L_BFu0i()
{
  {
    init_simple_test("aBFu8i_L_BFu0i");
    static aBFu8i_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_L_BFu0i(Test_aBFu8i_L_BFu0i, "aBFu8i_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_L_BFu0ll()
{
  {
    init_simple_test("aBFu8i_L_BFu0ll");
    static aBFu8i_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_L_BFu0ll(Test_aBFu8i_L_BFu0ll, "aBFu8i_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_L_BFu0s()
{
  {
    init_simple_test("aBFu8i_L_BFu0s");
    static aBFu8i_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_L_BFu0s(Test_aBFu8i_L_BFu0s, "aBFu8i_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_S_BFu0c()
{
  {
    init_simple_test("aBFu8i_S_BFu0c");
    static aBFu8i_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_S_BFu0c(Test_aBFu8i_S_BFu0c, "aBFu8i_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_S_BFu0i()
{
  {
    init_simple_test("aBFu8i_S_BFu0i");
    static aBFu8i_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_S_BFu0i(Test_aBFu8i_S_BFu0i, "aBFu8i_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_S_BFu0ll()
{
  {
    init_simple_test("aBFu8i_S_BFu0ll");
    static aBFu8i_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_S_BFu0ll(Test_aBFu8i_S_BFu0ll, "aBFu8i_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_S_BFu0s()
{
  {
    init_simple_test("aBFu8i_S_BFu0s");
    static aBFu8i_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_S_BFu0s(Test_aBFu8i_S_BFu0s, "aBFu8i_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Uc_BFu0c()
{
  {
    init_simple_test("aBFu8i_Uc_BFu0c");
    static aBFu8i_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Uc_BFu0c(Test_aBFu8i_Uc_BFu0c, "aBFu8i_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Uc_BFu0i()
{
  {
    init_simple_test("aBFu8i_Uc_BFu0i");
    static aBFu8i_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Uc_BFu0i(Test_aBFu8i_Uc_BFu0i, "aBFu8i_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Uc_BFu0ll");
    static aBFu8i_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Uc_BFu0ll(Test_aBFu8i_Uc_BFu0ll, "aBFu8i_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Uc_BFu0s()
{
  {
    init_simple_test("aBFu8i_Uc_BFu0s");
    static aBFu8i_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8i_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Uc_BFu0s(Test_aBFu8i_Uc_BFu0s, "aBFu8i_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ui_BFu0c()
{
  {
    init_simple_test("aBFu8i_Ui_BFu0c");
    static aBFu8i_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8i_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ui_BFu0c(Test_aBFu8i_Ui_BFu0c, "aBFu8i_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ui_BFu0i()
{
  {
    init_simple_test("aBFu8i_Ui_BFu0i");
    static aBFu8i_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ui_BFu0i(Test_aBFu8i_Ui_BFu0i, "aBFu8i_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Ui_BFu0ll");
    static aBFu8i_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8i_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ui_BFu0ll(Test_aBFu8i_Ui_BFu0ll, "aBFu8i_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ui_BFu0s()
{
  {
    init_simple_test("aBFu8i_Ui_BFu0s");
    static aBFu8i_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8i_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ui_BFu0s(Test_aBFu8i_Ui_BFu0s, "aBFu8i_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ul_BFu0c()
{
  {
    init_simple_test("aBFu8i_Ul_BFu0c");
    static aBFu8i_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8i_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ul_BFu0c(Test_aBFu8i_Ul_BFu0c, "aBFu8i_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ul_BFu0i()
{
  {
    init_simple_test("aBFu8i_Ul_BFu0i");
    static aBFu8i_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8i_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ul_BFu0i(Test_aBFu8i_Ul_BFu0i, "aBFu8i_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Ul_BFu0ll");
    static aBFu8i_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8i_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ul_BFu0ll(Test_aBFu8i_Ul_BFu0ll, "aBFu8i_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Ul_BFu0s()
{
  {
    init_simple_test("aBFu8i_Ul_BFu0s");
    static aBFu8i_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8i_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Ul_BFu0s(Test_aBFu8i_Ul_BFu0s, "aBFu8i_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Us_BFu0c()
{
  {
    init_simple_test("aBFu8i_Us_BFu0c");
    static aBFu8i_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8i_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Us_BFu0c(Test_aBFu8i_Us_BFu0c, "aBFu8i_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Us_BFu0i()
{
  {
    init_simple_test("aBFu8i_Us_BFu0i");
    static aBFu8i_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Us_BFu0i(Test_aBFu8i_Us_BFu0i, "aBFu8i_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Us_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Us_BFu0ll");
    static aBFu8i_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8i_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Us_BFu0ll(Test_aBFu8i_Us_BFu0ll, "aBFu8i_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Us_BFu0s()
{
  {
    init_simple_test("aBFu8i_Us_BFu0s");
    static aBFu8i_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8i_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Us_BFu0s(Test_aBFu8i_Us_BFu0s, "aBFu8i_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Vp_BFu0c()
{
  {
    init_simple_test("aBFu8i_Vp_BFu0c");
    static aBFu8i_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8i_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8i_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Vp_BFu0c(Test_aBFu8i_Vp_BFu0c, "aBFu8i_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Vp_BFu0i()
{
  {
    init_simple_test("aBFu8i_Vp_BFu0i");
    static aBFu8i_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8i_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8i_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Vp_BFu0i(Test_aBFu8i_Vp_BFu0i, "aBFu8i_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu8i_Vp_BFu0ll");
    static aBFu8i_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8i_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8i_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Vp_BFu0ll(Test_aBFu8i_Vp_BFu0ll, "aBFu8i_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8i_Vp_BFu0s()
{
  {
    init_simple_test("aBFu8i_Vp_BFu0s");
    static aBFu8i_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8i_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8i_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8i_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8i_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8i_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8i_Vp_BFu0s(Test_aBFu8i_Vp_BFu0s, "aBFu8i_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu0c");
    static aBFu8ll_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c(Test_aBFu8ll_BFu0c, "aBFu8ll_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu0c");
    static aBFu8ll_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8ll_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu0c(Test_aBFu8ll_BFu0c_BFu0c, "aBFu8ll_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu0i");
    static aBFu8ll_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu0i(Test_aBFu8ll_BFu0c_BFu0i, "aBFu8ll_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu0ll");
    static aBFu8ll_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu0ll(Test_aBFu8ll_BFu0c_BFu0ll, "aBFu8ll_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu0s");
    static aBFu8ll_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8ll_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu0s(Test_aBFu8ll_BFu0c_BFu0s, "aBFu8ll_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu15i");
    static aBFu8ll_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu15i(Test_aBFu8ll_BFu0c_BFu15i, "aBFu8ll_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu15ll");
    static aBFu8ll_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu15ll(Test_aBFu8ll_BFu0c_BFu15ll, "aBFu8ll_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu15s");
    static aBFu8ll_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu15s(Test_aBFu8ll_BFu0c_BFu15s, "aBFu8ll_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu16i");
    static aBFu8ll_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu16i(Test_aBFu8ll_BFu0c_BFu16i, "aBFu8ll_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu16ll");
    static aBFu8ll_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu16ll(Test_aBFu8ll_BFu0c_BFu16ll, "aBFu8ll_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu16s");
    static aBFu8ll_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu16s(Test_aBFu8ll_BFu0c_BFu16s, "aBFu8ll_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu17i");
    static aBFu8ll_BFu0c_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu17i(Test_aBFu8ll_BFu0c_BFu17i, "aBFu8ll_BFu0c_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu17ll");
    static aBFu8ll_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu17ll(Test_aBFu8ll_BFu0c_BFu17ll, "aBFu8ll_BFu0c_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu1c");
    static aBFu8ll_BFu0c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu1c(Test_aBFu8ll_BFu0c_BFu1c, "aBFu8ll_BFu0c_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu1i");
    static aBFu8ll_BFu0c_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu1i(Test_aBFu8ll_BFu0c_BFu1i, "aBFu8ll_BFu0c_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu1ll");
    static aBFu8ll_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu1ll(Test_aBFu8ll_BFu0c_BFu1ll, "aBFu8ll_BFu0c_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu1s");
    static aBFu8ll_BFu0c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu1s(Test_aBFu8ll_BFu0c_BFu1s, "aBFu8ll_BFu0c_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu31i");
    static aBFu8ll_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu31i(Test_aBFu8ll_BFu0c_BFu31i, "aBFu8ll_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu31ll");
    static aBFu8ll_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu31ll(Test_aBFu8ll_BFu0c_BFu31ll, "aBFu8ll_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu32i");
    static aBFu8ll_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu32i(Test_aBFu8ll_BFu0c_BFu32i, "aBFu8ll_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu32ll");
    static aBFu8ll_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu32ll(Test_aBFu8ll_BFu0c_BFu32ll, "aBFu8ll_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu33");
    static aBFu8ll_BFu0c_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8ll_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8ll_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu33(Test_aBFu8ll_BFu0c_BFu33, "aBFu8ll_BFu0c_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu7c");
    static aBFu8ll_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu7c(Test_aBFu8ll_BFu0c_BFu7c, "aBFu8ll_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu7i");
    static aBFu8ll_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu7i(Test_aBFu8ll_BFu0c_BFu7i, "aBFu8ll_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu7ll");
    static aBFu8ll_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu7ll(Test_aBFu8ll_BFu0c_BFu7ll, "aBFu8ll_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu7s");
    static aBFu8ll_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu7s(Test_aBFu8ll_BFu0c_BFu7s, "aBFu8ll_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu8c");
    static aBFu8ll_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu8c(Test_aBFu8ll_BFu0c_BFu8c, "aBFu8ll_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu8i");
    static aBFu8ll_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu8i(Test_aBFu8ll_BFu0c_BFu8i, "aBFu8ll_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu8ll");
    static aBFu8ll_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu8ll(Test_aBFu8ll_BFu0c_BFu8ll, "aBFu8ll_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu8s");
    static aBFu8ll_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu8s(Test_aBFu8ll_BFu0c_BFu8s, "aBFu8ll_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu9i");
    static aBFu8ll_BFu0c_BFu9i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu9i(Test_aBFu8ll_BFu0c_BFu9i, "aBFu8ll_BFu0c_BFu9i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu9ll");
    static aBFu8ll_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu9ll(Test_aBFu8ll_BFu0c_BFu9ll, "aBFu8ll_BFu0c_BFu9ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu8ll_BFu0c_BFu9s");
    static aBFu8ll_BFu0c_BFu9s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_BFu9s(Test_aBFu8ll_BFu0c_BFu9s, "aBFu8ll_BFu0c_BFu9s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_C()
{
  {
    init_simple_test("aBFu8ll_BFu0c_C");
    static aBFu8ll_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_C(Test_aBFu8ll_BFu0c_C, "aBFu8ll_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_D()
{
  {
    init_simple_test("aBFu8ll_BFu0c_D");
    static aBFu8ll_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_D(Test_aBFu8ll_BFu0c_D, "aBFu8ll_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_F()
{
  {
    init_simple_test("aBFu8ll_BFu0c_F");
    static aBFu8ll_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_F(Test_aBFu8ll_BFu0c_F, "aBFu8ll_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_I()
{
  {
    init_simple_test("aBFu8ll_BFu0c_I");
    static aBFu8ll_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_I(Test_aBFu8ll_BFu0c_I, "aBFu8ll_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Ip()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Ip");
    static aBFu8ll_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Ip(Test_aBFu8ll_BFu0c_Ip, "aBFu8ll_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_L()
{
  {
    init_simple_test("aBFu8ll_BFu0c_L");
    static aBFu8ll_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_L(Test_aBFu8ll_BFu0c_L, "aBFu8ll_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_S()
{
  {
    init_simple_test("aBFu8ll_BFu0c_S");
    static aBFu8ll_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_S(Test_aBFu8ll_BFu0c_S, "aBFu8ll_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Uc()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Uc");
    static aBFu8ll_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Uc(Test_aBFu8ll_BFu0c_Uc, "aBFu8ll_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Ui()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Ui");
    static aBFu8ll_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Ui(Test_aBFu8ll_BFu0c_Ui, "aBFu8ll_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Ul()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Ul");
    static aBFu8ll_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Ul(Test_aBFu8ll_BFu0c_Ul, "aBFu8ll_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Us()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Us");
    static aBFu8ll_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Us(Test_aBFu8ll_BFu0c_Us, "aBFu8ll_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0c_Vp()
{
  {
    init_simple_test("aBFu8ll_BFu0c_Vp");
    static aBFu8ll_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu8ll_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0c_Vp(Test_aBFu8ll_BFu0c_Vp, "aBFu8ll_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu0i");
    static aBFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i(Test_aBFu8ll_BFu0i, "aBFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu0c");
    static aBFu8ll_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu0c(Test_aBFu8ll_BFu0i_BFu0c, "aBFu8ll_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu0i");
    static aBFu8ll_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu0i(Test_aBFu8ll_BFu0i_BFu0i, "aBFu8ll_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu0ll");
    static aBFu8ll_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu0ll(Test_aBFu8ll_BFu0i_BFu0ll, "aBFu8ll_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu0s");
    static aBFu8ll_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu0s(Test_aBFu8ll_BFu0i_BFu0s, "aBFu8ll_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu15i");
    static aBFu8ll_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8ll_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu15i(Test_aBFu8ll_BFu0i_BFu15i, "aBFu8ll_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu15ll");
    static aBFu8ll_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8ll_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu15ll(Test_aBFu8ll_BFu0i_BFu15ll, "aBFu8ll_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu15s");
    static aBFu8ll_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8ll_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu15s(Test_aBFu8ll_BFu0i_BFu15s, "aBFu8ll_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu16i");
    static aBFu8ll_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8ll_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu16i(Test_aBFu8ll_BFu0i_BFu16i, "aBFu8ll_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu16ll");
    static aBFu8ll_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8ll_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu16ll(Test_aBFu8ll_BFu0i_BFu16ll, "aBFu8ll_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu16s");
    static aBFu8ll_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8ll_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu16s(Test_aBFu8ll_BFu0i_BFu16s, "aBFu8ll_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu17i");
    static aBFu8ll_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8ll_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8ll_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu17i(Test_aBFu8ll_BFu0i_BFu17i, "aBFu8ll_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu17ll");
    static aBFu8ll_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8ll_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8ll_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu17ll(Test_aBFu8ll_BFu0i_BFu17ll, "aBFu8ll_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu1c");
    static aBFu8ll_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8ll_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu1c(Test_aBFu8ll_BFu0i_BFu1c, "aBFu8ll_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu1i");
    static aBFu8ll_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8ll_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu1i(Test_aBFu8ll_BFu0i_BFu1i, "aBFu8ll_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu1ll");
    static aBFu8ll_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8ll_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu1ll(Test_aBFu8ll_BFu0i_BFu1ll, "aBFu8ll_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu1s");
    static aBFu8ll_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8ll_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu1s(Test_aBFu8ll_BFu0i_BFu1s, "aBFu8ll_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu31i");
    static aBFu8ll_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8ll_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu31i(Test_aBFu8ll_BFu0i_BFu31i, "aBFu8ll_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu31ll");
    static aBFu8ll_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8ll_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu31ll(Test_aBFu8ll_BFu0i_BFu31ll, "aBFu8ll_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu32i");
    static aBFu8ll_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8ll_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu32i(Test_aBFu8ll_BFu0i_BFu32i, "aBFu8ll_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu32ll");
    static aBFu8ll_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8ll_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu32ll(Test_aBFu8ll_BFu0i_BFu32ll, "aBFu8ll_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu33");
    static aBFu8ll_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu8ll_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, 1, "aBFu8ll_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu33(Test_aBFu8ll_BFu0i_BFu33, "aBFu8ll_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu7c");
    static aBFu8ll_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8ll_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu7c(Test_aBFu8ll_BFu0i_BFu7c, "aBFu8ll_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu7i");
    static aBFu8ll_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8ll_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu7i(Test_aBFu8ll_BFu0i_BFu7i, "aBFu8ll_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu7ll");
    static aBFu8ll_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8ll_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu7ll(Test_aBFu8ll_BFu0i_BFu7ll, "aBFu8ll_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu7s");
    static aBFu8ll_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8ll_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu7s(Test_aBFu8ll_BFu0i_BFu7s, "aBFu8ll_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu8c");
    static aBFu8ll_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8ll_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu8c(Test_aBFu8ll_BFu0i_BFu8c, "aBFu8ll_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu8i");
    static aBFu8ll_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8ll_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu8i(Test_aBFu8ll_BFu0i_BFu8i, "aBFu8ll_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu8ll");
    static aBFu8ll_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8ll_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu8ll(Test_aBFu8ll_BFu0i_BFu8ll, "aBFu8ll_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu8s");
    static aBFu8ll_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8ll_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu8s(Test_aBFu8ll_BFu0i_BFu8s, "aBFu8ll_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu9i");
    static aBFu8ll_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8ll_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu9i(Test_aBFu8ll_BFu0i_BFu9i, "aBFu8ll_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu9ll");
    static aBFu8ll_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8ll_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu9ll(Test_aBFu8ll_BFu0i_BFu9ll, "aBFu8ll_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu8ll_BFu0i_BFu9s");
    static aBFu8ll_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8ll_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_BFu9s(Test_aBFu8ll_BFu0i_BFu9s, "aBFu8ll_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_C()
{
  {
    init_simple_test("aBFu8ll_BFu0i_C");
    static aBFu8ll_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_C(Test_aBFu8ll_BFu0i_C, "aBFu8ll_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_D()
{
  {
    init_simple_test("aBFu8ll_BFu0i_D");
    static aBFu8ll_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_D(Test_aBFu8ll_BFu0i_D, "aBFu8ll_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_F()
{
  {
    init_simple_test("aBFu8ll_BFu0i_F");
    static aBFu8ll_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_F(Test_aBFu8ll_BFu0i_F, "aBFu8ll_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_I()
{
  {
    init_simple_test("aBFu8ll_BFu0i_I");
    static aBFu8ll_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_I(Test_aBFu8ll_BFu0i_I, "aBFu8ll_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Ip()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Ip");
    static aBFu8ll_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Ip(Test_aBFu8ll_BFu0i_Ip, "aBFu8ll_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_L()
{
  {
    init_simple_test("aBFu8ll_BFu0i_L");
    static aBFu8ll_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_L(Test_aBFu8ll_BFu0i_L, "aBFu8ll_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_S()
{
  {
    init_simple_test("aBFu8ll_BFu0i_S");
    static aBFu8ll_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_S(Test_aBFu8ll_BFu0i_S, "aBFu8ll_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Uc()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Uc");
    static aBFu8ll_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Uc(Test_aBFu8ll_BFu0i_Uc, "aBFu8ll_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Ui()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Ui");
    static aBFu8ll_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Ui(Test_aBFu8ll_BFu0i_Ui, "aBFu8ll_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Ul()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Ul");
    static aBFu8ll_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Ul(Test_aBFu8ll_BFu0i_Ul, "aBFu8ll_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Us()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Us");
    static aBFu8ll_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Us(Test_aBFu8ll_BFu0i_Us, "aBFu8ll_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0i_Vp()
{
  {
    init_simple_test("aBFu8ll_BFu0i_Vp");
    static aBFu8ll_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8ll_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0i_Vp(Test_aBFu8ll_BFu0i_Vp, "aBFu8ll_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll");
    static aBFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll(Test_aBFu8ll_BFu0ll, "aBFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu0c");
    static aBFu8ll_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu0c(Test_aBFu8ll_BFu0ll_BFu0c, "aBFu8ll_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu0i");
    static aBFu8ll_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu0i(Test_aBFu8ll_BFu0ll_BFu0i, "aBFu8ll_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu0ll");
    static aBFu8ll_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu0ll(Test_aBFu8ll_BFu0ll_BFu0ll, "aBFu8ll_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu0s");
    static aBFu8ll_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu0s(Test_aBFu8ll_BFu0ll_BFu0s, "aBFu8ll_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu15i");
    static aBFu8ll_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8ll_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu15i(Test_aBFu8ll_BFu0ll_BFu15i, "aBFu8ll_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu15ll");
    static aBFu8ll_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8ll_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu15ll(Test_aBFu8ll_BFu0ll_BFu15ll, "aBFu8ll_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu15s");
    static aBFu8ll_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8ll_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu15s(Test_aBFu8ll_BFu0ll_BFu15s, "aBFu8ll_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu16i");
    static aBFu8ll_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8ll_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu16i(Test_aBFu8ll_BFu0ll_BFu16i, "aBFu8ll_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu16ll");
    static aBFu8ll_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8ll_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu16ll(Test_aBFu8ll_BFu0ll_BFu16ll, "aBFu8ll_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu16s");
    static aBFu8ll_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8ll_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu16s(Test_aBFu8ll_BFu0ll_BFu16s, "aBFu8ll_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu17i");
    static aBFu8ll_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8ll_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8ll_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu17i(Test_aBFu8ll_BFu0ll_BFu17i, "aBFu8ll_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu17ll");
    static aBFu8ll_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8ll_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8ll_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu17ll(Test_aBFu8ll_BFu0ll_BFu17ll, "aBFu8ll_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu1c");
    static aBFu8ll_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8ll_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu1c(Test_aBFu8ll_BFu0ll_BFu1c, "aBFu8ll_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu1i");
    static aBFu8ll_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8ll_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu1i(Test_aBFu8ll_BFu0ll_BFu1i, "aBFu8ll_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu1ll");
    static aBFu8ll_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8ll_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu1ll(Test_aBFu8ll_BFu0ll_BFu1ll, "aBFu8ll_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu1s");
    static aBFu8ll_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8ll_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu1s(Test_aBFu8ll_BFu0ll_BFu1s, "aBFu8ll_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu31i");
    static aBFu8ll_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8ll_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu31i(Test_aBFu8ll_BFu0ll_BFu31i, "aBFu8ll_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu31ll");
    static aBFu8ll_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8ll_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu31ll(Test_aBFu8ll_BFu0ll_BFu31ll, "aBFu8ll_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu32i");
    static aBFu8ll_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8ll_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu32i(Test_aBFu8ll_BFu0ll_BFu32i, "aBFu8ll_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu32ll");
    static aBFu8ll_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8ll_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu32ll(Test_aBFu8ll_BFu0ll_BFu32ll, "aBFu8ll_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu33");
    static aBFu8ll_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu8ll_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aBFu8ll_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu33(Test_aBFu8ll_BFu0ll_BFu33, "aBFu8ll_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu7c");
    static aBFu8ll_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8ll_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu7c(Test_aBFu8ll_BFu0ll_BFu7c, "aBFu8ll_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu7i");
    static aBFu8ll_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8ll_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu7i(Test_aBFu8ll_BFu0ll_BFu7i, "aBFu8ll_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu7ll");
    static aBFu8ll_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8ll_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu7ll(Test_aBFu8ll_BFu0ll_BFu7ll, "aBFu8ll_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu7s");
    static aBFu8ll_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8ll_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu7s(Test_aBFu8ll_BFu0ll_BFu7s, "aBFu8ll_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu8c");
    static aBFu8ll_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8ll_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu8c(Test_aBFu8ll_BFu0ll_BFu8c, "aBFu8ll_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu8i");
    static aBFu8ll_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8ll_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu8i(Test_aBFu8ll_BFu0ll_BFu8i, "aBFu8ll_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu8ll");
    static aBFu8ll_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8ll_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu8ll(Test_aBFu8ll_BFu0ll_BFu8ll, "aBFu8ll_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu8s");
    static aBFu8ll_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8ll_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu8s(Test_aBFu8ll_BFu0ll_BFu8s, "aBFu8ll_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu9i");
    static aBFu8ll_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8ll_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu9i(Test_aBFu8ll_BFu0ll_BFu9i, "aBFu8ll_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu9ll");
    static aBFu8ll_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8ll_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu9ll(Test_aBFu8ll_BFu0ll_BFu9ll, "aBFu8ll_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_BFu9s");
    static aBFu8ll_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8ll_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_BFu9s(Test_aBFu8ll_BFu0ll_BFu9s, "aBFu8ll_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_C()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_C");
    static aBFu8ll_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_C(Test_aBFu8ll_BFu0ll_C, "aBFu8ll_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_D()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_D");
    static aBFu8ll_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_D(Test_aBFu8ll_BFu0ll_D, "aBFu8ll_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_F()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_F");
    static aBFu8ll_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_F(Test_aBFu8ll_BFu0ll_F, "aBFu8ll_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_I()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_I");
    static aBFu8ll_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_I(Test_aBFu8ll_BFu0ll_I, "aBFu8ll_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Ip");
    static aBFu8ll_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8ll_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Ip(Test_aBFu8ll_BFu0ll_Ip, "aBFu8ll_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_L()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_L");
    static aBFu8ll_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_L(Test_aBFu8ll_BFu0ll_L, "aBFu8ll_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_S()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_S");
    static aBFu8ll_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_S(Test_aBFu8ll_BFu0ll_S, "aBFu8ll_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Uc");
    static aBFu8ll_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Uc(Test_aBFu8ll_BFu0ll_Uc, "aBFu8ll_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Ui");
    static aBFu8ll_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Ui(Test_aBFu8ll_BFu0ll_Ui, "aBFu8ll_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Ul");
    static aBFu8ll_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Ul(Test_aBFu8ll_BFu0ll_Ul, "aBFu8ll_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Us()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Us");
    static aBFu8ll_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Us(Test_aBFu8ll_BFu0ll_Us, "aBFu8ll_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu8ll_BFu0ll_Vp");
    static aBFu8ll_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8ll_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8ll_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0ll_Vp(Test_aBFu8ll_BFu0ll_Vp, "aBFu8ll_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu0s");
    static aBFu8ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s(Test_aBFu8ll_BFu0s, "aBFu8ll_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu0c");
    static aBFu8ll_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8ll_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu0c(Test_aBFu8ll_BFu0s_BFu0c, "aBFu8ll_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu0i");
    static aBFu8ll_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu0i(Test_aBFu8ll_BFu0s_BFu0i, "aBFu8ll_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu0ll");
    static aBFu8ll_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu0ll(Test_aBFu8ll_BFu0s_BFu0ll, "aBFu8ll_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu0s");
    static aBFu8ll_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8ll_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu0s(Test_aBFu8ll_BFu0s_BFu0s, "aBFu8ll_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu15i");
    static aBFu8ll_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8ll_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu15i(Test_aBFu8ll_BFu0s_BFu15i, "aBFu8ll_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu15ll");
    static aBFu8ll_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8ll_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu15ll(Test_aBFu8ll_BFu0s_BFu15ll, "aBFu8ll_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu15s");
    static aBFu8ll_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8ll_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu15s(Test_aBFu8ll_BFu0s_BFu15s, "aBFu8ll_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu16i");
    static aBFu8ll_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8ll_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu16i(Test_aBFu8ll_BFu0s_BFu16i, "aBFu8ll_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu16ll");
    static aBFu8ll_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8ll_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu16ll(Test_aBFu8ll_BFu0s_BFu16ll, "aBFu8ll_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu16s");
    static aBFu8ll_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8ll_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu16s(Test_aBFu8ll_BFu0s_BFu16s, "aBFu8ll_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu17i");
    static aBFu8ll_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8ll_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu17i(Test_aBFu8ll_BFu0s_BFu17i, "aBFu8ll_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu17ll");
    static aBFu8ll_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8ll_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8ll_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu17ll(Test_aBFu8ll_BFu0s_BFu17ll, "aBFu8ll_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu1c");
    static aBFu8ll_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8ll_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu1c(Test_aBFu8ll_BFu0s_BFu1c, "aBFu8ll_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu1i");
    static aBFu8ll_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8ll_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu1i(Test_aBFu8ll_BFu0s_BFu1i, "aBFu8ll_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu1ll");
    static aBFu8ll_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8ll_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu1ll(Test_aBFu8ll_BFu0s_BFu1ll, "aBFu8ll_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu1s");
    static aBFu8ll_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8ll_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu1s(Test_aBFu8ll_BFu0s_BFu1s, "aBFu8ll_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu31i");
    static aBFu8ll_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8ll_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu31i(Test_aBFu8ll_BFu0s_BFu31i, "aBFu8ll_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu31ll");
    static aBFu8ll_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8ll_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu31ll(Test_aBFu8ll_BFu0s_BFu31ll, "aBFu8ll_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu32i");
    static aBFu8ll_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8ll_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu32i(Test_aBFu8ll_BFu0s_BFu32i, "aBFu8ll_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu32ll");
    static aBFu8ll_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8ll_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu32ll(Test_aBFu8ll_BFu0s_BFu32ll, "aBFu8ll_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu33");
    static aBFu8ll_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8ll_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, 1, "aBFu8ll_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu33(Test_aBFu8ll_BFu0s_BFu33, "aBFu8ll_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu7c");
    static aBFu8ll_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8ll_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu7c(Test_aBFu8ll_BFu0s_BFu7c, "aBFu8ll_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu7i");
    static aBFu8ll_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8ll_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu7i(Test_aBFu8ll_BFu0s_BFu7i, "aBFu8ll_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu7ll");
    static aBFu8ll_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8ll_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu7ll(Test_aBFu8ll_BFu0s_BFu7ll, "aBFu8ll_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu7s");
    static aBFu8ll_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8ll_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu7s(Test_aBFu8ll_BFu0s_BFu7s, "aBFu8ll_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu8c");
    static aBFu8ll_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8ll_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu8c(Test_aBFu8ll_BFu0s_BFu8c, "aBFu8ll_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu8i");
    static aBFu8ll_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8ll_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu8i(Test_aBFu8ll_BFu0s_BFu8i, "aBFu8ll_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu8ll");
    static aBFu8ll_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8ll_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu8ll(Test_aBFu8ll_BFu0s_BFu8ll, "aBFu8ll_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu8s");
    static aBFu8ll_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8ll_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu8s(Test_aBFu8ll_BFu0s_BFu8s, "aBFu8ll_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu9i");
    static aBFu8ll_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8ll_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu9i(Test_aBFu8ll_BFu0s_BFu9i, "aBFu8ll_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu9ll");
    static aBFu8ll_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8ll_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu9ll(Test_aBFu8ll_BFu0s_BFu9ll, "aBFu8ll_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu8ll_BFu0s_BFu9s");
    static aBFu8ll_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8ll_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_BFu9s(Test_aBFu8ll_BFu0s_BFu9s, "aBFu8ll_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_C()
{
  {
    init_simple_test("aBFu8ll_BFu0s_C");
    static aBFu8ll_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_C(Test_aBFu8ll_BFu0s_C, "aBFu8ll_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_D()
{
  {
    init_simple_test("aBFu8ll_BFu0s_D");
    static aBFu8ll_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_D(Test_aBFu8ll_BFu0s_D, "aBFu8ll_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_F()
{
  {
    init_simple_test("aBFu8ll_BFu0s_F");
    static aBFu8ll_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_F(Test_aBFu8ll_BFu0s_F, "aBFu8ll_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_I()
{
  {
    init_simple_test("aBFu8ll_BFu0s_I");
    static aBFu8ll_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_I(Test_aBFu8ll_BFu0s_I, "aBFu8ll_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Ip()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Ip");
    static aBFu8ll_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Ip(Test_aBFu8ll_BFu0s_Ip, "aBFu8ll_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_L()
{
  {
    init_simple_test("aBFu8ll_BFu0s_L");
    static aBFu8ll_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_L(Test_aBFu8ll_BFu0s_L, "aBFu8ll_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_S()
{
  {
    init_simple_test("aBFu8ll_BFu0s_S");
    static aBFu8ll_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_S(Test_aBFu8ll_BFu0s_S, "aBFu8ll_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Uc()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Uc");
    static aBFu8ll_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8ll_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Uc(Test_aBFu8ll_BFu0s_Uc, "aBFu8ll_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Ui()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Ui");
    static aBFu8ll_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Ui(Test_aBFu8ll_BFu0s_Ui, "aBFu8ll_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Ul()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Ul");
    static aBFu8ll_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Ul(Test_aBFu8ll_BFu0s_Ul, "aBFu8ll_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Us()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Us");
    static aBFu8ll_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Us(Test_aBFu8ll_BFu0s_Us, "aBFu8ll_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu0s_Vp()
{
  {
    init_simple_test("aBFu8ll_BFu0s_Vp");
    static aBFu8ll_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8ll_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu0s_Vp(Test_aBFu8ll_BFu0s_Vp, "aBFu8ll_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu15i_BFu0c");
    static aBFu8ll_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15i_BFu0c(Test_aBFu8ll_BFu15i_BFu0c, "aBFu8ll_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu15i_BFu0i");
    static aBFu8ll_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15i_BFu0i(Test_aBFu8ll_BFu15i_BFu0i, "aBFu8ll_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu15i_BFu0ll");
    static aBFu8ll_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15i_BFu0ll(Test_aBFu8ll_BFu15i_BFu0ll, "aBFu8ll_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu15i_BFu0s");
    static aBFu8ll_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15i_BFu0s(Test_aBFu8ll_BFu15i_BFu0s, "aBFu8ll_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu15ll_BFu0c");
    static aBFu8ll_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15ll_BFu0c(Test_aBFu8ll_BFu15ll_BFu0c, "aBFu8ll_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu15ll_BFu0i");
    static aBFu8ll_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15ll_BFu0i(Test_aBFu8ll_BFu15ll_BFu0i, "aBFu8ll_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu15ll_BFu0ll");
    static aBFu8ll_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15ll_BFu0ll(Test_aBFu8ll_BFu15ll_BFu0ll, "aBFu8ll_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu15ll_BFu0s");
    static aBFu8ll_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15ll_BFu0s(Test_aBFu8ll_BFu15ll_BFu0s, "aBFu8ll_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu15s_BFu0c");
    static aBFu8ll_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15s_BFu0c(Test_aBFu8ll_BFu15s_BFu0c, "aBFu8ll_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu15s_BFu0i");
    static aBFu8ll_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15s_BFu0i(Test_aBFu8ll_BFu15s_BFu0i, "aBFu8ll_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu15s_BFu0ll");
    static aBFu8ll_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15s_BFu0ll(Test_aBFu8ll_BFu15s_BFu0ll, "aBFu8ll_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu15s_BFu0s");
    static aBFu8ll_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8ll_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8ll_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu15s_BFu0s(Test_aBFu8ll_BFu15s_BFu0s, "aBFu8ll_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu16i_BFu0c");
    static aBFu8ll_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16i_BFu0c(Test_aBFu8ll_BFu16i_BFu0c, "aBFu8ll_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu16i_BFu0i");
    static aBFu8ll_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16i_BFu0i(Test_aBFu8ll_BFu16i_BFu0i, "aBFu8ll_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu16i_BFu0ll");
    static aBFu8ll_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16i_BFu0ll(Test_aBFu8ll_BFu16i_BFu0ll, "aBFu8ll_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu16i_BFu0s");
    static aBFu8ll_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16i_BFu0s(Test_aBFu8ll_BFu16i_BFu0s, "aBFu8ll_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu16ll_BFu0c");
    static aBFu8ll_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16ll_BFu0c(Test_aBFu8ll_BFu16ll_BFu0c, "aBFu8ll_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu16ll_BFu0i");
    static aBFu8ll_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16ll_BFu0i(Test_aBFu8ll_BFu16ll_BFu0i, "aBFu8ll_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu16ll_BFu0ll");
    static aBFu8ll_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16ll_BFu0ll(Test_aBFu8ll_BFu16ll_BFu0ll, "aBFu8ll_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu16ll_BFu0s");
    static aBFu8ll_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16ll_BFu0s(Test_aBFu8ll_BFu16ll_BFu0s, "aBFu8ll_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu16s_BFu0c");
    static aBFu8ll_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16s_BFu0c(Test_aBFu8ll_BFu16s_BFu0c, "aBFu8ll_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu16s_BFu0i");
    static aBFu8ll_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16s_BFu0i(Test_aBFu8ll_BFu16s_BFu0i, "aBFu8ll_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu16s_BFu0ll");
    static aBFu8ll_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16s_BFu0ll(Test_aBFu8ll_BFu16s_BFu0ll, "aBFu8ll_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu16s_BFu0s");
    static aBFu8ll_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8ll_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8ll_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu16s_BFu0s(Test_aBFu8ll_BFu16s_BFu0s, "aBFu8ll_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu17i_BFu0c");
    static aBFu8ll_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17i_BFu0c(Test_aBFu8ll_BFu17i_BFu0c, "aBFu8ll_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu17i_BFu0i");
    static aBFu8ll_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17i_BFu0i(Test_aBFu8ll_BFu17i_BFu0i, "aBFu8ll_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu17i_BFu0ll");
    static aBFu8ll_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17i_BFu0ll(Test_aBFu8ll_BFu17i_BFu0ll, "aBFu8ll_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu17i_BFu0s");
    static aBFu8ll_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17i_BFu0s(Test_aBFu8ll_BFu17i_BFu0s, "aBFu8ll_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu17ll_BFu0c");
    static aBFu8ll_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17ll_BFu0c(Test_aBFu8ll_BFu17ll_BFu0c, "aBFu8ll_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu17ll_BFu0i");
    static aBFu8ll_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17ll_BFu0i(Test_aBFu8ll_BFu17ll_BFu0i, "aBFu8ll_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu17ll_BFu0ll");
    static aBFu8ll_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17ll_BFu0ll(Test_aBFu8ll_BFu17ll_BFu0ll, "aBFu8ll_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu17ll_BFu0s");
    static aBFu8ll_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8ll_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8ll_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8ll_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu17ll_BFu0s(Test_aBFu8ll_BFu17ll_BFu0s, "aBFu8ll_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu1c_BFu0c");
    static aBFu8ll_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1c_BFu0c(Test_aBFu8ll_BFu1c_BFu0c, "aBFu8ll_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu1c_BFu0i");
    static aBFu8ll_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1c_BFu0i(Test_aBFu8ll_BFu1c_BFu0i, "aBFu8ll_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu1c_BFu0ll");
    static aBFu8ll_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1c_BFu0ll(Test_aBFu8ll_BFu1c_BFu0ll, "aBFu8ll_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu1c_BFu0s");
    static aBFu8ll_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1c_BFu0s(Test_aBFu8ll_BFu1c_BFu0s, "aBFu8ll_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu1i_BFu0c");
    static aBFu8ll_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1i_BFu0c(Test_aBFu8ll_BFu1i_BFu0c, "aBFu8ll_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu1i_BFu0i");
    static aBFu8ll_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1i_BFu0i(Test_aBFu8ll_BFu1i_BFu0i, "aBFu8ll_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu1i_BFu0ll");
    static aBFu8ll_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1i_BFu0ll(Test_aBFu8ll_BFu1i_BFu0ll, "aBFu8ll_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu1i_BFu0s");
    static aBFu8ll_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1i_BFu0s(Test_aBFu8ll_BFu1i_BFu0s, "aBFu8ll_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu1ll_BFu0c");
    static aBFu8ll_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1ll_BFu0c(Test_aBFu8ll_BFu1ll_BFu0c, "aBFu8ll_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu1ll_BFu0i");
    static aBFu8ll_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1ll_BFu0i(Test_aBFu8ll_BFu1ll_BFu0i, "aBFu8ll_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu1ll_BFu0ll");
    static aBFu8ll_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1ll_BFu0ll(Test_aBFu8ll_BFu1ll_BFu0ll, "aBFu8ll_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu1ll_BFu0s");
    static aBFu8ll_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1ll_BFu0s(Test_aBFu8ll_BFu1ll_BFu0s, "aBFu8ll_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu1s_BFu0c");
    static aBFu8ll_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1s_BFu0c(Test_aBFu8ll_BFu1s_BFu0c, "aBFu8ll_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu1s_BFu0i");
    static aBFu8ll_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1s_BFu0i(Test_aBFu8ll_BFu1s_BFu0i, "aBFu8ll_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu1s_BFu0ll");
    static aBFu8ll_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1s_BFu0ll(Test_aBFu8ll_BFu1s_BFu0ll, "aBFu8ll_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu1s_BFu0s");
    static aBFu8ll_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8ll_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu1s_BFu0s(Test_aBFu8ll_BFu1s_BFu0s, "aBFu8ll_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu31i_BFu0c");
    static aBFu8ll_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31i_BFu0c(Test_aBFu8ll_BFu31i_BFu0c, "aBFu8ll_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu31i_BFu0i");
    static aBFu8ll_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31i_BFu0i(Test_aBFu8ll_BFu31i_BFu0i, "aBFu8ll_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu31i_BFu0ll");
    static aBFu8ll_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31i_BFu0ll(Test_aBFu8ll_BFu31i_BFu0ll, "aBFu8ll_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu31i_BFu0s");
    static aBFu8ll_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31i_BFu0s(Test_aBFu8ll_BFu31i_BFu0s, "aBFu8ll_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu31ll_BFu0c");
    static aBFu8ll_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31ll_BFu0c(Test_aBFu8ll_BFu31ll_BFu0c, "aBFu8ll_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu31ll_BFu0i");
    static aBFu8ll_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31ll_BFu0i(Test_aBFu8ll_BFu31ll_BFu0i, "aBFu8ll_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu31ll_BFu0ll");
    static aBFu8ll_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31ll_BFu0ll(Test_aBFu8ll_BFu31ll_BFu0ll, "aBFu8ll_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu31ll_BFu0s");
    static aBFu8ll_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8ll_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8ll_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu31ll_BFu0s(Test_aBFu8ll_BFu31ll_BFu0s, "aBFu8ll_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu32i_BFu0c");
    static aBFu8ll_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32i_BFu0c(Test_aBFu8ll_BFu32i_BFu0c, "aBFu8ll_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu32i_BFu0i");
    static aBFu8ll_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32i_BFu0i(Test_aBFu8ll_BFu32i_BFu0i, "aBFu8ll_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu32i_BFu0ll");
    static aBFu8ll_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32i_BFu0ll(Test_aBFu8ll_BFu32i_BFu0ll, "aBFu8ll_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu32i_BFu0s");
    static aBFu8ll_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32i_BFu0s(Test_aBFu8ll_BFu32i_BFu0s, "aBFu8ll_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu32ll_BFu0c");
    static aBFu8ll_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32ll_BFu0c(Test_aBFu8ll_BFu32ll_BFu0c, "aBFu8ll_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu32ll_BFu0i");
    static aBFu8ll_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32ll_BFu0i(Test_aBFu8ll_BFu32ll_BFu0i, "aBFu8ll_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu32ll_BFu0ll");
    static aBFu8ll_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32ll_BFu0ll(Test_aBFu8ll_BFu32ll_BFu0ll, "aBFu8ll_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu32ll_BFu0s");
    static aBFu8ll_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8ll_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8ll_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu32ll_BFu0s(Test_aBFu8ll_BFu32ll_BFu0s, "aBFu8ll_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu33_BFu0c");
    static aBFu8ll_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8ll_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8ll_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu33_BFu0c(Test_aBFu8ll_BFu33_BFu0c, "aBFu8ll_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu33_BFu0i");
    static aBFu8ll_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8ll_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu33_BFu0i(Test_aBFu8ll_BFu33_BFu0i, "aBFu8ll_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu33_BFu0ll");
    static aBFu8ll_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8ll_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu33_BFu0ll(Test_aBFu8ll_BFu33_BFu0ll, "aBFu8ll_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu33_BFu0s");
    static aBFu8ll_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8ll_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8ll_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8ll_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu33_BFu0s(Test_aBFu8ll_BFu33_BFu0s, "aBFu8ll_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu7c_BFu0c");
    static aBFu8ll_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7c_BFu0c(Test_aBFu8ll_BFu7c_BFu0c, "aBFu8ll_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu7c_BFu0i");
    static aBFu8ll_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7c_BFu0i(Test_aBFu8ll_BFu7c_BFu0i, "aBFu8ll_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu7c_BFu0ll");
    static aBFu8ll_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7c_BFu0ll(Test_aBFu8ll_BFu7c_BFu0ll, "aBFu8ll_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu7c_BFu0s");
    static aBFu8ll_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7c_BFu0s(Test_aBFu8ll_BFu7c_BFu0s, "aBFu8ll_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu7i_BFu0c");
    static aBFu8ll_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7i_BFu0c(Test_aBFu8ll_BFu7i_BFu0c, "aBFu8ll_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu7i_BFu0i");
    static aBFu8ll_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7i_BFu0i(Test_aBFu8ll_BFu7i_BFu0i, "aBFu8ll_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu7i_BFu0ll");
    static aBFu8ll_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7i_BFu0ll(Test_aBFu8ll_BFu7i_BFu0ll, "aBFu8ll_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu7i_BFu0s");
    static aBFu8ll_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7i_BFu0s(Test_aBFu8ll_BFu7i_BFu0s, "aBFu8ll_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu7ll_BFu0c");
    static aBFu8ll_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7ll_BFu0c(Test_aBFu8ll_BFu7ll_BFu0c, "aBFu8ll_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu7ll_BFu0i");
    static aBFu8ll_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7ll_BFu0i(Test_aBFu8ll_BFu7ll_BFu0i, "aBFu8ll_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu7ll_BFu0ll");
    static aBFu8ll_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7ll_BFu0ll(Test_aBFu8ll_BFu7ll_BFu0ll, "aBFu8ll_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu7ll_BFu0s");
    static aBFu8ll_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7ll_BFu0s(Test_aBFu8ll_BFu7ll_BFu0s, "aBFu8ll_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu7s_BFu0c");
    static aBFu8ll_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7s_BFu0c(Test_aBFu8ll_BFu7s_BFu0c, "aBFu8ll_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu7s_BFu0i");
    static aBFu8ll_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7s_BFu0i(Test_aBFu8ll_BFu7s_BFu0i, "aBFu8ll_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu7s_BFu0ll");
    static aBFu8ll_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7s_BFu0ll(Test_aBFu8ll_BFu7s_BFu0ll, "aBFu8ll_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu7s_BFu0s");
    static aBFu8ll_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8ll_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8ll_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu7s_BFu0s(Test_aBFu8ll_BFu7s_BFu0s, "aBFu8ll_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu8c_BFu0c");
    static aBFu8ll_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8c_BFu0c(Test_aBFu8ll_BFu8c_BFu0c, "aBFu8ll_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu8c_BFu0i");
    static aBFu8ll_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8c_BFu0i(Test_aBFu8ll_BFu8c_BFu0i, "aBFu8ll_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu8c_BFu0ll");
    static aBFu8ll_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8c_BFu0ll(Test_aBFu8ll_BFu8c_BFu0ll, "aBFu8ll_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu8c_BFu0s");
    static aBFu8ll_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8c_BFu0s(Test_aBFu8ll_BFu8c_BFu0s, "aBFu8ll_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu8i_BFu0c");
    static aBFu8ll_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8i_BFu0c(Test_aBFu8ll_BFu8i_BFu0c, "aBFu8ll_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu8i_BFu0i");
    static aBFu8ll_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8i_BFu0i(Test_aBFu8ll_BFu8i_BFu0i, "aBFu8ll_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu8i_BFu0ll");
    static aBFu8ll_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8i_BFu0ll(Test_aBFu8ll_BFu8i_BFu0ll, "aBFu8ll_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu8i_BFu0s");
    static aBFu8ll_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8i_BFu0s(Test_aBFu8ll_BFu8i_BFu0s, "aBFu8ll_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu8ll_BFu0c");
    static aBFu8ll_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8ll_BFu0c(Test_aBFu8ll_BFu8ll_BFu0c, "aBFu8ll_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu8ll_BFu0i");
    static aBFu8ll_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8ll_BFu0i(Test_aBFu8ll_BFu8ll_BFu0i, "aBFu8ll_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu8ll_BFu0ll");
    static aBFu8ll_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8ll_BFu0ll(Test_aBFu8ll_BFu8ll_BFu0ll, "aBFu8ll_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu8ll_BFu0s");
    static aBFu8ll_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8ll_BFu0s(Test_aBFu8ll_BFu8ll_BFu0s, "aBFu8ll_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu8s_BFu0c");
    static aBFu8ll_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8s_BFu0c(Test_aBFu8ll_BFu8s_BFu0c, "aBFu8ll_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu8s_BFu0i");
    static aBFu8ll_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8s_BFu0i(Test_aBFu8ll_BFu8s_BFu0i, "aBFu8ll_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu8s_BFu0ll");
    static aBFu8ll_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8s_BFu0ll(Test_aBFu8ll_BFu8s_BFu0ll, "aBFu8ll_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu8s_BFu0s");
    static aBFu8ll_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8ll_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu8s_BFu0s(Test_aBFu8ll_BFu8s_BFu0s, "aBFu8ll_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu9i_BFu0c");
    static aBFu8ll_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9i_BFu0c(Test_aBFu8ll_BFu9i_BFu0c, "aBFu8ll_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu9i_BFu0i");
    static aBFu8ll_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9i_BFu0i(Test_aBFu8ll_BFu9i_BFu0i, "aBFu8ll_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu9i_BFu0ll");
    static aBFu8ll_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9i_BFu0ll(Test_aBFu8ll_BFu9i_BFu0ll, "aBFu8ll_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu9i_BFu0s");
    static aBFu8ll_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9i_BFu0s(Test_aBFu8ll_BFu9i_BFu0s, "aBFu8ll_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu9ll_BFu0c");
    static aBFu8ll_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9ll_BFu0c(Test_aBFu8ll_BFu9ll_BFu0c, "aBFu8ll_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu9ll_BFu0i");
    static aBFu8ll_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9ll_BFu0i(Test_aBFu8ll_BFu9ll_BFu0i, "aBFu8ll_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu9ll_BFu0ll");
    static aBFu8ll_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9ll_BFu0ll(Test_aBFu8ll_BFu9ll_BFu0ll, "aBFu8ll_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu9ll_BFu0s");
    static aBFu8ll_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9ll_BFu0s(Test_aBFu8ll_BFu9ll_BFu0s, "aBFu8ll_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu8ll_BFu9s_BFu0c");
    static aBFu8ll_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9s_BFu0c(Test_aBFu8ll_BFu9s_BFu0c, "aBFu8ll_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu8ll_BFu9s_BFu0i");
    static aBFu8ll_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9s_BFu0i(Test_aBFu8ll_BFu9s_BFu0i, "aBFu8ll_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_BFu9s_BFu0ll");
    static aBFu8ll_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9s_BFu0ll(Test_aBFu8ll_BFu9s_BFu0ll, "aBFu8ll_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu8ll_BFu9s_BFu0s");
    static aBFu8ll_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8ll_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8ll_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8ll_BFu9s_BFu0s(Test_aBFu8ll_BFu9s_BFu0s, "aBFu8ll_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_C_BFu0c()
{
  {
    init_simple_test("aBFu8ll_C_BFu0c");
    static aBFu8ll_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_C_BFu0c(Test_aBFu8ll_C_BFu0c, "aBFu8ll_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_C_BFu0i()
{
  {
    init_simple_test("aBFu8ll_C_BFu0i");
    static aBFu8ll_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_C_BFu0i(Test_aBFu8ll_C_BFu0i, "aBFu8ll_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_C_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_C_BFu0ll");
    static aBFu8ll_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_C_BFu0ll(Test_aBFu8ll_C_BFu0ll, "aBFu8ll_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_C_BFu0s()
{
  {
    init_simple_test("aBFu8ll_C_BFu0s");
    static aBFu8ll_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_C_BFu0s(Test_aBFu8ll_C_BFu0s, "aBFu8ll_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_D_BFu0c()
{
  {
    init_simple_test("aBFu8ll_D_BFu0c");
    static aBFu8ll_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_D_BFu0c(Test_aBFu8ll_D_BFu0c, "aBFu8ll_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_D_BFu0i()
{
  {
    init_simple_test("aBFu8ll_D_BFu0i");
    static aBFu8ll_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_D_BFu0i(Test_aBFu8ll_D_BFu0i, "aBFu8ll_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_D_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_D_BFu0ll");
    static aBFu8ll_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_D_BFu0ll(Test_aBFu8ll_D_BFu0ll, "aBFu8ll_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_D_BFu0s()
{
  {
    init_simple_test("aBFu8ll_D_BFu0s");
    static aBFu8ll_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_D_BFu0s(Test_aBFu8ll_D_BFu0s, "aBFu8ll_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_F_BFu0c()
{
  {
    init_simple_test("aBFu8ll_F_BFu0c");
    static aBFu8ll_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_F_BFu0c(Test_aBFu8ll_F_BFu0c, "aBFu8ll_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_F_BFu0i()
{
  {
    init_simple_test("aBFu8ll_F_BFu0i");
    static aBFu8ll_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_F_BFu0i(Test_aBFu8ll_F_BFu0i, "aBFu8ll_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_F_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_F_BFu0ll");
    static aBFu8ll_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_F_BFu0ll(Test_aBFu8ll_F_BFu0ll, "aBFu8ll_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_F_BFu0s()
{
  {
    init_simple_test("aBFu8ll_F_BFu0s");
    static aBFu8ll_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_F_BFu0s(Test_aBFu8ll_F_BFu0s, "aBFu8ll_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_I_BFu0c()
{
  {
    init_simple_test("aBFu8ll_I_BFu0c");
    static aBFu8ll_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_I_BFu0c(Test_aBFu8ll_I_BFu0c, "aBFu8ll_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_I_BFu0i()
{
  {
    init_simple_test("aBFu8ll_I_BFu0i");
    static aBFu8ll_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_I_BFu0i(Test_aBFu8ll_I_BFu0i, "aBFu8ll_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_I_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_I_BFu0ll");
    static aBFu8ll_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_I_BFu0ll(Test_aBFu8ll_I_BFu0ll, "aBFu8ll_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_I_BFu0s()
{
  {
    init_simple_test("aBFu8ll_I_BFu0s");
    static aBFu8ll_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_I_BFu0s(Test_aBFu8ll_I_BFu0s, "aBFu8ll_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ip_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Ip_BFu0c");
    static aBFu8ll_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ip_BFu0c(Test_aBFu8ll_Ip_BFu0c, "aBFu8ll_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ip_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Ip_BFu0i");
    static aBFu8ll_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ip_BFu0i(Test_aBFu8ll_Ip_BFu0i, "aBFu8ll_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Ip_BFu0ll");
    static aBFu8ll_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8ll_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ip_BFu0ll(Test_aBFu8ll_Ip_BFu0ll, "aBFu8ll_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ip_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Ip_BFu0s");
    static aBFu8ll_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ip_BFu0s(Test_aBFu8ll_Ip_BFu0s, "aBFu8ll_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_L_BFu0c()
{
  {
    init_simple_test("aBFu8ll_L_BFu0c");
    static aBFu8ll_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_L_BFu0c(Test_aBFu8ll_L_BFu0c, "aBFu8ll_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_L_BFu0i()
{
  {
    init_simple_test("aBFu8ll_L_BFu0i");
    static aBFu8ll_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_L_BFu0i(Test_aBFu8ll_L_BFu0i, "aBFu8ll_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_L_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_L_BFu0ll");
    static aBFu8ll_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_L_BFu0ll(Test_aBFu8ll_L_BFu0ll, "aBFu8ll_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_L_BFu0s()
{
  {
    init_simple_test("aBFu8ll_L_BFu0s");
    static aBFu8ll_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_L_BFu0s(Test_aBFu8ll_L_BFu0s, "aBFu8ll_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_S_BFu0c()
{
  {
    init_simple_test("aBFu8ll_S_BFu0c");
    static aBFu8ll_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_S_BFu0c(Test_aBFu8ll_S_BFu0c, "aBFu8ll_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_S_BFu0i()
{
  {
    init_simple_test("aBFu8ll_S_BFu0i");
    static aBFu8ll_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_S_BFu0i(Test_aBFu8ll_S_BFu0i, "aBFu8ll_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_S_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_S_BFu0ll");
    static aBFu8ll_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_S_BFu0ll(Test_aBFu8ll_S_BFu0ll, "aBFu8ll_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_S_BFu0s()
{
  {
    init_simple_test("aBFu8ll_S_BFu0s");
    static aBFu8ll_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_S_BFu0s(Test_aBFu8ll_S_BFu0s, "aBFu8ll_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Uc_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Uc_BFu0c");
    static aBFu8ll_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Uc_BFu0c(Test_aBFu8ll_Uc_BFu0c, "aBFu8ll_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Uc_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Uc_BFu0i");
    static aBFu8ll_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Uc_BFu0i(Test_aBFu8ll_Uc_BFu0i, "aBFu8ll_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Uc_BFu0ll");
    static aBFu8ll_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Uc_BFu0ll(Test_aBFu8ll_Uc_BFu0ll, "aBFu8ll_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Uc_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Uc_BFu0s");
    static aBFu8ll_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8ll_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Uc_BFu0s(Test_aBFu8ll_Uc_BFu0s, "aBFu8ll_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ui_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Ui_BFu0c");
    static aBFu8ll_Ui_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8ll_Ui_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ui_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ui_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ui_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ui_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ui_BFu0c(Test_aBFu8ll_Ui_BFu0c, "aBFu8ll_Ui_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ui_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Ui_BFu0i");
    static aBFu8ll_Ui_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_Ui_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ui_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ui_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ui_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ui_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ui_BFu0i(Test_aBFu8ll_Ui_BFu0i, "aBFu8ll_Ui_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ui_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Ui_BFu0ll");
    static aBFu8ll_Ui_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8ll_Ui_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ui_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ui_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ui_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ui_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ui_BFu0ll(Test_aBFu8ll_Ui_BFu0ll, "aBFu8ll_Ui_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ui_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Ui_BFu0s");
    static aBFu8ll_Ui_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8ll_Ui_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ui_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ui_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ui_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ui_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ui_BFu0s(Test_aBFu8ll_Ui_BFu0s, "aBFu8ll_Ui_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ul_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Ul_BFu0c");
    static aBFu8ll_Ul_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8ll_Ul_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ul_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ul_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ul_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ul_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ul_BFu0c(Test_aBFu8ll_Ul_BFu0c, "aBFu8ll_Ul_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ul_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Ul_BFu0i");
    static aBFu8ll_Ul_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8ll_Ul_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ul_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ul_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ul_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ul_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ul_BFu0i(Test_aBFu8ll_Ul_BFu0i, "aBFu8ll_Ul_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ul_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Ul_BFu0ll");
    static aBFu8ll_Ul_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8ll_Ul_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ul_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ul_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ul_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ul_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ul_BFu0ll(Test_aBFu8ll_Ul_BFu0ll, "aBFu8ll_Ul_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Ul_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Ul_BFu0s");
    static aBFu8ll_Ul_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8ll_Ul_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Ul_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Ul_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Ul_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Ul_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Ul_BFu0s(Test_aBFu8ll_Ul_BFu0s, "aBFu8ll_Ul_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Us_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Us_BFu0c");
    static aBFu8ll_Us_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8ll_Us_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Us_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Us_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Us_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Us_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Us_BFu0c(Test_aBFu8ll_Us_BFu0c, "aBFu8ll_Us_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Us_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Us_BFu0i");
    static aBFu8ll_Us_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_Us_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Us_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Us_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Us_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Us_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Us_BFu0i(Test_aBFu8ll_Us_BFu0i, "aBFu8ll_Us_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Us_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Us_BFu0ll");
    static aBFu8ll_Us_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8ll_Us_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Us_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Us_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Us_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Us_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Us_BFu0ll(Test_aBFu8ll_Us_BFu0ll, "aBFu8ll_Us_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Us_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Us_BFu0s");
    static aBFu8ll_Us_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8ll_Us_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Us_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Us_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Us_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Us_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Us_BFu0s(Test_aBFu8ll_Us_BFu0s, "aBFu8ll_Us_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Vp_BFu0c()
{
  {
    init_simple_test("aBFu8ll_Vp_BFu0c");
    static aBFu8ll_Vp_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8ll_Vp_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Vp_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Vp_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Vp_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8ll_Vp_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Vp_BFu0c(Test_aBFu8ll_Vp_BFu0c, "aBFu8ll_Vp_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Vp_BFu0i()
{
  {
    init_simple_test("aBFu8ll_Vp_BFu0i");
    static aBFu8ll_Vp_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8ll_Vp_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Vp_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Vp_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Vp_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8ll_Vp_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Vp_BFu0i(Test_aBFu8ll_Vp_BFu0i, "aBFu8ll_Vp_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Vp_BFu0ll()
{
  {
    init_simple_test("aBFu8ll_Vp_BFu0ll");
    static aBFu8ll_Vp_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8ll_Vp_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Vp_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Vp_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Vp_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8ll_Vp_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Vp_BFu0ll(Test_aBFu8ll_Vp_BFu0ll, "aBFu8ll_Vp_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8ll_Vp_BFu0s()
{
  {
    init_simple_test("aBFu8ll_Vp_BFu0s");
    static aBFu8ll_Vp_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8ll_Vp_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8ll_Vp_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8ll_Vp_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8ll_Vp_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8ll_Vp_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8ll_Vp_BFu0s(Test_aBFu8ll_Vp_BFu0s, "aBFu8ll_Vp_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu0c");
    static aBFu8s_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c(Test_aBFu8s_BFu0c, "aBFu8s_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu0c");
    static aBFu8s_BFu0c_BFu0c lv;
    check2(sizeof(lv), 1, "sizeof(aBFu8s_BFu0c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu0c(Test_aBFu8s_BFu0c_BFu0c, "aBFu8s_BFu0c_BFu0c", 1);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu0i");
    static aBFu8s_BFu0c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu0i(Test_aBFu8s_BFu0c_BFu0i, "aBFu8s_BFu0c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu0ll");
    static aBFu8s_BFu0c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu0ll(Test_aBFu8s_BFu0c_BFu0ll, "aBFu8s_BFu0c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu0s");
    static aBFu8s_BFu0c_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8s_BFu0c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu0s(Test_aBFu8s_BFu0c_BFu0s, "aBFu8s_BFu0c_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu15i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu15i");
    static aBFu8s_BFu0c_BFu15i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu0c_BFu15i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0c_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu15i(Test_aBFu8s_BFu0c_BFu15i, "aBFu8s_BFu0c_BFu15i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu15ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu15ll");
    static aBFu8s_BFu0c_BFu15ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu0c_BFu15ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0c_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu15ll(Test_aBFu8s_BFu0c_BFu15ll, "aBFu8s_BFu0c_BFu15ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu15s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu15s");
    static aBFu8s_BFu0c_BFu15s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu0c_BFu15s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0c_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu15s(Test_aBFu8s_BFu0c_BFu15s, "aBFu8s_BFu0c_BFu15s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu16i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu16i");
    static aBFu8s_BFu0c_BFu16i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu0c_BFu16i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0c_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu16i(Test_aBFu8s_BFu0c_BFu16i, "aBFu8s_BFu0c_BFu16i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu16ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu16ll");
    static aBFu8s_BFu0c_BFu16ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu0c_BFu16ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0c_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu16ll(Test_aBFu8s_BFu0c_BFu16ll, "aBFu8s_BFu0c_BFu16ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu16s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu16s");
    static aBFu8s_BFu0c_BFu16s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu0c_BFu16s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0c_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu16s(Test_aBFu8s_BFu0c_BFu16s, "aBFu8s_BFu0c_BFu16s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu17i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu17i");
    static aBFu8s_BFu0c_BFu17i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu0c_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu0c_BFu17i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0c_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu17i(Test_aBFu8s_BFu0c_BFu17i, "aBFu8s_BFu0c_BFu17i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu17ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu17ll");
    static aBFu8s_BFu0c_BFu17ll lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu0c_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu0c_BFu17ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0c_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu17ll(Test_aBFu8s_BFu0c_BFu17ll, "aBFu8s_BFu0c_BFu17ll", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu1c()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu1c");
    static aBFu8s_BFu0c_BFu1c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu1c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu0c_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu1c(Test_aBFu8s_BFu0c_BFu1c, "aBFu8s_BFu0c_BFu1c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu1i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu1i");
    static aBFu8s_BFu0c_BFu1i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu1i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu0c_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu1i(Test_aBFu8s_BFu0c_BFu1i, "aBFu8s_BFu0c_BFu1i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu1ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu1ll");
    static aBFu8s_BFu0c_BFu1ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu1ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu0c_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu1ll(Test_aBFu8s_BFu0c_BFu1ll, "aBFu8s_BFu0c_BFu1ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu1s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu1s");
    static aBFu8s_BFu0c_BFu1s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu1s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu0c_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu1s(Test_aBFu8s_BFu0c_BFu1s, "aBFu8s_BFu0c_BFu1s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu31i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu31i");
    static aBFu8s_BFu0c_BFu31i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu0c_BFu31i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0c_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu31i(Test_aBFu8s_BFu0c_BFu31i, "aBFu8s_BFu0c_BFu31i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu31ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu31ll");
    static aBFu8s_BFu0c_BFu31ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu0c_BFu31ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0c_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu31ll(Test_aBFu8s_BFu0c_BFu31ll, "aBFu8s_BFu0c_BFu31ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu32i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu32i");
    static aBFu8s_BFu0c_BFu32i lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu0c_BFu32i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0c_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu32i(Test_aBFu8s_BFu0c_BFu32i, "aBFu8s_BFu0c_BFu32i", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu32ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu32ll");
    static aBFu8s_BFu0c_BFu32ll lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu0c_BFu32ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0c_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu32ll(Test_aBFu8s_BFu0c_BFu32ll, "aBFu8s_BFu0c_BFu32ll", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu33()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu33");
    static aBFu8s_BFu0c_BFu33 lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8s_BFu0c_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8s_BFu0c_BFu33");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu0c_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu33(Test_aBFu8s_BFu0c_BFu33, "aBFu8s_BFu0c_BFu33", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu7c()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu7c");
    static aBFu8s_BFu0c_BFu7c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu0c_BFu7c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0c_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu7c(Test_aBFu8s_BFu0c_BFu7c, "aBFu8s_BFu0c_BFu7c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu7i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu7i");
    static aBFu8s_BFu0c_BFu7i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu0c_BFu7i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0c_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu7i(Test_aBFu8s_BFu0c_BFu7i, "aBFu8s_BFu0c_BFu7i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu7ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu7ll");
    static aBFu8s_BFu0c_BFu7ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu0c_BFu7ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0c_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu7ll(Test_aBFu8s_BFu0c_BFu7ll, "aBFu8s_BFu0c_BFu7ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu7s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu7s");
    static aBFu8s_BFu0c_BFu7s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu0c_BFu7s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0c_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu7s(Test_aBFu8s_BFu0c_BFu7s, "aBFu8s_BFu0c_BFu7s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu8c()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu8c");
    static aBFu8s_BFu0c_BFu8c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu0c_BFu8c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu8c(Test_aBFu8s_BFu0c_BFu8c, "aBFu8s_BFu0c_BFu8c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu8i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu8i");
    static aBFu8s_BFu0c_BFu8i lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu0c_BFu8i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu8i(Test_aBFu8s_BFu0c_BFu8i, "aBFu8s_BFu0c_BFu8i", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu8ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu8ll");
    static aBFu8s_BFu0c_BFu8ll lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu0c_BFu8ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu8ll(Test_aBFu8s_BFu0c_BFu8ll, "aBFu8s_BFu0c_BFu8ll", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu8s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu8s");
    static aBFu8s_BFu0c_BFu8s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu0c_BFu8s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu8s(Test_aBFu8s_BFu0c_BFu8s, "aBFu8s_BFu0c_BFu8s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu9i()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu9i");
    static aBFu8s_BFu0c_BFu9i lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu0c_BFu9i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0c_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu9i(Test_aBFu8s_BFu0c_BFu9i, "aBFu8s_BFu0c_BFu9i", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu9ll()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu9ll");
    static aBFu8s_BFu0c_BFu9ll lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu0c_BFu9ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0c_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu9ll(Test_aBFu8s_BFu0c_BFu9ll, "aBFu8s_BFu0c_BFu9ll", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_BFu9s()
{
  {
    init_simple_test("aBFu8s_BFu0c_BFu9s");
    static aBFu8s_BFu0c_BFu9s lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu0c_BFu9s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0c_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_BFu9s(Test_aBFu8s_BFu0c_BFu9s, "aBFu8s_BFu0c_BFu9s", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_C()
{
  {
    init_simple_test("aBFu8s_BFu0c_C");
    static aBFu8s_BFu0c_C lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_C");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_C(Test_aBFu8s_BFu0c_C, "aBFu8s_BFu0c_C", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_D()
{
  {
    init_simple_test("aBFu8s_BFu0c_D");
    static aBFu8s_BFu0c_D lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8s_BFu0c_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_D");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_D(Test_aBFu8s_BFu0c_D, "aBFu8s_BFu0c_D", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_F()
{
  {
    init_simple_test("aBFu8s_BFu0c_F");
    static aBFu8s_BFu0c_F lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_F");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_F(Test_aBFu8s_BFu0c_F, "aBFu8s_BFu0c_F", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_I()
{
  {
    init_simple_test("aBFu8s_BFu0c_I");
    static aBFu8s_BFu0c_I lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_I");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_I(Test_aBFu8s_BFu0c_I, "aBFu8s_BFu0c_I", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Ip()
{
  {
    init_simple_test("aBFu8s_BFu0c_Ip");
    static aBFu8s_BFu0c_Ip lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0c_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Ip");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Ip(Test_aBFu8s_BFu0c_Ip, "aBFu8s_BFu0c_Ip", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_L()
{
  {
    init_simple_test("aBFu8s_BFu0c_L");
    static aBFu8s_BFu0c_L lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8s_BFu0c_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_L");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_L(Test_aBFu8s_BFu0c_L, "aBFu8s_BFu0c_L", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_S()
{
  {
    init_simple_test("aBFu8s_BFu0c_S");
    static aBFu8s_BFu0c_S lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_S");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_S(Test_aBFu8s_BFu0c_S, "aBFu8s_BFu0c_S", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Uc()
{
  {
    init_simple_test("aBFu8s_BFu0c_Uc");
    static aBFu8s_BFu0c_Uc lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu0c_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Uc");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Uc(Test_aBFu8s_BFu0c_Uc, "aBFu8s_BFu0c_Uc", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Ui()
{
  {
    init_simple_test("aBFu8s_BFu0c_Ui");
    static aBFu8s_BFu0c_Ui lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu0c_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Ui");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Ui(Test_aBFu8s_BFu0c_Ui, "aBFu8s_BFu0c_Ui", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Ul()
{
  {
    init_simple_test("aBFu8s_BFu0c_Ul");
    static aBFu8s_BFu0c_Ul lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8s_BFu0c_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Ul");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Ul(Test_aBFu8s_BFu0c_Ul, "aBFu8s_BFu0c_Ul", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Us()
{
  {
    init_simple_test("aBFu8s_BFu0c_Us");
    static aBFu8s_BFu0c_Us lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu0c_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Us");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Us(Test_aBFu8s_BFu0c_Us, "aBFu8s_BFu0c_Us", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0c_Vp()
{
  {
    init_simple_test("aBFu8s_BFu0c_Vp");
    static aBFu8s_BFu0c_Vp lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0c_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0c_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0c_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0c_Vp");
    check_field_offset(lv, v2, 1, "aBFu8s_BFu0c_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0c_Vp(Test_aBFu8s_BFu0c_Vp, "aBFu8s_BFu0c_Vp", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu0i");
    static aBFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i(Test_aBFu8s_BFu0i, "aBFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu0c");
    static aBFu8s_BFu0i_BFu0c lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu0c(Test_aBFu8s_BFu0i_BFu0c, "aBFu8s_BFu0i_BFu0c", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu0i");
    static aBFu8s_BFu0i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu0i(Test_aBFu8s_BFu0i_BFu0i, "aBFu8s_BFu0i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu0ll");
    static aBFu8s_BFu0i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu0ll(Test_aBFu8s_BFu0i_BFu0ll, "aBFu8s_BFu0i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu0s");
    static aBFu8s_BFu0i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu0s(Test_aBFu8s_BFu0i_BFu0s, "aBFu8s_BFu0i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu15i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu15i");
    static aBFu8s_BFu0i_BFu15i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8s_BFu0i_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0i_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu15i(Test_aBFu8s_BFu0i_BFu15i, "aBFu8s_BFu0i_BFu15i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu15ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu15ll");
    static aBFu8s_BFu0i_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8s_BFu0i_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0i_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu15ll(Test_aBFu8s_BFu0i_BFu15ll, "aBFu8s_BFu0i_BFu15ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu15s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu15s");
    static aBFu8s_BFu0i_BFu15s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, 1, "aBFu8s_BFu0i_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0i_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu15s(Test_aBFu8s_BFu0i_BFu15s, "aBFu8s_BFu0i_BFu15s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu16i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu16i");
    static aBFu8s_BFu0i_BFu16i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8s_BFu0i_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0i_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu16i(Test_aBFu8s_BFu0i_BFu16i, "aBFu8s_BFu0i_BFu16i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu16ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu16ll");
    static aBFu8s_BFu0i_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8s_BFu0i_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0i_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu16ll(Test_aBFu8s_BFu0i_BFu16ll, "aBFu8s_BFu0i_BFu16ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu16s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu16s");
    static aBFu8s_BFu0i_BFu16s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, 1, "aBFu8s_BFu0i_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0i_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu16s(Test_aBFu8s_BFu0i_BFu16s, "aBFu8s_BFu0i_BFu16s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu17i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu17i");
    static aBFu8s_BFu0i_BFu17i lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8s_BFu0i_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8s_BFu0i_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0i_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu17i(Test_aBFu8s_BFu0i_BFu17i, "aBFu8s_BFu0i_BFu17i", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu17ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu17ll");
    static aBFu8s_BFu0i_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8s_BFu0i_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, 1, "aBFu8s_BFu0i_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0i_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu17ll(Test_aBFu8s_BFu0i_BFu17ll, "aBFu8s_BFu0i_BFu17ll", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu1c()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu1c");
    static aBFu8s_BFu0i_BFu1c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8s_BFu0i_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu1c(Test_aBFu8s_BFu0i_BFu1c, "aBFu8s_BFu0i_BFu1c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu1i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu1i");
    static aBFu8s_BFu0i_BFu1i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8s_BFu0i_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu1i(Test_aBFu8s_BFu0i_BFu1i, "aBFu8s_BFu0i_BFu1i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu1ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu1ll");
    static aBFu8s_BFu0i_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8s_BFu0i_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu1ll(Test_aBFu8s_BFu0i_BFu1ll, "aBFu8s_BFu0i_BFu1ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu1s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu1s");
    static aBFu8s_BFu0i_BFu1s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 1, 1, "aBFu8s_BFu0i_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu1s(Test_aBFu8s_BFu0i_BFu1s, "aBFu8s_BFu0i_BFu1s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu31i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu31i");
    static aBFu8s_BFu0i_BFu31i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8s_BFu0i_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0i_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu31i(Test_aBFu8s_BFu0i_BFu31i, "aBFu8s_BFu0i_BFu31i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu31ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu31ll");
    static aBFu8s_BFu0i_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, 1, "aBFu8s_BFu0i_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0i_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu31ll(Test_aBFu8s_BFu0i_BFu31ll, "aBFu8s_BFu0i_BFu31ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu32i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu32i");
    static aBFu8s_BFu0i_BFu32i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8s_BFu0i_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0i_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu32i(Test_aBFu8s_BFu0i_BFu32i, "aBFu8s_BFu0i_BFu32i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu32ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu32ll");
    static aBFu8s_BFu0i_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, 1, "aBFu8s_BFu0i_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0i_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu32ll(Test_aBFu8s_BFu0i_BFu32ll, "aBFu8s_BFu0i_BFu32ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu33()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu33");
    static aBFu8s_BFu0i_BFu33 lv;
    check2(sizeof(lv), ABISELECT(9,9), "sizeof(aBFu8s_BFu0i_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, 1, "aBFu8s_BFu0i_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu0i_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu33(Test_aBFu8s_BFu0i_BFu33, "aBFu8s_BFu0i_BFu33", ABISELECT(9,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu7c()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu7c");
    static aBFu8s_BFu0i_BFu7c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8s_BFu0i_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0i_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu7c(Test_aBFu8s_BFu0i_BFu7c, "aBFu8s_BFu0i_BFu7c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu7i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu7i");
    static aBFu8s_BFu0i_BFu7i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8s_BFu0i_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0i_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu7i(Test_aBFu8s_BFu0i_BFu7i, "aBFu8s_BFu0i_BFu7i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu7ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu7ll");
    static aBFu8s_BFu0i_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8s_BFu0i_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0i_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu7ll(Test_aBFu8s_BFu0i_BFu7ll, "aBFu8s_BFu0i_BFu7ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu7s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu7s");
    static aBFu8s_BFu0i_BFu7s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, 1, "aBFu8s_BFu0i_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0i_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu7s(Test_aBFu8s_BFu0i_BFu7s, "aBFu8s_BFu0i_BFu7s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu8c()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu8c");
    static aBFu8s_BFu0i_BFu8c lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8s_BFu0i_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu8c(Test_aBFu8s_BFu0i_BFu8c, "aBFu8s_BFu0i_BFu8c", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu8i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu8i");
    static aBFu8s_BFu0i_BFu8i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8s_BFu0i_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu8i(Test_aBFu8s_BFu0i_BFu8i, "aBFu8s_BFu0i_BFu8i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu8ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu8ll");
    static aBFu8s_BFu0i_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8s_BFu0i_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu8ll(Test_aBFu8s_BFu0i_BFu8ll, "aBFu8s_BFu0i_BFu8ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu8s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu8s");
    static aBFu8s_BFu0i_BFu8s lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, 1, "aBFu8s_BFu0i_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu8s(Test_aBFu8s_BFu0i_BFu8s, "aBFu8s_BFu0i_BFu8s", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu9i()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu9i");
    static aBFu8s_BFu0i_BFu9i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8s_BFu0i_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0i_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu9i(Test_aBFu8s_BFu0i_BFu9i, "aBFu8s_BFu0i_BFu9i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu9ll()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu9ll");
    static aBFu8s_BFu0i_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8s_BFu0i_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0i_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu9ll(Test_aBFu8s_BFu0i_BFu9ll, "aBFu8s_BFu0i_BFu9ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_BFu9s()
{
  {
    init_simple_test("aBFu8s_BFu0i_BFu9s");
    static aBFu8s_BFu0i_BFu9s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, 1, "aBFu8s_BFu0i_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(4,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0i_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_BFu9s(Test_aBFu8s_BFu0i_BFu9s, "aBFu8s_BFu0i_BFu9s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_C()
{
  {
    init_simple_test("aBFu8s_BFu0i_C");
    static aBFu8s_BFu0i_C lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_C");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_C(Test_aBFu8s_BFu0i_C, "aBFu8s_BFu0i_C", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_D()
{
  {
    init_simple_test("aBFu8s_BFu0i_D");
    static aBFu8s_BFu0i_D lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8s_BFu0i_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_D");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_D(Test_aBFu8s_BFu0i_D, "aBFu8s_BFu0i_D", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_F()
{
  {
    init_simple_test("aBFu8s_BFu0i_F");
    static aBFu8s_BFu0i_F lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_F");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_F(Test_aBFu8s_BFu0i_F, "aBFu8s_BFu0i_F", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_I()
{
  {
    init_simple_test("aBFu8s_BFu0i_I");
    static aBFu8s_BFu0i_I lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_I");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_I(Test_aBFu8s_BFu0i_I, "aBFu8s_BFu0i_I", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Ip()
{
  {
    init_simple_test("aBFu8s_BFu0i_Ip");
    static aBFu8s_BFu0i_Ip lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0i_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Ip");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Ip(Test_aBFu8s_BFu0i_Ip, "aBFu8s_BFu0i_Ip", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_L()
{
  {
    init_simple_test("aBFu8s_BFu0i_L");
    static aBFu8s_BFu0i_L lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8s_BFu0i_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_L");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_L(Test_aBFu8s_BFu0i_L, "aBFu8s_BFu0i_L", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_S()
{
  {
    init_simple_test("aBFu8s_BFu0i_S");
    static aBFu8s_BFu0i_S lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_S");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_S(Test_aBFu8s_BFu0i_S, "aBFu8s_BFu0i_S", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Uc()
{
  {
    init_simple_test("aBFu8s_BFu0i_Uc");
    static aBFu8s_BFu0i_Uc lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0i_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Uc");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Uc(Test_aBFu8s_BFu0i_Uc, "aBFu8s_BFu0i_Uc", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Ui()
{
  {
    init_simple_test("aBFu8s_BFu0i_Ui");
    static aBFu8s_BFu0i_Ui lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu0i_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Ui");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Ui(Test_aBFu8s_BFu0i_Ui, "aBFu8s_BFu0i_Ui", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Ul()
{
  {
    init_simple_test("aBFu8s_BFu0i_Ul");
    static aBFu8s_BFu0i_Ul lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8s_BFu0i_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Ul");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Ul(Test_aBFu8s_BFu0i_Ul, "aBFu8s_BFu0i_Ul", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Us()
{
  {
    init_simple_test("aBFu8s_BFu0i_Us");
    static aBFu8s_BFu0i_Us lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0i_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Us");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Us(Test_aBFu8s_BFu0i_Us, "aBFu8s_BFu0i_Us", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0i_Vp()
{
  {
    init_simple_test("aBFu8s_BFu0i_Vp");
    static aBFu8s_BFu0i_Vp lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0i_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0i_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0i_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0i_Vp");
    check_field_offset(lv, v2, ABISELECT(4,4), "aBFu8s_BFu0i_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0i_Vp(Test_aBFu8s_BFu0i_Vp, "aBFu8s_BFu0i_Vp", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll");
    static aBFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll(Test_aBFu8s_BFu0ll, "aBFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu0c");
    static aBFu8s_BFu0ll_BFu0c lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu0c(Test_aBFu8s_BFu0ll_BFu0c, "aBFu8s_BFu0ll_BFu0c", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu0i");
    static aBFu8s_BFu0ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu0i(Test_aBFu8s_BFu0ll_BFu0i, "aBFu8s_BFu0ll_BFu0i", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu0ll");
    static aBFu8s_BFu0ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu0ll(Test_aBFu8s_BFu0ll_BFu0ll, "aBFu8s_BFu0ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu0s");
    static aBFu8s_BFu0ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu0s(Test_aBFu8s_BFu0ll_BFu0s, "aBFu8s_BFu0ll_BFu0s", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu15i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu15i");
    static aBFu8s_BFu0ll_BFu15i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8s_BFu0ll_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0ll_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu15i(Test_aBFu8s_BFu0ll_BFu15i, "aBFu8s_BFu0ll_BFu15i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu15ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu15ll");
    static aBFu8s_BFu0ll_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8s_BFu0ll_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0ll_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu15ll(Test_aBFu8s_BFu0ll_BFu15ll, "aBFu8s_BFu0ll_BFu15ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu15s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu15s");
    static aBFu8s_BFu0ll_BFu15s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, 1, "aBFu8s_BFu0ll_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0ll_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu15s(Test_aBFu8s_BFu0ll_BFu15s, "aBFu8s_BFu0ll_BFu15s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu16i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu16i");
    static aBFu8s_BFu0ll_BFu16i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8s_BFu0ll_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0ll_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu16i(Test_aBFu8s_BFu0ll_BFu16i, "aBFu8s_BFu0ll_BFu16i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu16ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu16ll");
    static aBFu8s_BFu0ll_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8s_BFu0ll_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0ll_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu16ll(Test_aBFu8s_BFu0ll_BFu16ll, "aBFu8s_BFu0ll_BFu16ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu16s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu16s");
    static aBFu8s_BFu0ll_BFu16s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, 1, "aBFu8s_BFu0ll_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0ll_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu16s(Test_aBFu8s_BFu0ll_BFu16s, "aBFu8s_BFu0ll_BFu16s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu17i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu17i");
    static aBFu8s_BFu0ll_BFu17i lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8s_BFu0ll_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8s_BFu0ll_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0ll_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu17i(Test_aBFu8s_BFu0ll_BFu17i, "aBFu8s_BFu0ll_BFu17i", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu17ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu17ll");
    static aBFu8s_BFu0ll_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(11,7), "sizeof(aBFu8s_BFu0ll_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, 1, "aBFu8s_BFu0ll_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0ll_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu17ll(Test_aBFu8s_BFu0ll_BFu17ll, "aBFu8s_BFu0ll_BFu17ll", ABISELECT(11,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu1c()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu1c");
    static aBFu8s_BFu0ll_BFu1c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8s_BFu0ll_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu1c(Test_aBFu8s_BFu0ll_BFu1c, "aBFu8s_BFu0ll_BFu1c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu1i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu1i");
    static aBFu8s_BFu0ll_BFu1i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8s_BFu0ll_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu1i(Test_aBFu8s_BFu0ll_BFu1i, "aBFu8s_BFu0ll_BFu1i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu1ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu1ll");
    static aBFu8s_BFu0ll_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8s_BFu0ll_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu1ll(Test_aBFu8s_BFu0ll_BFu1ll, "aBFu8s_BFu0ll_BFu1ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu1s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu1s");
    static aBFu8s_BFu0ll_BFu1s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 1, 1, "aBFu8s_BFu0ll_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu1s(Test_aBFu8s_BFu0ll_BFu1s, "aBFu8s_BFu0ll_BFu1s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu31i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu31i");
    static aBFu8s_BFu0ll_BFu31i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8s_BFu0ll_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0ll_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu31i(Test_aBFu8s_BFu0ll_BFu31i, "aBFu8s_BFu0ll_BFu31i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu31ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu31ll");
    static aBFu8s_BFu0ll_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, 1, "aBFu8s_BFu0ll_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0ll_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu31ll(Test_aBFu8s_BFu0ll_BFu31ll, "aBFu8s_BFu0ll_BFu31ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu32i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu32i");
    static aBFu8s_BFu0ll_BFu32i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8s_BFu0ll_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0ll_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu32i(Test_aBFu8s_BFu0ll_BFu32i, "aBFu8s_BFu0ll_BFu32i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu32ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu32ll");
    static aBFu8s_BFu0ll_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, 1, "aBFu8s_BFu0ll_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0ll_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu32ll(Test_aBFu8s_BFu0ll_BFu32ll, "aBFu8s_BFu0ll_BFu32ll", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu33()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu33");
    static aBFu8s_BFu0ll_BFu33 lv;
    check2(sizeof(lv), ABISELECT(13,9), "sizeof(aBFu8s_BFu0ll_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, 1, "aBFu8s_BFu0ll_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu0ll_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu33(Test_aBFu8s_BFu0ll_BFu33, "aBFu8s_BFu0ll_BFu33", ABISELECT(13,9));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu7c()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu7c");
    static aBFu8s_BFu0ll_BFu7c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8s_BFu0ll_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0ll_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu7c(Test_aBFu8s_BFu0ll_BFu7c, "aBFu8s_BFu0ll_BFu7c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu7i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu7i");
    static aBFu8s_BFu0ll_BFu7i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8s_BFu0ll_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0ll_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu7i(Test_aBFu8s_BFu0ll_BFu7i, "aBFu8s_BFu0ll_BFu7i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu7ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu7ll");
    static aBFu8s_BFu0ll_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8s_BFu0ll_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0ll_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu7ll(Test_aBFu8s_BFu0ll_BFu7ll, "aBFu8s_BFu0ll_BFu7ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu7s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu7s");
    static aBFu8s_BFu0ll_BFu7s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, 1, "aBFu8s_BFu0ll_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0ll_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu7s(Test_aBFu8s_BFu0ll_BFu7s, "aBFu8s_BFu0ll_BFu7s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu8c()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu8c");
    static aBFu8s_BFu0ll_BFu8c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8s_BFu0ll_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu8c(Test_aBFu8s_BFu0ll_BFu8c, "aBFu8s_BFu0ll_BFu8c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu8i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu8i");
    static aBFu8s_BFu0ll_BFu8i lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8s_BFu0ll_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu8i(Test_aBFu8s_BFu0ll_BFu8i, "aBFu8s_BFu0ll_BFu8i", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu8ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu8ll");
    static aBFu8s_BFu0ll_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8s_BFu0ll_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu8ll(Test_aBFu8s_BFu0ll_BFu8ll, "aBFu8s_BFu0ll_BFu8ll", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu8s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu8s");
    static aBFu8s_BFu0ll_BFu8s lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, 1, "aBFu8s_BFu0ll_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu8s(Test_aBFu8s_BFu0ll_BFu8s, "aBFu8s_BFu0ll_BFu8s", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu9i()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu9i");
    static aBFu8s_BFu0ll_BFu9i lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8s_BFu0ll_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0ll_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu9i(Test_aBFu8s_BFu0ll_BFu9i, "aBFu8s_BFu0ll_BFu9i", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu9ll()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu9ll");
    static aBFu8s_BFu0ll_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8s_BFu0ll_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0ll_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu9ll(Test_aBFu8s_BFu0ll_BFu9ll, "aBFu8s_BFu0ll_BFu9ll", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_BFu9s()
{
  {
    init_simple_test("aBFu8s_BFu0ll_BFu9s");
    static aBFu8s_BFu0ll_BFu9s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, 1, "aBFu8s_BFu0ll_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(8,4), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0ll_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_BFu9s(Test_aBFu8s_BFu0ll_BFu9s, "aBFu8s_BFu0ll_BFu9s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_C()
{
  {
    init_simple_test("aBFu8s_BFu0ll_C");
    static aBFu8s_BFu0ll_C lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_C");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_C(Test_aBFu8s_BFu0ll_C, "aBFu8s_BFu0ll_C", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_D()
{
  {
    init_simple_test("aBFu8s_BFu0ll_D");
    static aBFu8s_BFu0ll_D lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8s_BFu0ll_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_D");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_D(Test_aBFu8s_BFu0ll_D, "aBFu8s_BFu0ll_D", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_F()
{
  {
    init_simple_test("aBFu8s_BFu0ll_F");
    static aBFu8s_BFu0ll_F lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_F");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_F(Test_aBFu8s_BFu0ll_F, "aBFu8s_BFu0ll_F", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_I()
{
  {
    init_simple_test("aBFu8s_BFu0ll_I");
    static aBFu8s_BFu0ll_I lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_I");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_I(Test_aBFu8s_BFu0ll_I, "aBFu8s_BFu0ll_I", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Ip()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Ip");
    static aBFu8s_BFu0ll_Ip lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8s_BFu0ll_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Ip");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Ip(Test_aBFu8s_BFu0ll_Ip, "aBFu8s_BFu0ll_Ip", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_L()
{
  {
    init_simple_test("aBFu8s_BFu0ll_L");
    static aBFu8s_BFu0ll_L lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8s_BFu0ll_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_L");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_L(Test_aBFu8s_BFu0ll_L, "aBFu8s_BFu0ll_L", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_S()
{
  {
    init_simple_test("aBFu8s_BFu0ll_S");
    static aBFu8s_BFu0ll_S lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_S");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_S(Test_aBFu8s_BFu0ll_S, "aBFu8s_BFu0ll_S", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Uc()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Uc");
    static aBFu8s_BFu0ll_Uc lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_BFu0ll_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Uc");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Uc(Test_aBFu8s_BFu0ll_Uc, "aBFu8s_BFu0ll_Uc", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Ui()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Ui");
    static aBFu8s_BFu0ll_Ui lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_BFu0ll_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Ui");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Ui(Test_aBFu8s_BFu0ll_Ui, "aBFu8s_BFu0ll_Ui", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Ul()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Ul");
    static aBFu8s_BFu0ll_Ul lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8s_BFu0ll_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Ul");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Ul(Test_aBFu8s_BFu0ll_Ul, "aBFu8s_BFu0ll_Ul", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Us()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Us");
    static aBFu8s_BFu0ll_Us lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0ll_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Us");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Us(Test_aBFu8s_BFu0ll_Us, "aBFu8s_BFu0ll_Us", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0ll_Vp()
{
  {
    init_simple_test("aBFu8s_BFu0ll_Vp");
    static aBFu8s_BFu0ll_Vp lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8s_BFu0ll_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0ll_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0ll_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0ll_Vp");
    check_field_offset(lv, v2, ABISELECT(8,4), "aBFu8s_BFu0ll_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0ll_Vp(Test_aBFu8s_BFu0ll_Vp, "aBFu8s_BFu0ll_Vp", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu0s");
    static aBFu8s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s(Test_aBFu8s_BFu0s, "aBFu8s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu0c");
    static aBFu8s_BFu0s_BFu0c lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8s_BFu0s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu0c(Test_aBFu8s_BFu0s_BFu0c, "aBFu8s_BFu0s_BFu0c", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu0i");
    static aBFu8s_BFu0s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu0i(Test_aBFu8s_BFu0s_BFu0i, "aBFu8s_BFu0s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu0ll");
    static aBFu8s_BFu0s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu0s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu0ll(Test_aBFu8s_BFu0s_BFu0ll, "aBFu8s_BFu0s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu0s");
    static aBFu8s_BFu0s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(2,2), "sizeof(aBFu8s_BFu0s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu0s(Test_aBFu8s_BFu0s_BFu0s, "aBFu8s_BFu0s_BFu0s", ABISELECT(2,2));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu15i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu15i");
    static aBFu8s_BFu0s_BFu15i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu15i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu15i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu15i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8s_BFu0s_BFu15i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0s_BFu15i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu15i(Test_aBFu8s_BFu0s_BFu15i, "aBFu8s_BFu0s_BFu15i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu15ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu15ll");
    static aBFu8s_BFu0s_BFu15ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu15ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu15ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8s_BFu0s_BFu15ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0s_BFu15ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu15ll(Test_aBFu8s_BFu0s_BFu15ll, "aBFu8s_BFu0s_BFu15ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu15s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu15s");
    static aBFu8s_BFu0s_BFu15s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu15s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu15s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu15s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, 1, "aBFu8s_BFu0s_BFu15s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu0s_BFu15s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu15s(Test_aBFu8s_BFu0s_BFu15s, "aBFu8s_BFu0s_BFu15s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu16i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu16i");
    static aBFu8s_BFu0s_BFu16i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu16i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu16i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu16i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8s_BFu0s_BFu16i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0s_BFu16i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu16i(Test_aBFu8s_BFu0s_BFu16i, "aBFu8s_BFu0s_BFu16i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu16ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu16ll");
    static aBFu8s_BFu0s_BFu16ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu16ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu16ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8s_BFu0s_BFu16ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0s_BFu16ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu16ll(Test_aBFu8s_BFu0s_BFu16ll, "aBFu8s_BFu0s_BFu16ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu16s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu16s");
    static aBFu8s_BFu0s_BFu16s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu16s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu16s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu16s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, 1, "aBFu8s_BFu0s_BFu16s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu0s_BFu16s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu16s(Test_aBFu8s_BFu0s_BFu16s, "aBFu8s_BFu0s_BFu16s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu17i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu17i");
    static aBFu8s_BFu0s_BFu17i lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0s_BFu17i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu17i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu17i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8s_BFu0s_BFu17i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0s_BFu17i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu17i(Test_aBFu8s_BFu0s_BFu17i, "aBFu8s_BFu0s_BFu17i", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu17ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu17ll");
    static aBFu8s_BFu0s_BFu17ll lv;
    check2(sizeof(lv), ABISELECT(5,5), "sizeof(aBFu8s_BFu0s_BFu17ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu17ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, 1, "aBFu8s_BFu0s_BFu17ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu0s_BFu17ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu17ll(Test_aBFu8s_BFu0s_BFu17ll, "aBFu8s_BFu0s_BFu17ll", ABISELECT(5,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu1c()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu1c");
    static aBFu8s_BFu0s_BFu1c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu1c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu1c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu1c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu1c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8s_BFu0s_BFu1c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu1c(Test_aBFu8s_BFu0s_BFu1c, "aBFu8s_BFu0s_BFu1c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu1i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu1i");
    static aBFu8s_BFu0s_BFu1i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu1i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu1i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu1i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu1i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8s_BFu0s_BFu1i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu1i(Test_aBFu8s_BFu0s_BFu1i, "aBFu8s_BFu0s_BFu1i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu1ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu1ll");
    static aBFu8s_BFu0s_BFu1ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu1ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu1ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu1ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu1ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8s_BFu0s_BFu1ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu1ll(Test_aBFu8s_BFu0s_BFu1ll, "aBFu8s_BFu0s_BFu1ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu1s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu1s");
    static aBFu8s_BFu0s_BFu1s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu1s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu1s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu1s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu1s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 1, 1, "aBFu8s_BFu0s_BFu1s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu1s(Test_aBFu8s_BFu0s_BFu1s, "aBFu8s_BFu0s_BFu1s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu31i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu31i");
    static aBFu8s_BFu0s_BFu31i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_BFu31i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu31i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu31i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8s_BFu0s_BFu31i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0s_BFu31i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu31i(Test_aBFu8s_BFu0s_BFu31i, "aBFu8s_BFu0s_BFu31i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu31ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu31ll");
    static aBFu8s_BFu0s_BFu31ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_BFu31ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu31ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, 1, "aBFu8s_BFu0s_BFu31ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu0s_BFu31ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu31ll(Test_aBFu8s_BFu0s_BFu31ll, "aBFu8s_BFu0s_BFu31ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu32i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu32i");
    static aBFu8s_BFu0s_BFu32i lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_BFu32i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu32i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu32i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8s_BFu0s_BFu32i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0s_BFu32i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu32i(Test_aBFu8s_BFu0s_BFu32i, "aBFu8s_BFu0s_BFu32i", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu32ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu32ll");
    static aBFu8s_BFu0s_BFu32ll lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_BFu32ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu32ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, 1, "aBFu8s_BFu0s_BFu32ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu0s_BFu32ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu32ll(Test_aBFu8s_BFu0s_BFu32ll, "aBFu8s_BFu0s_BFu32ll", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu33()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu33");
    static aBFu8s_BFu0s_BFu33 lv;
    check2(sizeof(lv), ABISELECT(7,7), "sizeof(aBFu8s_BFu0s_BFu33)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu33)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu33");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, 1, "aBFu8s_BFu0s_BFu33");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu0s_BFu33");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu33(Test_aBFu8s_BFu0s_BFu33, "aBFu8s_BFu0s_BFu33", ABISELECT(7,7));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu7c()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu7c");
    static aBFu8s_BFu0s_BFu7c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu7c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu7c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu7c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8s_BFu0s_BFu7c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0s_BFu7c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu7c(Test_aBFu8s_BFu0s_BFu7c, "aBFu8s_BFu0s_BFu7c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu7i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu7i");
    static aBFu8s_BFu0s_BFu7i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu7i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu7i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu7i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8s_BFu0s_BFu7i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0s_BFu7i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu7i(Test_aBFu8s_BFu0s_BFu7i, "aBFu8s_BFu0s_BFu7i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu7ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu7ll");
    static aBFu8s_BFu0s_BFu7ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu7ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu7ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8s_BFu0s_BFu7ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0s_BFu7ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu7ll(Test_aBFu8s_BFu0s_BFu7ll, "aBFu8s_BFu0s_BFu7ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu7s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu7s");
    static aBFu8s_BFu0s_BFu7s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu7s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu7s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu7s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, 1, "aBFu8s_BFu0s_BFu7s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu0s_BFu7s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu7s(Test_aBFu8s_BFu0s_BFu7s, "aBFu8s_BFu0s_BFu7s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu8c()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu8c");
    static aBFu8s_BFu0s_BFu8c lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu8c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu8c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu8c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8s_BFu0s_BFu8c");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu8c(Test_aBFu8s_BFu0s_BFu8c, "aBFu8s_BFu0s_BFu8c", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu8i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu8i");
    static aBFu8s_BFu0s_BFu8i lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu8i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu8i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu8i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8s_BFu0s_BFu8i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu8i(Test_aBFu8s_BFu0s_BFu8i, "aBFu8s_BFu0s_BFu8i", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu8ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu8ll");
    static aBFu8s_BFu0s_BFu8ll lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu8ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu8ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8s_BFu0s_BFu8ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu8ll(Test_aBFu8s_BFu0s_BFu8ll, "aBFu8s_BFu0s_BFu8ll", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu8s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu8s");
    static aBFu8s_BFu0s_BFu8s lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_BFu8s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu8s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu8s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, 1, "aBFu8s_BFu0s_BFu8s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu8s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu8s(Test_aBFu8s_BFu0s_BFu8s, "aBFu8s_BFu0s_BFu8s", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu9i()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu9i");
    static aBFu8s_BFu0s_BFu9i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu9i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu9i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu9i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8s_BFu0s_BFu9i");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0s_BFu9i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu9i(Test_aBFu8s_BFu0s_BFu9i, "aBFu8s_BFu0s_BFu9i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu9ll()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu9ll");
    static aBFu8s_BFu0s_BFu9ll lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu9ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu9ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8s_BFu0s_BFu9ll");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0s_BFu9ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu9ll(Test_aBFu8s_BFu0s_BFu9ll, "aBFu8s_BFu0s_BFu9ll", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_BFu9s()
{
  {
    init_simple_test("aBFu8s_BFu0s_BFu9s");
    static aBFu8s_BFu0s_BFu9s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_BFu9s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_BFu9s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_BFu9s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, 1, "aBFu8s_BFu0s_BFu9s");
    set_bf_and_test(lv, v2, ABISELECT(2,2), 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu0s_BFu9s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_BFu9s(Test_aBFu8s_BFu0s_BFu9s, "aBFu8s_BFu0s_BFu9s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_C()
{
  {
    init_simple_test("aBFu8s_BFu0s_C");
    static aBFu8s_BFu0s_C lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_C)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_C)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_C");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_C");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_C.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_C(Test_aBFu8s_BFu0s_C, "aBFu8s_BFu0s_C", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_D()
{
  {
    init_simple_test("aBFu8s_BFu0s_D");
    static aBFu8s_BFu0s_D lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8s_BFu0s_D)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_D)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_D");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_D");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_D.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_D(Test_aBFu8s_BFu0s_D, "aBFu8s_BFu0s_D", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_F()
{
  {
    init_simple_test("aBFu8s_BFu0s_F");
    static aBFu8s_BFu0s_F lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_F)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_F)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_F");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_F");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_F.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_F(Test_aBFu8s_BFu0s_F, "aBFu8s_BFu0s_F", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_I()
{
  {
    init_simple_test("aBFu8s_BFu0s_I");
    static aBFu8s_BFu0s_I lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_I)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_I)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_I");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_I");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_I.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_I(Test_aBFu8s_BFu0s_I, "aBFu8s_BFu0s_I", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Ip()
{
  {
    init_simple_test("aBFu8s_BFu0s_Ip");
    static aBFu8s_BFu0s_Ip lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0s_Ip)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Ip)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Ip");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Ip");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Ip.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Ip(Test_aBFu8s_BFu0s_Ip, "aBFu8s_BFu0s_Ip", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_L()
{
  {
    init_simple_test("aBFu8s_BFu0s_L");
    static aBFu8s_BFu0s_L lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8s_BFu0s_L)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_L)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_L");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_L");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_L.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_L(Test_aBFu8s_BFu0s_L, "aBFu8s_BFu0s_L", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_S()
{
  {
    init_simple_test("aBFu8s_BFu0s_S");
    static aBFu8s_BFu0s_S lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_S)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_S)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_S");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_S");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_S.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_S(Test_aBFu8s_BFu0s_S, "aBFu8s_BFu0s_S", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Uc()
{
  {
    init_simple_test("aBFu8s_BFu0s_Uc");
    static aBFu8s_BFu0s_Uc lv;
    check2(sizeof(lv), ABISELECT(3,3), "sizeof(aBFu8s_BFu0s_Uc)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Uc)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Uc");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Uc");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Uc.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Uc(Test_aBFu8s_BFu0s_Uc, "aBFu8s_BFu0s_Uc", ABISELECT(3,3));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Ui()
{
  {
    init_simple_test("aBFu8s_BFu0s_Ui");
    static aBFu8s_BFu0s_Ui lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu0s_Ui)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Ui)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Ui");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Ui");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Ui.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Ui(Test_aBFu8s_BFu0s_Ui, "aBFu8s_BFu0s_Ui", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Ul()
{
  {
    init_simple_test("aBFu8s_BFu0s_Ul");
    static aBFu8s_BFu0s_Ul lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8s_BFu0s_Ul)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Ul)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Ul");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Ul");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Ul.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Ul(Test_aBFu8s_BFu0s_Ul, "aBFu8s_BFu0s_Ul", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Us()
{
  {
    init_simple_test("aBFu8s_BFu0s_Us");
    static aBFu8s_BFu0s_Us lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu0s_Us)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Us)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Us");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Us");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Us.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Us(Test_aBFu8s_BFu0s_Us, "aBFu8s_BFu0s_Us", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu0s_Vp()
{
  {
    init_simple_test("aBFu8s_BFu0s_Vp");
    static aBFu8s_BFu0s_Vp lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_BFu0s_Vp)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu0s_Vp)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu0s_Vp");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu0s_Vp");
    check_field_offset(lv, v2, ABISELECT(2,2), "aBFu8s_BFu0s_Vp.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu0s_Vp(Test_aBFu8s_BFu0s_Vp, "aBFu8s_BFu0s_Vp", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu15i_BFu0c");
    static aBFu8s_BFu15i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu15i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15i_BFu0c(Test_aBFu8s_BFu15i_BFu0c, "aBFu8s_BFu15i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu15i_BFu0i");
    static aBFu8s_BFu15i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15i_BFu0i(Test_aBFu8s_BFu15i_BFu0i, "aBFu8s_BFu15i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu15i_BFu0ll");
    static aBFu8s_BFu15i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu15i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15i_BFu0ll(Test_aBFu8s_BFu15i_BFu0ll, "aBFu8s_BFu15i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu15i_BFu0s");
    static aBFu8s_BFu15i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15i_BFu0s(Test_aBFu8s_BFu15i_BFu0s, "aBFu8s_BFu15i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu15ll_BFu0c");
    static aBFu8s_BFu15ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu15ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15ll_BFu0c(Test_aBFu8s_BFu15ll_BFu0c, "aBFu8s_BFu15ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu15ll_BFu0i");
    static aBFu8s_BFu15ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15ll_BFu0i(Test_aBFu8s_BFu15ll_BFu0i, "aBFu8s_BFu15ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu15ll_BFu0ll");
    static aBFu8s_BFu15ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu15ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15ll_BFu0ll(Test_aBFu8s_BFu15ll_BFu0ll, "aBFu8s_BFu15ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu15ll_BFu0s");
    static aBFu8s_BFu15ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15ll_BFu0s(Test_aBFu8s_BFu15ll_BFu0s, "aBFu8s_BFu15ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu15s_BFu0c");
    static aBFu8s_BFu15s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu15s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15s_BFu0c(Test_aBFu8s_BFu15s_BFu0c, "aBFu8s_BFu15s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu15s_BFu0i");
    static aBFu8s_BFu15s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15s_BFu0i(Test_aBFu8s_BFu15s_BFu0i, "aBFu8s_BFu15s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu15s_BFu0ll");
    static aBFu8s_BFu15s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu15s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15s_BFu0ll(Test_aBFu8s_BFu15s_BFu0ll, "aBFu8s_BFu15s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu15s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu15s_BFu0s");
    static aBFu8s_BFu15s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu15s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu15s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu15s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, 1, "aBFu8s_BFu15s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 15, hide_ull(1LL<<14), "aBFu8s_BFu15s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu15s_BFu0s(Test_aBFu8s_BFu15s_BFu0s, "aBFu8s_BFu15s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu16i_BFu0c");
    static aBFu8s_BFu16i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu16i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16i_BFu0c(Test_aBFu8s_BFu16i_BFu0c, "aBFu8s_BFu16i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu16i_BFu0i");
    static aBFu8s_BFu16i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16i_BFu0i(Test_aBFu8s_BFu16i_BFu0i, "aBFu8s_BFu16i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu16i_BFu0ll");
    static aBFu8s_BFu16i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu16i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16i_BFu0ll(Test_aBFu8s_BFu16i_BFu0ll, "aBFu8s_BFu16i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu16i_BFu0s");
    static aBFu8s_BFu16i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16i_BFu0s(Test_aBFu8s_BFu16i_BFu0s, "aBFu8s_BFu16i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu16ll_BFu0c");
    static aBFu8s_BFu16ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu16ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16ll_BFu0c(Test_aBFu8s_BFu16ll_BFu0c, "aBFu8s_BFu16ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu16ll_BFu0i");
    static aBFu8s_BFu16ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16ll_BFu0i(Test_aBFu8s_BFu16ll_BFu0i, "aBFu8s_BFu16ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu16ll_BFu0ll");
    static aBFu8s_BFu16ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu16ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16ll_BFu0ll(Test_aBFu8s_BFu16ll_BFu0ll, "aBFu8s_BFu16ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu16ll_BFu0s");
    static aBFu8s_BFu16ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16ll_BFu0s(Test_aBFu8s_BFu16ll_BFu0s, "aBFu8s_BFu16ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu16s_BFu0c");
    static aBFu8s_BFu16s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu16s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16s_BFu0c(Test_aBFu8s_BFu16s_BFu0c, "aBFu8s_BFu16s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu16s_BFu0i");
    static aBFu8s_BFu16s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16s_BFu0i(Test_aBFu8s_BFu16s_BFu0i, "aBFu8s_BFu16s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu16s_BFu0ll");
    static aBFu8s_BFu16s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu16s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16s_BFu0ll(Test_aBFu8s_BFu16s_BFu0ll, "aBFu8s_BFu16s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu16s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu16s_BFu0s");
    static aBFu8s_BFu16s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu16s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu16s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu16s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, 1, "aBFu8s_BFu16s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 16, hide_ull(1LL<<15), "aBFu8s_BFu16s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu16s_BFu0s(Test_aBFu8s_BFu16s_BFu0s, "aBFu8s_BFu16s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu17i_BFu0c");
    static aBFu8s_BFu17i_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17i_BFu0c(Test_aBFu8s_BFu17i_BFu0c, "aBFu8s_BFu17i_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu17i_BFu0i");
    static aBFu8s_BFu17i_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17i_BFu0i(Test_aBFu8s_BFu17i_BFu0i, "aBFu8s_BFu17i_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu17i_BFu0ll");
    static aBFu8s_BFu17i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu17i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17i_BFu0ll(Test_aBFu8s_BFu17i_BFu0ll, "aBFu8s_BFu17i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu17i_BFu0s");
    static aBFu8s_BFu17i_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17i_BFu0s(Test_aBFu8s_BFu17i_BFu0s, "aBFu8s_BFu17i_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu17ll_BFu0c");
    static aBFu8s_BFu17ll_BFu0c lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17ll_BFu0c(Test_aBFu8s_BFu17ll_BFu0c, "aBFu8s_BFu17ll_BFu0c", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu17ll_BFu0i");
    static aBFu8s_BFu17ll_BFu0i lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17ll_BFu0i(Test_aBFu8s_BFu17ll_BFu0i, "aBFu8s_BFu17ll_BFu0i", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu17ll_BFu0ll");
    static aBFu8s_BFu17ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu17ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17ll_BFu0ll(Test_aBFu8s_BFu17ll_BFu0ll, "aBFu8s_BFu17ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu17ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu17ll_BFu0s");
    static aBFu8s_BFu17ll_BFu0s lv;
    check2(sizeof(lv), 4, "sizeof(aBFu8s_BFu17ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu17ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, 1, "aBFu8s_BFu17ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 17, hide_ull(1LL<<16), "aBFu8s_BFu17ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu17ll_BFu0s(Test_aBFu8s_BFu17ll_BFu0s, "aBFu8s_BFu17ll_BFu0s", 4);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1c_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu1c_BFu0c");
    static aBFu8s_BFu1c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1c_BFu0c(Test_aBFu8s_BFu1c_BFu0c, "aBFu8s_BFu1c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1c_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu1c_BFu0i");
    static aBFu8s_BFu1c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu1c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1c_BFu0i(Test_aBFu8s_BFu1c_BFu0i, "aBFu8s_BFu1c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1c_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu1c_BFu0ll");
    static aBFu8s_BFu1c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu1c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1c_BFu0ll(Test_aBFu8s_BFu1c_BFu0ll, "aBFu8s_BFu1c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1c_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu1c_BFu0s");
    static aBFu8s_BFu1c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1c_BFu0s(Test_aBFu8s_BFu1c_BFu0s, "aBFu8s_BFu1c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu1i_BFu0c");
    static aBFu8s_BFu1i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1i_BFu0c(Test_aBFu8s_BFu1i_BFu0c, "aBFu8s_BFu1i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu1i_BFu0i");
    static aBFu8s_BFu1i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu1i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1i_BFu0i(Test_aBFu8s_BFu1i_BFu0i, "aBFu8s_BFu1i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu1i_BFu0ll");
    static aBFu8s_BFu1i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu1i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1i_BFu0ll(Test_aBFu8s_BFu1i_BFu0ll, "aBFu8s_BFu1i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu1i_BFu0s");
    static aBFu8s_BFu1i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1i_BFu0s(Test_aBFu8s_BFu1i_BFu0s, "aBFu8s_BFu1i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu1ll_BFu0c");
    static aBFu8s_BFu1ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1ll_BFu0c(Test_aBFu8s_BFu1ll_BFu0c, "aBFu8s_BFu1ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu1ll_BFu0i");
    static aBFu8s_BFu1ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu1ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1ll_BFu0i(Test_aBFu8s_BFu1ll_BFu0i, "aBFu8s_BFu1ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu1ll_BFu0ll");
    static aBFu8s_BFu1ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu1ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1ll_BFu0ll(Test_aBFu8s_BFu1ll_BFu0ll, "aBFu8s_BFu1ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu1ll_BFu0s");
    static aBFu8s_BFu1ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1ll_BFu0s(Test_aBFu8s_BFu1ll_BFu0s, "aBFu8s_BFu1ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu1s_BFu0c");
    static aBFu8s_BFu1s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1s_BFu0c(Test_aBFu8s_BFu1s_BFu0c, "aBFu8s_BFu1s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu1s_BFu0i");
    static aBFu8s_BFu1s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu1s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1s_BFu0i(Test_aBFu8s_BFu1s_BFu0i, "aBFu8s_BFu1s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu1s_BFu0ll");
    static aBFu8s_BFu1s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu1s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1s_BFu0ll(Test_aBFu8s_BFu1s_BFu0ll, "aBFu8s_BFu1s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu1s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu1s_BFu0s");
    static aBFu8s_BFu1s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu1s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu1s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu1s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu1s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 1, 1, "aBFu8s_BFu1s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu1s_BFu0s(Test_aBFu8s_BFu1s_BFu0s, "aBFu8s_BFu1s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu31i_BFu0c");
    static aBFu8s_BFu31i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu31i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31i_BFu0c(Test_aBFu8s_BFu31i_BFu0c, "aBFu8s_BFu31i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu31i_BFu0i");
    static aBFu8s_BFu31i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu31i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31i_BFu0i(Test_aBFu8s_BFu31i_BFu0i, "aBFu8s_BFu31i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu31i_BFu0ll");
    static aBFu8s_BFu31i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu31i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31i_BFu0ll(Test_aBFu8s_BFu31i_BFu0ll, "aBFu8s_BFu31i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu31i_BFu0s");
    static aBFu8s_BFu31i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu31i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31i_BFu0s(Test_aBFu8s_BFu31i_BFu0s, "aBFu8s_BFu31i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu31ll_BFu0c");
    static aBFu8s_BFu31ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu31ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31ll_BFu0c(Test_aBFu8s_BFu31ll_BFu0c, "aBFu8s_BFu31ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu31ll_BFu0i");
    static aBFu8s_BFu31ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu31ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31ll_BFu0i(Test_aBFu8s_BFu31ll_BFu0i, "aBFu8s_BFu31ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu31ll_BFu0ll");
    static aBFu8s_BFu31ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu31ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31ll_BFu0ll(Test_aBFu8s_BFu31ll_BFu0ll, "aBFu8s_BFu31ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu31ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu31ll_BFu0s");
    static aBFu8s_BFu31ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu31ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu31ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, 1, "aBFu8s_BFu31ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 31, hide_ull(1LL<<30), "aBFu8s_BFu31ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu31ll_BFu0s(Test_aBFu8s_BFu31ll_BFu0s, "aBFu8s_BFu31ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu32i_BFu0c");
    static aBFu8s_BFu32i_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu32i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32i_BFu0c(Test_aBFu8s_BFu32i_BFu0c, "aBFu8s_BFu32i_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu32i_BFu0i");
    static aBFu8s_BFu32i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu32i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32i_BFu0i(Test_aBFu8s_BFu32i_BFu0i, "aBFu8s_BFu32i_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu32i_BFu0ll");
    static aBFu8s_BFu32i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu32i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32i_BFu0ll(Test_aBFu8s_BFu32i_BFu0ll, "aBFu8s_BFu32i_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu32i_BFu0s");
    static aBFu8s_BFu32i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu32i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32i_BFu0s(Test_aBFu8s_BFu32i_BFu0s, "aBFu8s_BFu32i_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu32ll_BFu0c");
    static aBFu8s_BFu32ll_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_BFu32ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32ll_BFu0c(Test_aBFu8s_BFu32ll_BFu0c, "aBFu8s_BFu32ll_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu32ll_BFu0i");
    static aBFu8s_BFu32ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu32ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32ll_BFu0i(Test_aBFu8s_BFu32ll_BFu0i, "aBFu8s_BFu32ll_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu32ll_BFu0ll");
    static aBFu8s_BFu32ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu32ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32ll_BFu0ll(Test_aBFu8s_BFu32ll_BFu0ll, "aBFu8s_BFu32ll_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu32ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu32ll_BFu0s");
    static aBFu8s_BFu32ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_BFu32ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu32ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, 1, "aBFu8s_BFu32ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 32, hide_ull(1LL<<31), "aBFu8s_BFu32ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu32ll_BFu0s(Test_aBFu8s_BFu32ll_BFu0s, "aBFu8s_BFu32ll_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu33_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu33_BFu0c");
    static aBFu8s_BFu33_BFu0c lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8s_BFu33_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu33_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu33_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8s_BFu33_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu33_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu33_BFu0c(Test_aBFu8s_BFu33_BFu0c, "aBFu8s_BFu33_BFu0c", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu33_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu33_BFu0i");
    static aBFu8s_BFu33_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu33_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu33_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu33_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8s_BFu33_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu33_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu33_BFu0i(Test_aBFu8s_BFu33_BFu0i, "aBFu8s_BFu33_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu33_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu33_BFu0ll");
    static aBFu8s_BFu33_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_BFu33_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu33_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu33_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8s_BFu33_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu33_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu33_BFu0ll(Test_aBFu8s_BFu33_BFu0ll, "aBFu8s_BFu33_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu33_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu33_BFu0s");
    static aBFu8s_BFu33_BFu0s lv;
    check2(sizeof(lv), 6, "sizeof(aBFu8s_BFu33_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu33_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu33_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, 1, "aBFu8s_BFu33_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 33, hide_ull(1LL<<32), "aBFu8s_BFu33_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu33_BFu0s(Test_aBFu8s_BFu33_BFu0s, "aBFu8s_BFu33_BFu0s", 6);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7c_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu7c_BFu0c");
    static aBFu8s_BFu7c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7c_BFu0c(Test_aBFu8s_BFu7c_BFu0c, "aBFu8s_BFu7c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7c_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu7c_BFu0i");
    static aBFu8s_BFu7c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu7c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7c_BFu0i(Test_aBFu8s_BFu7c_BFu0i, "aBFu8s_BFu7c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7c_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu7c_BFu0ll");
    static aBFu8s_BFu7c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu7c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7c_BFu0ll(Test_aBFu8s_BFu7c_BFu0ll, "aBFu8s_BFu7c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7c_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu7c_BFu0s");
    static aBFu8s_BFu7c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7c_BFu0s(Test_aBFu8s_BFu7c_BFu0s, "aBFu8s_BFu7c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu7i_BFu0c");
    static aBFu8s_BFu7i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7i_BFu0c(Test_aBFu8s_BFu7i_BFu0c, "aBFu8s_BFu7i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu7i_BFu0i");
    static aBFu8s_BFu7i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu7i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7i_BFu0i(Test_aBFu8s_BFu7i_BFu0i, "aBFu8s_BFu7i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu7i_BFu0ll");
    static aBFu8s_BFu7i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu7i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7i_BFu0ll(Test_aBFu8s_BFu7i_BFu0ll, "aBFu8s_BFu7i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu7i_BFu0s");
    static aBFu8s_BFu7i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7i_BFu0s(Test_aBFu8s_BFu7i_BFu0s, "aBFu8s_BFu7i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu7ll_BFu0c");
    static aBFu8s_BFu7ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7ll_BFu0c(Test_aBFu8s_BFu7ll_BFu0c, "aBFu8s_BFu7ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu7ll_BFu0i");
    static aBFu8s_BFu7ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu7ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7ll_BFu0i(Test_aBFu8s_BFu7ll_BFu0i, "aBFu8s_BFu7ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu7ll_BFu0ll");
    static aBFu8s_BFu7ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu7ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7ll_BFu0ll(Test_aBFu8s_BFu7ll_BFu0ll, "aBFu8s_BFu7ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu7ll_BFu0s");
    static aBFu8s_BFu7ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7ll_BFu0s(Test_aBFu8s_BFu7ll_BFu0s, "aBFu8s_BFu7ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu7s_BFu0c");
    static aBFu8s_BFu7s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7s_BFu0c(Test_aBFu8s_BFu7s_BFu0c, "aBFu8s_BFu7s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu7s_BFu0i");
    static aBFu8s_BFu7s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu7s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7s_BFu0i(Test_aBFu8s_BFu7s_BFu0i, "aBFu8s_BFu7s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu7s_BFu0ll");
    static aBFu8s_BFu7s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu7s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7s_BFu0ll(Test_aBFu8s_BFu7s_BFu0ll, "aBFu8s_BFu7s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu7s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu7s_BFu0s");
    static aBFu8s_BFu7s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu7s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu7s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu7s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, 1, "aBFu8s_BFu7s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 7, hide_ull(1LL<<6), "aBFu8s_BFu7s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu7s_BFu0s(Test_aBFu8s_BFu7s_BFu0s, "aBFu8s_BFu7s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8c_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu8c_BFu0c");
    static aBFu8s_BFu8c_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8c_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8c_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8c_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8c_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8c_BFu0c(Test_aBFu8s_BFu8c_BFu0c, "aBFu8s_BFu8c_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8c_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu8c_BFu0i");
    static aBFu8s_BFu8c_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu8c_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8c_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8c_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8c_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8c_BFu0i(Test_aBFu8s_BFu8c_BFu0i, "aBFu8s_BFu8c_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8c_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu8c_BFu0ll");
    static aBFu8s_BFu8c_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu8c_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8c_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8c_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8c_BFu0ll(Test_aBFu8s_BFu8c_BFu0ll, "aBFu8s_BFu8c_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8c_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu8c_BFu0s");
    static aBFu8s_BFu8c_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8c_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8c_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8c_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8c_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8c_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8c_BFu0s(Test_aBFu8s_BFu8c_BFu0s, "aBFu8s_BFu8c_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu8i_BFu0c");
    static aBFu8s_BFu8i_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8i_BFu0c(Test_aBFu8s_BFu8i_BFu0c, "aBFu8s_BFu8i_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu8i_BFu0i");
    static aBFu8s_BFu8i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu8i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8i_BFu0i(Test_aBFu8s_BFu8i_BFu0i, "aBFu8s_BFu8i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu8i_BFu0ll");
    static aBFu8s_BFu8i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu8i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8i_BFu0ll(Test_aBFu8s_BFu8i_BFu0ll, "aBFu8s_BFu8i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu8i_BFu0s");
    static aBFu8s_BFu8i_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8i_BFu0s(Test_aBFu8s_BFu8i_BFu0s, "aBFu8s_BFu8i_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu8ll_BFu0c");
    static aBFu8s_BFu8ll_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8ll_BFu0c(Test_aBFu8s_BFu8ll_BFu0c, "aBFu8s_BFu8ll_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu8ll_BFu0i");
    static aBFu8s_BFu8ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu8ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8ll_BFu0i(Test_aBFu8s_BFu8ll_BFu0i, "aBFu8s_BFu8ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu8ll_BFu0ll");
    static aBFu8s_BFu8ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu8ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8ll_BFu0ll(Test_aBFu8s_BFu8ll_BFu0ll, "aBFu8s_BFu8ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu8ll_BFu0s");
    static aBFu8s_BFu8ll_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8ll_BFu0s(Test_aBFu8s_BFu8ll_BFu0s, "aBFu8s_BFu8ll_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu8s_BFu0c");
    static aBFu8s_BFu8s_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8s_BFu0c(Test_aBFu8s_BFu8s_BFu0c, "aBFu8s_BFu8s_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu8s_BFu0i");
    static aBFu8s_BFu8s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu8s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8s_BFu0i(Test_aBFu8s_BFu8s_BFu0i, "aBFu8s_BFu8s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu8s_BFu0ll");
    static aBFu8s_BFu8s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu8s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8s_BFu0ll(Test_aBFu8s_BFu8s_BFu0ll, "aBFu8s_BFu8s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu8s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu8s_BFu0s");
    static aBFu8s_BFu8s_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_BFu8s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu8s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu8s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, 1, "aBFu8s_BFu8s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu8s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu8s_BFu0s(Test_aBFu8s_BFu8s_BFu0s, "aBFu8s_BFu8s_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9i_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu9i_BFu0c");
    static aBFu8s_BFu9i_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu9i_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9i_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9i_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9i_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9i_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9i_BFu0c(Test_aBFu8s_BFu9i_BFu0c, "aBFu8s_BFu9i_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9i_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu9i_BFu0i");
    static aBFu8s_BFu9i_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9i_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9i_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9i_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9i_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9i_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9i_BFu0i(Test_aBFu8s_BFu9i_BFu0i, "aBFu8s_BFu9i_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9i_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu9i_BFu0ll");
    static aBFu8s_BFu9i_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu9i_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9i_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9i_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9i_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9i_BFu0ll(Test_aBFu8s_BFu9i_BFu0ll, "aBFu8s_BFu9i_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9i_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu9i_BFu0s");
    static aBFu8s_BFu9i_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9i_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9i_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9i_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9i_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9i_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9i_BFu0s(Test_aBFu8s_BFu9i_BFu0s, "aBFu8s_BFu9i_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9ll_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu9ll_BFu0c");
    static aBFu8s_BFu9ll_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu9ll_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9ll_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9ll_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9ll_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9ll_BFu0c(Test_aBFu8s_BFu9ll_BFu0c, "aBFu8s_BFu9ll_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9ll_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu9ll_BFu0i");
    static aBFu8s_BFu9ll_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9ll_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9ll_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9ll_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9ll_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9ll_BFu0i(Test_aBFu8s_BFu9ll_BFu0i, "aBFu8s_BFu9ll_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9ll_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu9ll_BFu0ll");
    static aBFu8s_BFu9ll_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu9ll_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9ll_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9ll_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9ll_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9ll_BFu0ll(Test_aBFu8s_BFu9ll_BFu0ll, "aBFu8s_BFu9ll_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9ll_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu9ll_BFu0s");
    static aBFu8s_BFu9ll_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9ll_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9ll_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9ll_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9ll_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9ll_BFu0s(Test_aBFu8s_BFu9ll_BFu0s, "aBFu8s_BFu9ll_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9s_BFu0c()
{
  {
    init_simple_test("aBFu8s_BFu9s_BFu0c");
    static aBFu8s_BFu9s_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_BFu9s_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9s_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9s_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9s_BFu0c");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9s_BFu0c");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9s_BFu0c(Test_aBFu8s_BFu9s_BFu0c, "aBFu8s_BFu9s_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9s_BFu0i()
{
  {
    init_simple_test("aBFu8s_BFu9s_BFu0i");
    static aBFu8s_BFu9s_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9s_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9s_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9s_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9s_BFu0i");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9s_BFu0i");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9s_BFu0i(Test_aBFu8s_BFu9s_BFu0i, "aBFu8s_BFu9s_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9s_BFu0ll()
{
  {
    init_simple_test("aBFu8s_BFu9s_BFu0ll");
    static aBFu8s_BFu9s_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_BFu9s_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9s_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9s_BFu0ll");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9s_BFu0ll");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9s_BFu0ll(Test_aBFu8s_BFu9s_BFu0ll, "aBFu8s_BFu9s_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_BFu9s_BFu0s()
{
  {
    init_simple_test("aBFu8s_BFu9s_BFu0s");
    static aBFu8s_BFu9s_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_BFu9s_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_BFu9s_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_BFu9s_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, 1, "aBFu8s_BFu9s_BFu0s");
    set_bf_and_test(lv, v2, 1, 0, 9, hide_ull(1LL<<8), "aBFu8s_BFu9s_BFu0s");
  }
}
static Arrange_To_Call_Me vaBFu8s_BFu9s_BFu0s(Test_aBFu8s_BFu9s_BFu0s, "aBFu8s_BFu9s_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_C_BFu0c()
{
  {
    init_simple_test("aBFu8s_C_BFu0c");
    static aBFu8s_C_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_C_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_C_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_C_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_C_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_C_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_C_BFu0c(Test_aBFu8s_C_BFu0c, "aBFu8s_C_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_C_BFu0i()
{
  {
    init_simple_test("aBFu8s_C_BFu0i");
    static aBFu8s_C_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_C_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_C_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_C_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_C_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_C_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_C_BFu0i(Test_aBFu8s_C_BFu0i, "aBFu8s_C_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_C_BFu0ll()
{
  {
    init_simple_test("aBFu8s_C_BFu0ll");
    static aBFu8s_C_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_C_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_C_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_C_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_C_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_C_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_C_BFu0ll(Test_aBFu8s_C_BFu0ll, "aBFu8s_C_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_C_BFu0s()
{
  {
    init_simple_test("aBFu8s_C_BFu0s");
    static aBFu8s_C_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_C_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_C_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_C_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_C_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_C_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_C_BFu0s(Test_aBFu8s_C_BFu0s, "aBFu8s_C_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_D_BFu0c()
{
  {
    init_simple_test("aBFu8s_D_BFu0c");
    static aBFu8s_D_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8s_D_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_D_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_D_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_D_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_D_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_D_BFu0c(Test_aBFu8s_D_BFu0c, "aBFu8s_D_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_D_BFu0i()
{
  {
    init_simple_test("aBFu8s_D_BFu0i");
    static aBFu8s_D_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8s_D_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_D_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_D_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_D_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_D_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_D_BFu0i(Test_aBFu8s_D_BFu0i, "aBFu8s_D_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_D_BFu0ll()
{
  {
    init_simple_test("aBFu8s_D_BFu0ll");
    static aBFu8s_D_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8s_D_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_D_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_D_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_D_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_D_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_D_BFu0ll(Test_aBFu8s_D_BFu0ll, "aBFu8s_D_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_D_BFu0s()
{
  {
    init_simple_test("aBFu8s_D_BFu0s");
    static aBFu8s_D_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8s_D_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_D_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_D_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_D_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_D_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_D_BFu0s(Test_aBFu8s_D_BFu0s, "aBFu8s_D_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_F_BFu0c()
{
  {
    init_simple_test("aBFu8s_F_BFu0c");
    static aBFu8s_F_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_F_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_F_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_F_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_F_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_F_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_F_BFu0c(Test_aBFu8s_F_BFu0c, "aBFu8s_F_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_F_BFu0i()
{
  {
    init_simple_test("aBFu8s_F_BFu0i");
    static aBFu8s_F_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_F_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_F_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_F_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_F_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_F_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_F_BFu0i(Test_aBFu8s_F_BFu0i, "aBFu8s_F_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_F_BFu0ll()
{
  {
    init_simple_test("aBFu8s_F_BFu0ll");
    static aBFu8s_F_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_F_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_F_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_F_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_F_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_F_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_F_BFu0ll(Test_aBFu8s_F_BFu0ll, "aBFu8s_F_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_F_BFu0s()
{
  {
    init_simple_test("aBFu8s_F_BFu0s");
    static aBFu8s_F_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_F_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_F_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_F_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_F_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_F_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_F_BFu0s(Test_aBFu8s_F_BFu0s, "aBFu8s_F_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_I_BFu0c()
{
  {
    init_simple_test("aBFu8s_I_BFu0c");
    static aBFu8s_I_BFu0c lv;
    check2(sizeof(lv), 5, "sizeof(aBFu8s_I_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_I_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_I_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_I_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_I_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_I_BFu0c(Test_aBFu8s_I_BFu0c, "aBFu8s_I_BFu0c", 5);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_I_BFu0i()
{
  {
    init_simple_test("aBFu8s_I_BFu0i");
    static aBFu8s_I_BFu0i lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_I_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_I_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_I_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_I_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_I_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_I_BFu0i(Test_aBFu8s_I_BFu0i, "aBFu8s_I_BFu0i", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_I_BFu0ll()
{
  {
    init_simple_test("aBFu8s_I_BFu0ll");
    static aBFu8s_I_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,8), "sizeof(aBFu8s_I_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_I_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_I_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_I_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_I_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_I_BFu0ll(Test_aBFu8s_I_BFu0ll, "aBFu8s_I_BFu0ll", ABISELECT(8,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_I_BFu0s()
{
  {
    init_simple_test("aBFu8s_I_BFu0s");
    static aBFu8s_I_BFu0s lv;
    check2(sizeof(lv), ABISELECT(6,6), "sizeof(aBFu8s_I_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_I_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_I_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_I_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_I_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_I_BFu0s(Test_aBFu8s_I_BFu0s, "aBFu8s_I_BFu0s", ABISELECT(6,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Ip_BFu0c()
{
  {
    init_simple_test("aBFu8s_Ip_BFu0c");
    static aBFu8s_Ip_BFu0c lv;
    check2(sizeof(lv), ABISELECT(9,5), "sizeof(aBFu8s_Ip_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ip_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ip_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ip_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_Ip_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ip_BFu0c(Test_aBFu8s_Ip_BFu0c, "aBFu8s_Ip_BFu0c", ABISELECT(9,5));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Ip_BFu0i()
{
  {
    init_simple_test("aBFu8s_Ip_BFu0i");
    static aBFu8s_Ip_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,8), "sizeof(aBFu8s_Ip_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ip_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ip_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ip_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_Ip_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ip_BFu0i(Test_aBFu8s_Ip_BFu0i, "aBFu8s_Ip_BFu0i", ABISELECT(12,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Ip_BFu0ll()
{
  {
    init_simple_test("aBFu8s_Ip_BFu0ll");
    static aBFu8s_Ip_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,8), "sizeof(aBFu8s_Ip_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ip_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ip_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ip_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_Ip_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ip_BFu0ll(Test_aBFu8s_Ip_BFu0ll, "aBFu8s_Ip_BFu0ll", ABISELECT(16,8));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Ip_BFu0s()
{
  {
    init_simple_test("aBFu8s_Ip_BFu0s");
    static aBFu8s_Ip_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,6), "sizeof(aBFu8s_Ip_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Ip_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Ip_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Ip_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_Ip_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Ip_BFu0s(Test_aBFu8s_Ip_BFu0s, "aBFu8s_Ip_BFu0s", ABISELECT(10,6));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_L_BFu0c()
{
  {
    init_simple_test("aBFu8s_L_BFu0c");
    static aBFu8s_L_BFu0c lv;
    check2(sizeof(lv), 9, "sizeof(aBFu8s_L_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_L_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_L_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_L_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_L_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_L_BFu0c(Test_aBFu8s_L_BFu0c, "aBFu8s_L_BFu0c", 9);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_L_BFu0i()
{
  {
    init_simple_test("aBFu8s_L_BFu0i");
    static aBFu8s_L_BFu0i lv;
    check2(sizeof(lv), ABISELECT(12,12), "sizeof(aBFu8s_L_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_L_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_L_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_L_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_L_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_L_BFu0i(Test_aBFu8s_L_BFu0i, "aBFu8s_L_BFu0i", ABISELECT(12,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_L_BFu0ll()
{
  {
    init_simple_test("aBFu8s_L_BFu0ll");
    static aBFu8s_L_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(16,12), "sizeof(aBFu8s_L_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_L_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_L_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_L_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_L_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_L_BFu0ll(Test_aBFu8s_L_BFu0ll, "aBFu8s_L_BFu0ll", ABISELECT(16,12));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_L_BFu0s()
{
  {
    init_simple_test("aBFu8s_L_BFu0s");
    static aBFu8s_L_BFu0s lv;
    check2(sizeof(lv), ABISELECT(10,10), "sizeof(aBFu8s_L_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_L_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_L_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_L_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_L_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_L_BFu0s(Test_aBFu8s_L_BFu0s, "aBFu8s_L_BFu0s", ABISELECT(10,10));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_S_BFu0c()
{
  {
    init_simple_test("aBFu8s_S_BFu0c");
    static aBFu8s_S_BFu0c lv;
    check2(sizeof(lv), 3, "sizeof(aBFu8s_S_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_S_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_S_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_S_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_S_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_S_BFu0c(Test_aBFu8s_S_BFu0c, "aBFu8s_S_BFu0c", 3);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_S_BFu0i()
{
  {
    init_simple_test("aBFu8s_S_BFu0i");
    static aBFu8s_S_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_S_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_S_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_S_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_S_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_S_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_S_BFu0i(Test_aBFu8s_S_BFu0i, "aBFu8s_S_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_S_BFu0ll()
{
  {
    init_simple_test("aBFu8s_S_BFu0ll");
    static aBFu8s_S_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_S_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_S_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_S_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_S_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_S_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_S_BFu0ll(Test_aBFu8s_S_BFu0ll, "aBFu8s_S_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_S_BFu0s()
{
  {
    init_simple_test("aBFu8s_S_BFu0s");
    static aBFu8s_S_BFu0s lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_S_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_S_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_S_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_S_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_S_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_S_BFu0s(Test_aBFu8s_S_BFu0s, "aBFu8s_S_BFu0s", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Uc_BFu0c()
{
  {
    init_simple_test("aBFu8s_Uc_BFu0c");
    static aBFu8s_Uc_BFu0c lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_Uc_BFu0c)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Uc_BFu0c)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Uc_BFu0c");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Uc_BFu0c");
    check_field_offset(lv, v2, 1, "aBFu8s_Uc_BFu0c.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Uc_BFu0c(Test_aBFu8s_Uc_BFu0c, "aBFu8s_Uc_BFu0c", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Uc_BFu0i()
{
  {
    init_simple_test("aBFu8s_Uc_BFu0i");
    static aBFu8s_Uc_BFu0i lv;
    check2(sizeof(lv), ABISELECT(4,4), "sizeof(aBFu8s_Uc_BFu0i)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Uc_BFu0i)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Uc_BFu0i");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Uc_BFu0i");
    check_field_offset(lv, v2, 1, "aBFu8s_Uc_BFu0i.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Uc_BFu0i(Test_aBFu8s_Uc_BFu0i, "aBFu8s_Uc_BFu0i", ABISELECT(4,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Uc_BFu0ll()
{
  {
    init_simple_test("aBFu8s_Uc_BFu0ll");
    static aBFu8s_Uc_BFu0ll lv;
    check2(sizeof(lv), ABISELECT(8,4), "sizeof(aBFu8s_Uc_BFu0ll)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Uc_BFu0ll)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Uc_BFu0ll");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Uc_BFu0ll");
    check_field_offset(lv, v2, 1, "aBFu8s_Uc_BFu0ll.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Uc_BFu0ll(Test_aBFu8s_Uc_BFu0ll, "aBFu8s_Uc_BFu0ll", ABISELECT(8,4));

#else // __cplusplus

#endif // __cplusplus

//============================================================================

#ifdef __cplusplus


static void Test_aBFu8s_Uc_BFu0s()
{
  {
    init_simple_test("aBFu8s_Uc_BFu0s");
    static aBFu8s_Uc_BFu0s lv;
    check2(sizeof(lv), 2, "sizeof(aBFu8s_Uc_BFu0s)");
    check2(__alignof__(lv), 1, "__alignof__(aBFu8s_Uc_BFu0s)");
    set_bf_and_test(lv, v1, 0, 0, 8, 1, "aBFu8s_Uc_BFu0s");
    set_bf_and_test(lv, v1, 0, 0, 8, hide_ull(1LL<<7), "aBFu8s_Uc_BFu0s");
    check_field_offset(lv, v2, 1, "aBFu8s_Uc_BFu0s.v2");
  }
}
static Arrange_To_Call_Me vaBFu8s_Uc_BFu0s(Test_aBFu8s_Uc_BFu0s, "aBFu8s_Uc_BFu0s", 2);

#else // __cplusplus

#endif // __cplusplus

//============================================================================

