// this code is generated by python3 src/gen_bint_header.py switch
#if MCL_BINT_ASM == 1
extern "C" {
Unit mclb_add1(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub1(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF1(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF1(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add2(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub2(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF2(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF2(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add3(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub3(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF3(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF3(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add4(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub4(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF4(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF4(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add5(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub5(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF5(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF5(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add6(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub6(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF6(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF6(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add7(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub7(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF7(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF7(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add8(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub8(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF8(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF8(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add9(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub9(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF9(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF9(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add10(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub10(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF10(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF10(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add11(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub11(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF11(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF11(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add12(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub12(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF12(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF12(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add13(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub13(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF13(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF13(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add14(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub14(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF14(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF14(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add15(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub15(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF15(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF15(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add16(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub16(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF16(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF16(Unit *z, const Unit *x, const Unit *y);
#if MCL_SIZEOF_UNIT == 4
Unit mclb_add17(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub17(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF17(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF17(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add18(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub18(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF18(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF18(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add19(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub19(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF19(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF19(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add20(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub20(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF20(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF20(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add21(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub21(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF21(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF21(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add22(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub22(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF22(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF22(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add23(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub23(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF23(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF23(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add24(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub24(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF24(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF24(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add25(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub25(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF25(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF25(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add26(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub26(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF26(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF26(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add27(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub27(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF27(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF27(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add28(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub28(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF28(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF28(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add29(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub29(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF29(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF29(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add30(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub30(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF30(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF30(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add31(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub31(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF31(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF31(Unit *z, const Unit *x, const Unit *y);
Unit mclb_add32(Unit *z, const Unit *x, const Unit *y);
Unit mclb_sub32(Unit *z, const Unit *x, const Unit *y);
void mclb_addNF32(Unit *z, const Unit *x, const Unit *y);
Unit mclb_subNF32(Unit *z, const Unit *x, const Unit *y);
#endif // #if MCL_SIZEOF_UNIT == 4
#if MCL_BINT_ASM_X64 != 1
Unit mclb_mulUnit1(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd1(Unit *z, const Unit *x, Unit y);
void mclb_mul1(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr1(Unit *y, const Unit *x);
Unit mclb_mulUnit2(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd2(Unit *z, const Unit *x, Unit y);
void mclb_mul2(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr2(Unit *y, const Unit *x);
Unit mclb_mulUnit3(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd3(Unit *z, const Unit *x, Unit y);
void mclb_mul3(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr3(Unit *y, const Unit *x);
Unit mclb_mulUnit4(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd4(Unit *z, const Unit *x, Unit y);
void mclb_mul4(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr4(Unit *y, const Unit *x);
Unit mclb_mulUnit5(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd5(Unit *z, const Unit *x, Unit y);
void mclb_mul5(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr5(Unit *y, const Unit *x);
Unit mclb_mulUnit6(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd6(Unit *z, const Unit *x, Unit y);
void mclb_mul6(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr6(Unit *y, const Unit *x);
Unit mclb_mulUnit7(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd7(Unit *z, const Unit *x, Unit y);
void mclb_mul7(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr7(Unit *y, const Unit *x);
Unit mclb_mulUnit8(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd8(Unit *z, const Unit *x, Unit y);
void mclb_mul8(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr8(Unit *y, const Unit *x);
Unit mclb_mulUnit9(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd9(Unit *z, const Unit *x, Unit y);
void mclb_mul9(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr9(Unit *y, const Unit *x);
#if MCL_SIZEOF_UNIT == 4
Unit mclb_mulUnit10(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd10(Unit *z, const Unit *x, Unit y);
void mclb_mul10(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr10(Unit *y, const Unit *x);
Unit mclb_mulUnit11(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd11(Unit *z, const Unit *x, Unit y);
void mclb_mul11(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr11(Unit *y, const Unit *x);
Unit mclb_mulUnit12(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd12(Unit *z, const Unit *x, Unit y);
void mclb_mul12(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr12(Unit *y, const Unit *x);
Unit mclb_mulUnit13(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd13(Unit *z, const Unit *x, Unit y);
void mclb_mul13(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr13(Unit *y, const Unit *x);
Unit mclb_mulUnit14(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd14(Unit *z, const Unit *x, Unit y);
void mclb_mul14(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr14(Unit *y, const Unit *x);
Unit mclb_mulUnit15(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd15(Unit *z, const Unit *x, Unit y);
void mclb_mul15(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr15(Unit *y, const Unit *x);
Unit mclb_mulUnit16(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd16(Unit *z, const Unit *x, Unit y);
void mclb_mul16(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr16(Unit *y, const Unit *x);
Unit mclb_mulUnit17(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd17(Unit *z, const Unit *x, Unit y);
void mclb_mul17(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr17(Unit *y, const Unit *x);
#endif // #if MCL_SIZEOF_UNIT == 4
#endif
}
#endif // #if MCL_BINT_ASM == 1
#if MCL_BINT_ASM_X64 == 1
extern "C" {
Unit mclb_mulUnit_slow1(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnit_fast1(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_slow1(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_fast1(Unit *z, const Unit *x, Unit y);
void mclb_mul_slow1(Unit *z, const Unit *x, const Unit *y);
void mclb_mul_fast1(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr_slow1(Unit *y, const Unit *x);
void mclb_sqr_fast1(Unit *y, const Unit *x);
Unit mclb_mulUnit_slow2(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnit_fast2(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_slow2(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_fast2(Unit *z, const Unit *x, Unit y);
void mclb_mul_slow2(Unit *z, const Unit *x, const Unit *y);
void mclb_mul_fast2(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr_slow2(Unit *y, const Unit *x);
void mclb_sqr_fast2(Unit *y, const Unit *x);
Unit mclb_mulUnit_slow3(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnit_fast3(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_slow3(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_fast3(Unit *z, const Unit *x, Unit y);
void mclb_mul_slow3(Unit *z, const Unit *x, const Unit *y);
void mclb_mul_fast3(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr_slow3(Unit *y, const Unit *x);
void mclb_sqr_fast3(Unit *y, const Unit *x);
Unit mclb_mulUnit_slow4(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnit_fast4(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_slow4(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_fast4(Unit *z, const Unit *x, Unit y);
void mclb_mul_slow4(Unit *z, const Unit *x, const Unit *y);
void mclb_mul_fast4(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr_slow4(Unit *y, const Unit *x);
void mclb_sqr_fast4(Unit *y, const Unit *x);
Unit mclb_mulUnit_slow5(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnit_fast5(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_slow5(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_fast5(Unit *z, const Unit *x, Unit y);
void mclb_mul_slow5(Unit *z, const Unit *x, const Unit *y);
void mclb_mul_fast5(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr_slow5(Unit *y, const Unit *x);
void mclb_sqr_fast5(Unit *y, const Unit *x);
Unit mclb_mulUnit_slow6(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnit_fast6(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_slow6(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_fast6(Unit *z, const Unit *x, Unit y);
void mclb_mul_slow6(Unit *z, const Unit *x, const Unit *y);
void mclb_mul_fast6(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr_slow6(Unit *y, const Unit *x);
void mclb_sqr_fast6(Unit *y, const Unit *x);
Unit mclb_mulUnit_slow7(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnit_fast7(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_slow7(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_fast7(Unit *z, const Unit *x, Unit y);
void mclb_mul_slow7(Unit *z, const Unit *x, const Unit *y);
void mclb_mul_fast7(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr_slow7(Unit *y, const Unit *x);
void mclb_sqr_fast7(Unit *y, const Unit *x);
Unit mclb_mulUnit_slow8(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnit_fast8(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_slow8(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_fast8(Unit *z, const Unit *x, Unit y);
void mclb_mul_slow8(Unit *z, const Unit *x, const Unit *y);
void mclb_mul_fast8(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr_slow8(Unit *y, const Unit *x);
void mclb_sqr_fast8(Unit *y, const Unit *x);
Unit mclb_mulUnit_slow9(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnit_fast9(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_slow9(Unit *z, const Unit *x, Unit y);
Unit mclb_mulUnitAdd_fast9(Unit *z, const Unit *x, Unit y);
void mclb_mul_slow9(Unit *z, const Unit *x, const Unit *y);
void mclb_mul_fast9(Unit *z, const Unit *x, const Unit *y);
void mclb_sqr_slow9(Unit *y, const Unit *x);
void mclb_sqr_fast9(Unit *y, const Unit *x);
}
#ifdef _WIN32
static const bool g_adx = g_cpuType & tAVX_BMI2_ADX;
const u_ppu mclb_mulUnit1 = g_adx ? mclb_mulUnit_fast1 : mclb_mulUnit_slow1;
const u_ppu mclb_mulUnitAdd1 = g_adx ? mclb_mulUnitAdd_fast1 : mclb_mulUnitAdd_slow1;
const void_ppp mclb_mul1 = g_adx ? mclb_mul_fast1 : mclb_mul_slow1;
const void_pp mclb_sqr1 = g_adx ? mclb_sqr_fast1 : mclb_sqr_slow1;
const u_ppu mclb_mulUnit2 = g_adx ? mclb_mulUnit_fast2 : mclb_mulUnit_slow2;
const u_ppu mclb_mulUnitAdd2 = g_adx ? mclb_mulUnitAdd_fast2 : mclb_mulUnitAdd_slow2;
const void_ppp mclb_mul2 = g_adx ? mclb_mul_fast2 : mclb_mul_slow2;
const void_pp mclb_sqr2 = g_adx ? mclb_sqr_fast2 : mclb_sqr_slow2;
const u_ppu mclb_mulUnit3 = g_adx ? mclb_mulUnit_fast3 : mclb_mulUnit_slow3;
const u_ppu mclb_mulUnitAdd3 = g_adx ? mclb_mulUnitAdd_fast3 : mclb_mulUnitAdd_slow3;
const void_ppp mclb_mul3 = g_adx ? mclb_mul_fast3 : mclb_mul_slow3;
const void_pp mclb_sqr3 = g_adx ? mclb_sqr_fast3 : mclb_sqr_slow3;
const u_ppu mclb_mulUnit4 = g_adx ? mclb_mulUnit_fast4 : mclb_mulUnit_slow4;
const u_ppu mclb_mulUnitAdd4 = g_adx ? mclb_mulUnitAdd_fast4 : mclb_mulUnitAdd_slow4;
const void_ppp mclb_mul4 = g_adx ? mclb_mul_fast4 : mclb_mul_slow4;
const void_pp mclb_sqr4 = g_adx ? mclb_sqr_fast4 : mclb_sqr_slow4;
const u_ppu mclb_mulUnit5 = g_adx ? mclb_mulUnit_fast5 : mclb_mulUnit_slow5;
const u_ppu mclb_mulUnitAdd5 = g_adx ? mclb_mulUnitAdd_fast5 : mclb_mulUnitAdd_slow5;
const void_ppp mclb_mul5 = g_adx ? mclb_mul_fast5 : mclb_mul_slow5;
const void_pp mclb_sqr5 = g_adx ? mclb_sqr_fast5 : mclb_sqr_slow5;
const u_ppu mclb_mulUnit6 = g_adx ? mclb_mulUnit_fast6 : mclb_mulUnit_slow6;
const u_ppu mclb_mulUnitAdd6 = g_adx ? mclb_mulUnitAdd_fast6 : mclb_mulUnitAdd_slow6;
const void_ppp mclb_mul6 = g_adx ? mclb_mul_fast6 : mclb_mul_slow6;
const void_pp mclb_sqr6 = g_adx ? mclb_sqr_fast6 : mclb_sqr_slow6;
const u_ppu mclb_mulUnit7 = g_adx ? mclb_mulUnit_fast7 : mclb_mulUnit_slow7;
const u_ppu mclb_mulUnitAdd7 = g_adx ? mclb_mulUnitAdd_fast7 : mclb_mulUnitAdd_slow7;
const void_ppp mclb_mul7 = g_adx ? mclb_mul_fast7 : mclb_mul_slow7;
const void_pp mclb_sqr7 = g_adx ? mclb_sqr_fast7 : mclb_sqr_slow7;
const u_ppu mclb_mulUnit8 = g_adx ? mclb_mulUnit_fast8 : mclb_mulUnit_slow8;
const u_ppu mclb_mulUnitAdd8 = g_adx ? mclb_mulUnitAdd_fast8 : mclb_mulUnitAdd_slow8;
const void_ppp mclb_mul8 = g_adx ? mclb_mul_fast8 : mclb_mul_slow8;
const void_pp mclb_sqr8 = g_adx ? mclb_sqr_fast8 : mclb_sqr_slow8;
const u_ppu mclb_mulUnit9 = g_adx ? mclb_mulUnit_fast9 : mclb_mulUnit_slow9;
const u_ppu mclb_mulUnitAdd9 = g_adx ? mclb_mulUnitAdd_fast9 : mclb_mulUnitAdd_slow9;
const void_ppp mclb_mul9 = g_adx ? mclb_mul_fast9 : mclb_mul_slow9;
const void_pp mclb_sqr9 = g_adx ? mclb_sqr_fast9 : mclb_sqr_slow9;
extern "C" void mclb_enable_fast() {
}
#else
u_ppu mclb_mulUnit1 = mclb_mulUnit_slow1;
u_ppu mclb_mulUnitAdd1 = mclb_mulUnitAdd_slow1;
void_ppp mclb_mul1 = mclb_mul_slow1;
void_pp mclb_sqr1 = mclb_sqr_slow1;
u_ppu mclb_mulUnit2 = mclb_mulUnit_slow2;
u_ppu mclb_mulUnitAdd2 = mclb_mulUnitAdd_slow2;
void_ppp mclb_mul2 = mclb_mul_slow2;
void_pp mclb_sqr2 = mclb_sqr_slow2;
u_ppu mclb_mulUnit3 = mclb_mulUnit_slow3;
u_ppu mclb_mulUnitAdd3 = mclb_mulUnitAdd_slow3;
void_ppp mclb_mul3 = mclb_mul_slow3;
void_pp mclb_sqr3 = mclb_sqr_slow3;
u_ppu mclb_mulUnit4 = mclb_mulUnit_slow4;
u_ppu mclb_mulUnitAdd4 = mclb_mulUnitAdd_slow4;
void_ppp mclb_mul4 = mclb_mul_slow4;
void_pp mclb_sqr4 = mclb_sqr_slow4;
u_ppu mclb_mulUnit5 = mclb_mulUnit_slow5;
u_ppu mclb_mulUnitAdd5 = mclb_mulUnitAdd_slow5;
void_ppp mclb_mul5 = mclb_mul_slow5;
void_pp mclb_sqr5 = mclb_sqr_slow5;
u_ppu mclb_mulUnit6 = mclb_mulUnit_slow6;
u_ppu mclb_mulUnitAdd6 = mclb_mulUnitAdd_slow6;
void_ppp mclb_mul6 = mclb_mul_slow6;
void_pp mclb_sqr6 = mclb_sqr_slow6;
u_ppu mclb_mulUnit7 = mclb_mulUnit_slow7;
u_ppu mclb_mulUnitAdd7 = mclb_mulUnitAdd_slow7;
void_ppp mclb_mul7 = mclb_mul_slow7;
void_pp mclb_sqr7 = mclb_sqr_slow7;
u_ppu mclb_mulUnit8 = mclb_mulUnit_slow8;
u_ppu mclb_mulUnitAdd8 = mclb_mulUnitAdd_slow8;
void_ppp mclb_mul8 = mclb_mul_slow8;
void_pp mclb_sqr8 = mclb_sqr_slow8;
u_ppu mclb_mulUnit9 = mclb_mulUnit_slow9;
u_ppu mclb_mulUnitAdd9 = mclb_mulUnitAdd_slow9;
void_ppp mclb_mul9 = mclb_mul_slow9;
void_pp mclb_sqr9 = mclb_sqr_slow9;
extern "C" void mclb_enable_fast() {
	mclb_mulUnit1 = mclb_mulUnit_fast1;
	mclb_mulUnitAdd1 = mclb_mulUnitAdd_fast1;
	mclb_mul1 = mclb_mul_fast1;
	mclb_sqr1 = mclb_sqr_fast1;
	mclb_mulUnit2 = mclb_mulUnit_fast2;
	mclb_mulUnitAdd2 = mclb_mulUnitAdd_fast2;
	mclb_mul2 = mclb_mul_fast2;
	mclb_sqr2 = mclb_sqr_fast2;
	mclb_mulUnit3 = mclb_mulUnit_fast3;
	mclb_mulUnitAdd3 = mclb_mulUnitAdd_fast3;
	mclb_mul3 = mclb_mul_fast3;
	mclb_sqr3 = mclb_sqr_fast3;
	mclb_mulUnit4 = mclb_mulUnit_fast4;
	mclb_mulUnitAdd4 = mclb_mulUnitAdd_fast4;
	mclb_mul4 = mclb_mul_fast4;
	mclb_sqr4 = mclb_sqr_fast4;
	mclb_mulUnit5 = mclb_mulUnit_fast5;
	mclb_mulUnitAdd5 = mclb_mulUnitAdd_fast5;
	mclb_mul5 = mclb_mul_fast5;
	mclb_sqr5 = mclb_sqr_fast5;
	mclb_mulUnit6 = mclb_mulUnit_fast6;
	mclb_mulUnitAdd6 = mclb_mulUnitAdd_fast6;
	mclb_mul6 = mclb_mul_fast6;
	mclb_sqr6 = mclb_sqr_fast6;
	mclb_mulUnit7 = mclb_mulUnit_fast7;
	mclb_mulUnitAdd7 = mclb_mulUnitAdd_fast7;
	mclb_mul7 = mclb_mul_fast7;
	mclb_sqr7 = mclb_sqr_fast7;
	mclb_mulUnit8 = mclb_mulUnit_fast8;
	mclb_mulUnitAdd8 = mclb_mulUnitAdd_fast8;
	mclb_mul8 = mclb_mul_fast8;
	mclb_sqr8 = mclb_sqr_fast8;
	mclb_mulUnit9 = mclb_mulUnit_fast9;
	mclb_mulUnitAdd9 = mclb_mulUnitAdd_fast9;
	mclb_mul9 = mclb_mul_fast9;
	mclb_sqr9 = mclb_sqr_fast9;
}
#endif
#endif // MCL_BINT_ASM_X64 == 1
#if MCL_BINT_ASM_X64 == 1
extern "C" void mclb_mul_slow1(Unit *z, const Unit *x, const Unit *y)
{
	z[1] = mulUnitT<1>(z, x, y[0]);
	u_ppu f = get_mulUnitAdd(1);
	for (size_t i = 1; i < 1; i++) {
		z[1 + i] = f(&z[i], x, y[i]);
	}
}
extern "C" void mclb_mul_slow2(Unit *z, const Unit *x, const Unit *y)
{
	z[2] = mulUnitT<2>(z, x, y[0]);
	u_ppu f = get_mulUnitAdd(2);
	for (size_t i = 1; i < 2; i++) {
		z[2 + i] = f(&z[i], x, y[i]);
	}
}
extern "C" void mclb_mul_slow3(Unit *z, const Unit *x, const Unit *y)
{
	z[3] = mulUnitT<3>(z, x, y[0]);
	u_ppu f = get_mulUnitAdd(3);
	for (size_t i = 1; i < 3; i++) {
		z[3 + i] = f(&z[i], x, y[i]);
	}
}
extern "C" void mclb_mul_slow4(Unit *z, const Unit *x, const Unit *y)
{
	z[4] = mulUnitT<4>(z, x, y[0]);
	u_ppu f = get_mulUnitAdd(4);
	for (size_t i = 1; i < 4; i++) {
		z[4 + i] = f(&z[i], x, y[i]);
	}
}
extern "C" void mclb_mul_slow5(Unit *z, const Unit *x, const Unit *y)
{
	z[5] = mulUnitT<5>(z, x, y[0]);
	u_ppu f = get_mulUnitAdd(5);
	for (size_t i = 1; i < 5; i++) {
		z[5 + i] = f(&z[i], x, y[i]);
	}
}
extern "C" void mclb_mul_slow6(Unit *z, const Unit *x, const Unit *y)
{
	z[6] = mulUnitT<6>(z, x, y[0]);
	u_ppu f = get_mulUnitAdd(6);
	for (size_t i = 1; i < 6; i++) {
		z[6 + i] = f(&z[i], x, y[i]);
	}
}
extern "C" void mclb_mul_slow7(Unit *z, const Unit *x, const Unit *y)
{
	z[7] = mulUnitT<7>(z, x, y[0]);
	u_ppu f = get_mulUnitAdd(7);
	for (size_t i = 1; i < 7; i++) {
		z[7 + i] = f(&z[i], x, y[i]);
	}
}
extern "C" void mclb_mul_slow8(Unit *z, const Unit *x, const Unit *y)
{
	z[8] = mulUnitT<8>(z, x, y[0]);
	u_ppu f = get_mulUnitAdd(8);
	for (size_t i = 1; i < 8; i++) {
		z[8 + i] = f(&z[i], x, y[i]);
	}
}
extern "C" void mclb_mul_slow9(Unit *z, const Unit *x, const Unit *y)
{
	z[9] = mulUnitT<9>(z, x, y[0]);
	u_ppu f = get_mulUnitAdd(9);
	for (size_t i = 1; i < 9; i++) {
		z[9 + i] = f(&z[i], x, y[i]);
	}
}
#endif // MCL_BINT_ASM_X64 == 1
#if MCL_BINT_ASM_X64 == 1
extern "C" void mclb_sqr_slow1(Unit *y, const Unit *x)
{
	mclb_mul_slow1(y, x, x);
}
extern "C" void mclb_sqr_slow2(Unit *y, const Unit *x)
{
	mclb_mul_slow2(y, x, x);
}
extern "C" void mclb_sqr_slow3(Unit *y, const Unit *x)
{
	mclb_mul_slow3(y, x, x);
}
extern "C" void mclb_sqr_slow4(Unit *y, const Unit *x)
{
	mclb_mul_slow4(y, x, x);
}
extern "C" void mclb_sqr_slow5(Unit *y, const Unit *x)
{
	mclb_mul_slow5(y, x, x);
}
extern "C" void mclb_sqr_slow6(Unit *y, const Unit *x)
{
	mclb_mul_slow6(y, x, x);
}
extern "C" void mclb_sqr_slow7(Unit *y, const Unit *x)
{
	mclb_mul_slow7(y, x, x);
}
extern "C" void mclb_sqr_slow8(Unit *y, const Unit *x)
{
	mclb_mul_slow8(y, x, x);
}
extern "C" void mclb_sqr_slow9(Unit *y, const Unit *x)
{
	mclb_mul_slow9(y, x, x);
}
#endif // MCL_BINT_ASM_X64 == 1
u_ppp get_add(size_t n)
{
#if MCL_BINT_ASM == 1
	if (n == 1) return mclb_add1;
	if (n == 2) return mclb_add2;
	if (n == 3) return mclb_add3;
	if (n == 4) return mclb_add4;
	if (n == 5) return mclb_add5;
	if (n == 6) return mclb_add6;
	if (n == 7) return mclb_add7;
	if (n == 8) return mclb_add8;
	if (n == 9) return mclb_add9;
	if (n == 10) return mclb_add10;
	if (n == 11) return mclb_add11;
	if (n == 12) return mclb_add12;
	if (n == 13) return mclb_add13;
	if (n == 14) return mclb_add14;
	if (n == 15) return mclb_add15;
	if (n == 16) return mclb_add16;
#if MCL_SIZEOF_UNIT == 4
	if (n == 17) return mclb_add17;
	if (n == 18) return mclb_add18;
	if (n == 19) return mclb_add19;
	if (n == 20) return mclb_add20;
	if (n == 21) return mclb_add21;
	if (n == 22) return mclb_add22;
	if (n == 23) return mclb_add23;
	if (n == 24) return mclb_add24;
	if (n == 25) return mclb_add25;
	if (n == 26) return mclb_add26;
	if (n == 27) return mclb_add27;
	if (n == 28) return mclb_add28;
	if (n == 29) return mclb_add29;
	if (n == 30) return mclb_add30;
	if (n == 31) return mclb_add31;
#endif // MCL_SIZEOF_UNIT == 4
#else // MCL_FP_BITN_ASM == 1
	if (n == 1) return addT<1>;
	if (n == 2) return addT<2>;
	if (n == 3) return addT<3>;
	if (n == 4) return addT<4>;
	if (n == 5) return addT<5>;
	if (n == 6) return addT<6>;
	if (n == 7) return addT<7>;
	if (n == 8) return addT<8>;
	if (n == 9) return addT<9>;
	if (n == 10) return addT<10>;
	if (n == 11) return addT<11>;
	if (n == 12) return addT<12>;
	if (n == 13) return addT<13>;
	if (n == 14) return addT<14>;
	if (n == 15) return addT<15>;
	if (n == 16) return addT<16>;
#if MCL_SIZEOF_UNIT == 4
	if (n == 17) return addT<17>;
	if (n == 18) return addT<18>;
	if (n == 19) return addT<19>;
	if (n == 20) return addT<20>;
	if (n == 21) return addT<21>;
	if (n == 22) return addT<22>;
	if (n == 23) return addT<23>;
	if (n == 24) return addT<24>;
	if (n == 25) return addT<25>;
	if (n == 26) return addT<26>;
	if (n == 27) return addT<27>;
	if (n == 28) return addT<28>;
	if (n == 29) return addT<29>;
	if (n == 30) return addT<30>;
	if (n == 31) return addT<31>;
#endif // MCL_SIZEOF_UNIT == 4
#endif // MCL_BINT_ASM == 1
	// CYBOZU_ASSUME(false);
  return 0;
}
u_ppp get_sub(size_t n)
{
#if MCL_BINT_ASM == 1
	if (n == 1) return mclb_sub1;
	if (n == 2) return mclb_sub2;
	if (n == 3) return mclb_sub3;
	if (n == 4) return mclb_sub4;
	if (n == 5) return mclb_sub5;
	if (n == 6) return mclb_sub6;
	if (n == 7) return mclb_sub7;
	if (n == 8) return mclb_sub8;
	if (n == 9) return mclb_sub9;
	if (n == 10) return mclb_sub10;
	if (n == 11) return mclb_sub11;
	if (n == 12) return mclb_sub12;
	if (n == 13) return mclb_sub13;
	if (n == 14) return mclb_sub14;
	if (n == 15) return mclb_sub15;
	if (n == 16) return mclb_sub16;
#if MCL_SIZEOF_UNIT == 4
	if (n == 17) return mclb_sub17;
	if (n == 18) return mclb_sub18;
	if (n == 19) return mclb_sub19;
	if (n == 20) return mclb_sub20;
	if (n == 21) return mclb_sub21;
	if (n == 22) return mclb_sub22;
	if (n == 23) return mclb_sub23;
	if (n == 24) return mclb_sub24;
	if (n == 25) return mclb_sub25;
	if (n == 26) return mclb_sub26;
	if (n == 27) return mclb_sub27;
	if (n == 28) return mclb_sub28;
	if (n == 29) return mclb_sub29;
	if (n == 30) return mclb_sub30;
	if (n == 31) return mclb_sub31;
#endif // MCL_SIZEOF_UNIT == 4
#else // MCL_FP_BITN_ASM == 1
	if (n == 1) return subT<1>;
	if (n == 2) return subT<2>;
	if (n == 3) return subT<3>;
	if (n == 4) return subT<4>;
	if (n == 5) return subT<5>;
	if (n == 6) return subT<6>;
	if (n == 7) return subT<7>;
	if (n == 8) return subT<8>;
	if (n == 9) return subT<9>;
	if (n == 10) return subT<10>;
	if (n == 11) return subT<11>;
	if (n == 12) return subT<12>;
	if (n == 13) return subT<13>;
	if (n == 14) return subT<14>;
	if (n == 15) return subT<15>;
	if (n == 16) return subT<16>;
#if MCL_SIZEOF_UNIT == 4
	if (n == 17) return subT<17>;
	if (n == 18) return subT<18>;
	if (n == 19) return subT<19>;
	if (n == 20) return subT<20>;
	if (n == 21) return subT<21>;
	if (n == 22) return subT<22>;
	if (n == 23) return subT<23>;
	if (n == 24) return subT<24>;
	if (n == 25) return subT<25>;
	if (n == 26) return subT<26>;
	if (n == 27) return subT<27>;
	if (n == 28) return subT<28>;
	if (n == 29) return subT<29>;
	if (n == 30) return subT<30>;
	if (n == 31) return subT<31>;
#endif // MCL_SIZEOF_UNIT == 4
#endif // MCL_BINT_ASM == 1
	// CYBOZU_ASSUME(false);
  return 0;
}
void_ppp get_addNF(size_t n)
{
#if MCL_BINT_ASM == 1
	if (n == 1) return mclb_addNF1;
	if (n == 2) return mclb_addNF2;
	if (n == 3) return mclb_addNF3;
	if (n == 4) return mclb_addNF4;
	if (n == 5) return mclb_addNF5;
	if (n == 6) return mclb_addNF6;
	if (n == 7) return mclb_addNF7;
	if (n == 8) return mclb_addNF8;
	if (n == 9) return mclb_addNF9;
	if (n == 10) return mclb_addNF10;
	if (n == 11) return mclb_addNF11;
	if (n == 12) return mclb_addNF12;
	if (n == 13) return mclb_addNF13;
	if (n == 14) return mclb_addNF14;
	if (n == 15) return mclb_addNF15;
	if (n == 16) return mclb_addNF16;
#if MCL_SIZEOF_UNIT == 4
	if (n == 17) return mclb_addNF17;
	if (n == 18) return mclb_addNF18;
	if (n == 19) return mclb_addNF19;
	if (n == 20) return mclb_addNF20;
	if (n == 21) return mclb_addNF21;
	if (n == 22) return mclb_addNF22;
	if (n == 23) return mclb_addNF23;
	if (n == 24) return mclb_addNF24;
	if (n == 25) return mclb_addNF25;
	if (n == 26) return mclb_addNF26;
	if (n == 27) return mclb_addNF27;
	if (n == 28) return mclb_addNF28;
	if (n == 29) return mclb_addNF29;
	if (n == 30) return mclb_addNF30;
	if (n == 31) return mclb_addNF31;
#endif // MCL_SIZEOF_UNIT == 4
#else // MCL_FP_BITN_ASM == 1
	if (n == 1) return addNFT<1>;
	if (n == 2) return addNFT<2>;
	if (n == 3) return addNFT<3>;
	if (n == 4) return addNFT<4>;
	if (n == 5) return addNFT<5>;
	if (n == 6) return addNFT<6>;
	if (n == 7) return addNFT<7>;
	if (n == 8) return addNFT<8>;
	if (n == 9) return addNFT<9>;
	if (n == 10) return addNFT<10>;
	if (n == 11) return addNFT<11>;
	if (n == 12) return addNFT<12>;
	if (n == 13) return addNFT<13>;
	if (n == 14) return addNFT<14>;
	if (n == 15) return addNFT<15>;
	if (n == 16) return addNFT<16>;
#if MCL_SIZEOF_UNIT == 4
	if (n == 17) return addNFT<17>;
	if (n == 18) return addNFT<18>;
	if (n == 19) return addNFT<19>;
	if (n == 20) return addNFT<20>;
	if (n == 21) return addNFT<21>;
	if (n == 22) return addNFT<22>;
	if (n == 23) return addNFT<23>;
	if (n == 24) return addNFT<24>;
	if (n == 25) return addNFT<25>;
	if (n == 26) return addNFT<26>;
	if (n == 27) return addNFT<27>;
	if (n == 28) return addNFT<28>;
	if (n == 29) return addNFT<29>;
	if (n == 30) return addNFT<30>;
	if (n == 31) return addNFT<31>;
#endif // MCL_SIZEOF_UNIT == 4
#endif // MCL_BINT_ASM == 1
	// CYBOZU_ASSUME(false);
  return 0;
}
u_ppp get_subNF(size_t n)
{
#if MCL_BINT_ASM == 1
	if (n == 1) return mclb_subNF1;
	if (n == 2) return mclb_subNF2;
	if (n == 3) return mclb_subNF3;
	if (n == 4) return mclb_subNF4;
	if (n == 5) return mclb_subNF5;
	if (n == 6) return mclb_subNF6;
	if (n == 7) return mclb_subNF7;
	if (n == 8) return mclb_subNF8;
	if (n == 9) return mclb_subNF9;
	if (n == 10) return mclb_subNF10;
	if (n == 11) return mclb_subNF11;
	if (n == 12) return mclb_subNF12;
	if (n == 13) return mclb_subNF13;
	if (n == 14) return mclb_subNF14;
	if (n == 15) return mclb_subNF15;
	if (n == 16) return mclb_subNF16;
#if MCL_SIZEOF_UNIT == 4
	if (n == 17) return mclb_subNF17;
	if (n == 18) return mclb_subNF18;
	if (n == 19) return mclb_subNF19;
	if (n == 20) return mclb_subNF20;
	if (n == 21) return mclb_subNF21;
	if (n == 22) return mclb_subNF22;
	if (n == 23) return mclb_subNF23;
	if (n == 24) return mclb_subNF24;
	if (n == 25) return mclb_subNF25;
	if (n == 26) return mclb_subNF26;
	if (n == 27) return mclb_subNF27;
	if (n == 28) return mclb_subNF28;
	if (n == 29) return mclb_subNF29;
	if (n == 30) return mclb_subNF30;
	if (n == 31) return mclb_subNF31;
#endif // MCL_SIZEOF_UNIT == 4
#else // MCL_FP_BITN_ASM == 1
	if (n == 1) return subNFT<1>;
	if (n == 2) return subNFT<2>;
	if (n == 3) return subNFT<3>;
	if (n == 4) return subNFT<4>;
	if (n == 5) return subNFT<5>;
	if (n == 6) return subNFT<6>;
	if (n == 7) return subNFT<7>;
	if (n == 8) return subNFT<8>;
	if (n == 9) return subNFT<9>;
	if (n == 10) return subNFT<10>;
	if (n == 11) return subNFT<11>;
	if (n == 12) return subNFT<12>;
	if (n == 13) return subNFT<13>;
	if (n == 14) return subNFT<14>;
	if (n == 15) return subNFT<15>;
	if (n == 16) return subNFT<16>;
#if MCL_SIZEOF_UNIT == 4
	if (n == 17) return subNFT<17>;
	if (n == 18) return subNFT<18>;
	if (n == 19) return subNFT<19>;
	if (n == 20) return subNFT<20>;
	if (n == 21) return subNFT<21>;
	if (n == 22) return subNFT<22>;
	if (n == 23) return subNFT<23>;
	if (n == 24) return subNFT<24>;
	if (n == 25) return subNFT<25>;
	if (n == 26) return subNFT<26>;
	if (n == 27) return subNFT<27>;
	if (n == 28) return subNFT<28>;
	if (n == 29) return subNFT<29>;
	if (n == 30) return subNFT<30>;
	if (n == 31) return subNFT<31>;
#endif // MCL_SIZEOF_UNIT == 4
#endif // MCL_BINT_ASM == 1
	// CYBOZU_ASSUME(false);
  return 0;
}
u_ppu get_mulUnit(size_t n)
{
#if MCL_BINT_ASM == 1
	if (n == 1) return mclb_mulUnit1;
	if (n == 2) return mclb_mulUnit2;
	if (n == 3) return mclb_mulUnit3;
	if (n == 4) return mclb_mulUnit4;
	if (n == 5) return mclb_mulUnit5;
	if (n == 6) return mclb_mulUnit6;
	if (n == 7) return mclb_mulUnit7;
	if (n == 8) return mclb_mulUnit8;
	if (n == 9) return mclb_mulUnit9;
#if MCL_SIZEOF_UNIT == 4
	if (n == 10) return mclb_mulUnit10;
	if (n == 11) return mclb_mulUnit11;
	if (n == 12) return mclb_mulUnit12;
	if (n == 13) return mclb_mulUnit13;
	if (n == 14) return mclb_mulUnit14;
	if (n == 15) return mclb_mulUnit15;
	if (n == 16) return mclb_mulUnit16;
#endif // MCL_SIZEOF_UNIT == 4
#else // MCL_FP_BITN_ASM == 1
	if (n == 1) return mulUnitT<1>;
	if (n == 2) return mulUnitT<2>;
	if (n == 3) return mulUnitT<3>;
	if (n == 4) return mulUnitT<4>;
	if (n == 5) return mulUnitT<5>;
	if (n == 6) return mulUnitT<6>;
	if (n == 7) return mulUnitT<7>;
	if (n == 8) return mulUnitT<8>;
	if (n == 9) return mulUnitT<9>;
#if MCL_SIZEOF_UNIT == 4
	if (n == 10) return mulUnitT<10>;
	if (n == 11) return mulUnitT<11>;
	if (n == 12) return mulUnitT<12>;
	if (n == 13) return mulUnitT<13>;
	if (n == 14) return mulUnitT<14>;
	if (n == 15) return mulUnitT<15>;
	if (n == 16) return mulUnitT<16>;
#endif // MCL_SIZEOF_UNIT == 4
#endif // MCL_BINT_ASM == 1
	// CYBOZU_ASSUME(false);
  return 0;
}
u_ppu get_mulUnitAdd(size_t n)
{
#if MCL_BINT_ASM == 1
	if (n == 1) return mclb_mulUnitAdd1;
	if (n == 2) return mclb_mulUnitAdd2;
	if (n == 3) return mclb_mulUnitAdd3;
	if (n == 4) return mclb_mulUnitAdd4;
	if (n == 5) return mclb_mulUnitAdd5;
	if (n == 6) return mclb_mulUnitAdd6;
	if (n == 7) return mclb_mulUnitAdd7;
	if (n == 8) return mclb_mulUnitAdd8;
	if (n == 9) return mclb_mulUnitAdd9;
#if MCL_SIZEOF_UNIT == 4
	if (n == 10) return mclb_mulUnitAdd10;
	if (n == 11) return mclb_mulUnitAdd11;
	if (n == 12) return mclb_mulUnitAdd12;
	if (n == 13) return mclb_mulUnitAdd13;
	if (n == 14) return mclb_mulUnitAdd14;
	if (n == 15) return mclb_mulUnitAdd15;
	if (n == 16) return mclb_mulUnitAdd16;
#endif // MCL_SIZEOF_UNIT == 4
#else // MCL_FP_BITN_ASM == 1
	if (n == 1) return mulUnitAddT<1>;
	if (n == 2) return mulUnitAddT<2>;
	if (n == 3) return mulUnitAddT<3>;
	if (n == 4) return mulUnitAddT<4>;
	if (n == 5) return mulUnitAddT<5>;
	if (n == 6) return mulUnitAddT<6>;
	if (n == 7) return mulUnitAddT<7>;
	if (n == 8) return mulUnitAddT<8>;
	if (n == 9) return mulUnitAddT<9>;
#if MCL_SIZEOF_UNIT == 4
	if (n == 10) return mulUnitAddT<10>;
	if (n == 11) return mulUnitAddT<11>;
	if (n == 12) return mulUnitAddT<12>;
	if (n == 13) return mulUnitAddT<13>;
	if (n == 14) return mulUnitAddT<14>;
	if (n == 15) return mulUnitAddT<15>;
	if (n == 16) return mulUnitAddT<16>;
#endif // MCL_SIZEOF_UNIT == 4
#endif // MCL_BINT_ASM == 1
	// CYBOZU_ASSUME(false);
  return 0;
}
void_ppp get_mul(size_t n)
{
#if MCL_BINT_ASM == 1
	if (n == 1) return mclb_mul1;
	if (n == 2) return mclb_mul2;
	if (n == 3) return mclb_mul3;
	if (n == 4) return mclb_mul4;
	if (n == 5) return mclb_mul5;
	if (n == 6) return mclb_mul6;
	if (n == 7) return mclb_mul7;
	if (n == 8) return mclb_mul8;
	if (n == 9) return mclb_mul9;
#if MCL_SIZEOF_UNIT == 4
	if (n == 10) return mclb_mul10;
	if (n == 11) return mclb_mul11;
	if (n == 12) return mclb_mul12;
	if (n == 13) return mclb_mul13;
	if (n == 14) return mclb_mul14;
	if (n == 15) return mclb_mul15;
	if (n == 16) return mclb_mul16;
#endif // MCL_SIZEOF_UNIT == 4
#else // MCL_FP_BITN_ASM == 1
	if (n == 1) return mulT<1>;
	if (n == 2) return mulT<2>;
	if (n == 3) return mulT<3>;
	if (n == 4) return mulT<4>;
	if (n == 5) return mulT<5>;
	if (n == 6) return mulT<6>;
	if (n == 7) return mulT<7>;
	if (n == 8) return mulT<8>;
	if (n == 9) return mulT<9>;
#if MCL_SIZEOF_UNIT == 4
	if (n == 10) return mulT<10>;
	if (n == 11) return mulT<11>;
	if (n == 12) return mulT<12>;
	if (n == 13) return mulT<13>;
	if (n == 14) return mulT<14>;
	if (n == 15) return mulT<15>;
	if (n == 16) return mulT<16>;
#endif // MCL_SIZEOF_UNIT == 4
#endif // MCL_BINT_ASM == 1
	// CYBOZU_ASSUME(false);
  return 0;
}
void_pp get_sqr(size_t n)
{
#if MCL_BINT_ASM == 1
	if (n == 1) return mclb_sqr1;
	if (n == 2) return mclb_sqr2;
	if (n == 3) return mclb_sqr3;
	if (n == 4) return mclb_sqr4;
	if (n == 5) return mclb_sqr5;
	if (n == 6) return mclb_sqr6;
	if (n == 7) return mclb_sqr7;
	if (n == 8) return mclb_sqr8;
	if (n == 9) return mclb_sqr9;
#if MCL_SIZEOF_UNIT == 4
	if (n == 10) return mclb_sqr10;
	if (n == 11) return mclb_sqr11;
	if (n == 12) return mclb_sqr12;
	if (n == 13) return mclb_sqr13;
	if (n == 14) return mclb_sqr14;
	if (n == 15) return mclb_sqr15;
	if (n == 16) return mclb_sqr16;
#endif // MCL_SIZEOF_UNIT == 4
#else // MCL_FP_BITN_ASM == 1
	if (n == 1) return sqrT<1>;
	if (n == 2) return sqrT<2>;
	if (n == 3) return sqrT<3>;
	if (n == 4) return sqrT<4>;
	if (n == 5) return sqrT<5>;
	if (n == 6) return sqrT<6>;
	if (n == 7) return sqrT<7>;
	if (n == 8) return sqrT<8>;
	if (n == 9) return sqrT<9>;
#if MCL_SIZEOF_UNIT == 4
	if (n == 10) return sqrT<10>;
	if (n == 11) return sqrT<11>;
	if (n == 12) return sqrT<12>;
	if (n == 13) return sqrT<13>;
	if (n == 14) return sqrT<14>;
	if (n == 15) return sqrT<15>;
	if (n == 16) return sqrT<16>;
#endif // MCL_SIZEOF_UNIT == 4
#endif // MCL_BINT_ASM == 1
	// CYBOZU_ASSUME(false);
  return 0;
}
