aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-11-13 06:28:55 -0500
committerGravatar Jason Gross <jgross@mit.edu>2017-11-13 06:28:55 -0500
commitacd347fc11d3d1983d64cf2417676d91e0827725 (patch)
tree852bd7b571e778e3333786af85db3815081a728e
parent38d1aa8249eb58a33d22dbc34d390146773286b2 (diff)
Update display logs and c files
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/femul.c260
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/femulDisplay.log246
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e192m2e64m1_6limbs/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e194m33_7limbs/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e196m15_7limbs/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/feadd.c46
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/feaddDisplay.log29
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/fenz.c17
-rw-r--r--src/Specific/montgomery32_2e198m17_7limbs/fenzDisplay.log13
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/femul.c260
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/femulDisplay.log246
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e322m2e161m1_6limbs/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femul.c266
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femulDisplay.log252
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e384m317_6limbs/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femul.c260
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femulDisplay.log246
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feadd.c40
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femul.c260
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femulDisplay.log246
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenz.c15
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feopp.c34
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesub.c40
-rw-r--r--src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesubDisplay.log26
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e189m25_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/femul.c57
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas32_2e190m11_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/femul.c57
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas64_2e379m19_7limbs/freezeDisplay.log29
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/feadd.c24
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/femul.c57
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/femulDisplay.log40
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/fesquare.c50
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/fesquareDisplay.log40
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/fesub.c24
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/freeze.c39
-rw-r--r--src/Specific/solinas64_2e413m21_7limbs/freezeDisplay.log29
102 files changed, 5230 insertions, 0 deletions
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/femul.c b/src/Specific/montgomery32_2e192m2e64m1_6limbs/femul.c
new file mode 100644
index 000000000..319702b09
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/femul.c
@@ -0,0 +1,260 @@
+static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ { uint32_t x26; uint32_t x25 = _mulx_u32(x5, x15, &x26);
+ { uint32_t x29; uint32_t x28 = _mulx_u32(x5, x17, &x29);
+ { uint32_t x32; uint32_t x31 = _mulx_u32(x5, x19, &x32);
+ { uint32_t x35; uint32_t x34 = _mulx_u32(x5, x21, &x35);
+ { uint32_t x38; uint32_t x37 = _mulx_u32(x5, x23, &x38);
+ { uint32_t x41; uint32_t x40 = _mulx_u32(x5, x22, &x41);
+ { uint32_t x43; uint8_t x44 = _addcarryx_u32(0x0, x26, x28, &x43);
+ { uint32_t x46; uint8_t x47 = _addcarryx_u32(x44, x29, x31, &x46);
+ { uint32_t x49; uint8_t x50 = _addcarryx_u32(x47, x32, x34, &x49);
+ { uint32_t x52; uint8_t x53 = _addcarryx_u32(x50, x35, x37, &x52);
+ { uint32_t x55; uint8_t x56 = _addcarryx_u32(x53, x38, x40, &x55);
+ { uint32_t x58; uint8_t _ = _addcarryx_u32(0x0, x56, x41, &x58);
+ { uint32_t x62; uint32_t x61 = _mulx_u32(x25, 0xffffffff, &x62);
+ { uint32_t x65; uint32_t x64 = _mulx_u32(x25, 0xffffffff, &x65);
+ { uint32_t x68; uint32_t x67 = _mulx_u32(x25, 0xfffffffe, &x68);
+ { uint32_t x71; uint32_t x70 = _mulx_u32(x25, 0xffffffff, &x71);
+ { uint32_t x74; uint32_t x73 = _mulx_u32(x25, 0xffffffff, &x74);
+ { uint32_t x77; uint32_t x76 = _mulx_u32(x25, 0xffffffff, &x77);
+ { uint32_t x79; uint8_t x80 = _addcarryx_u32(0x0, x62, x64, &x79);
+ { uint32_t x82; uint8_t x83 = _addcarryx_u32(x80, x65, x67, &x82);
+ { uint32_t x85; uint8_t x86 = _addcarryx_u32(x83, x68, x70, &x85);
+ { uint32_t x88; uint8_t x89 = _addcarryx_u32(x86, x71, x73, &x88);
+ { uint32_t x91; uint8_t x92 = _addcarryx_u32(x89, x74, x76, &x91);
+ { uint32_t x94; uint8_t _ = _addcarryx_u32(0x0, x92, x77, &x94);
+ { uint32_t _; uint8_t x98 = _addcarryx_u32(0x0, x25, x61, &_);
+ { uint32_t x100; uint8_t x101 = _addcarryx_u32(x98, x43, x79, &x100);
+ { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x46, x82, &x103);
+ { uint32_t x106; uint8_t x107 = _addcarryx_u32(x104, x49, x85, &x106);
+ { uint32_t x109; uint8_t x110 = _addcarryx_u32(x107, x52, x88, &x109);
+ { uint32_t x112; uint8_t x113 = _addcarryx_u32(x110, x55, x91, &x112);
+ { uint32_t x115; uint8_t x116 = _addcarryx_u32(x113, x58, x94, &x115);
+ { uint32_t x119; uint32_t x118 = _mulx_u32(x7, x15, &x119);
+ { uint32_t x122; uint32_t x121 = _mulx_u32(x7, x17, &x122);
+ { uint32_t x125; uint32_t x124 = _mulx_u32(x7, x19, &x125);
+ { uint32_t x128; uint32_t x127 = _mulx_u32(x7, x21, &x128);
+ { uint32_t x131; uint32_t x130 = _mulx_u32(x7, x23, &x131);
+ { uint32_t x134; uint32_t x133 = _mulx_u32(x7, x22, &x134);
+ { uint32_t x136; uint8_t x137 = _addcarryx_u32(0x0, x119, x121, &x136);
+ { uint32_t x139; uint8_t x140 = _addcarryx_u32(x137, x122, x124, &x139);
+ { uint32_t x142; uint8_t x143 = _addcarryx_u32(x140, x125, x127, &x142);
+ { uint32_t x145; uint8_t x146 = _addcarryx_u32(x143, x128, x130, &x145);
+ { uint32_t x148; uint8_t x149 = _addcarryx_u32(x146, x131, x133, &x148);
+ { uint32_t x151; uint8_t _ = _addcarryx_u32(0x0, x149, x134, &x151);
+ { uint32_t x154; uint8_t x155 = _addcarryx_u32(0x0, x100, x118, &x154);
+ { uint32_t x157; uint8_t x158 = _addcarryx_u32(x155, x103, x136, &x157);
+ { uint32_t x160; uint8_t x161 = _addcarryx_u32(x158, x106, x139, &x160);
+ { uint32_t x163; uint8_t x164 = _addcarryx_u32(x161, x109, x142, &x163);
+ { uint32_t x166; uint8_t x167 = _addcarryx_u32(x164, x112, x145, &x166);
+ { uint32_t x169; uint8_t x170 = _addcarryx_u32(x167, x115, x148, &x169);
+ { uint32_t x172; uint8_t x173 = _addcarryx_u32(x170, x116, x151, &x172);
+ { uint32_t x176; uint32_t x175 = _mulx_u32(x154, 0xffffffff, &x176);
+ { uint32_t x179; uint32_t x178 = _mulx_u32(x154, 0xffffffff, &x179);
+ { uint32_t x182; uint32_t x181 = _mulx_u32(x154, 0xfffffffe, &x182);
+ { uint32_t x185; uint32_t x184 = _mulx_u32(x154, 0xffffffff, &x185);
+ { uint32_t x188; uint32_t x187 = _mulx_u32(x154, 0xffffffff, &x188);
+ { uint32_t x191; uint32_t x190 = _mulx_u32(x154, 0xffffffff, &x191);
+ { uint32_t x193; uint8_t x194 = _addcarryx_u32(0x0, x176, x178, &x193);
+ { uint32_t x196; uint8_t x197 = _addcarryx_u32(x194, x179, x181, &x196);
+ { uint32_t x199; uint8_t x200 = _addcarryx_u32(x197, x182, x184, &x199);
+ { uint32_t x202; uint8_t x203 = _addcarryx_u32(x200, x185, x187, &x202);
+ { uint32_t x205; uint8_t x206 = _addcarryx_u32(x203, x188, x190, &x205);
+ { uint32_t x208; uint8_t _ = _addcarryx_u32(0x0, x206, x191, &x208);
+ { uint32_t _; uint8_t x212 = _addcarryx_u32(0x0, x154, x175, &_);
+ { uint32_t x214; uint8_t x215 = _addcarryx_u32(x212, x157, x193, &x214);
+ { uint32_t x217; uint8_t x218 = _addcarryx_u32(x215, x160, x196, &x217);
+ { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x163, x199, &x220);
+ { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x166, x202, &x223);
+ { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x169, x205, &x226);
+ { uint32_t x229; uint8_t x230 = _addcarryx_u32(x227, x172, x208, &x229);
+ { uint8_t x231 = (x230 + x173);
+ { uint32_t x234; uint32_t x233 = _mulx_u32(x9, x15, &x234);
+ { uint32_t x237; uint32_t x236 = _mulx_u32(x9, x17, &x237);
+ { uint32_t x240; uint32_t x239 = _mulx_u32(x9, x19, &x240);
+ { uint32_t x243; uint32_t x242 = _mulx_u32(x9, x21, &x243);
+ { uint32_t x246; uint32_t x245 = _mulx_u32(x9, x23, &x246);
+ { uint32_t x249; uint32_t x248 = _mulx_u32(x9, x22, &x249);
+ { uint32_t x251; uint8_t x252 = _addcarryx_u32(0x0, x234, x236, &x251);
+ { uint32_t x254; uint8_t x255 = _addcarryx_u32(x252, x237, x239, &x254);
+ { uint32_t x257; uint8_t x258 = _addcarryx_u32(x255, x240, x242, &x257);
+ { uint32_t x260; uint8_t x261 = _addcarryx_u32(x258, x243, x245, &x260);
+ { uint32_t x263; uint8_t x264 = _addcarryx_u32(x261, x246, x248, &x263);
+ { uint32_t x266; uint8_t _ = _addcarryx_u32(0x0, x264, x249, &x266);
+ { uint32_t x269; uint8_t x270 = _addcarryx_u32(0x0, x214, x233, &x269);
+ { uint32_t x272; uint8_t x273 = _addcarryx_u32(x270, x217, x251, &x272);
+ { uint32_t x275; uint8_t x276 = _addcarryx_u32(x273, x220, x254, &x275);
+ { uint32_t x278; uint8_t x279 = _addcarryx_u32(x276, x223, x257, &x278);
+ { uint32_t x281; uint8_t x282 = _addcarryx_u32(x279, x226, x260, &x281);
+ { uint32_t x284; uint8_t x285 = _addcarryx_u32(x282, x229, x263, &x284);
+ { uint32_t x287; uint8_t x288 = _addcarryx_u32(x285, x231, x266, &x287);
+ { uint32_t x291; uint32_t x290 = _mulx_u32(x269, 0xffffffff, &x291);
+ { uint32_t x294; uint32_t x293 = _mulx_u32(x269, 0xffffffff, &x294);
+ { uint32_t x297; uint32_t x296 = _mulx_u32(x269, 0xfffffffe, &x297);
+ { uint32_t x300; uint32_t x299 = _mulx_u32(x269, 0xffffffff, &x300);
+ { uint32_t x303; uint32_t x302 = _mulx_u32(x269, 0xffffffff, &x303);
+ { uint32_t x306; uint32_t x305 = _mulx_u32(x269, 0xffffffff, &x306);
+ { uint32_t x308; uint8_t x309 = _addcarryx_u32(0x0, x291, x293, &x308);
+ { uint32_t x311; uint8_t x312 = _addcarryx_u32(x309, x294, x296, &x311);
+ { uint32_t x314; uint8_t x315 = _addcarryx_u32(x312, x297, x299, &x314);
+ { uint32_t x317; uint8_t x318 = _addcarryx_u32(x315, x300, x302, &x317);
+ { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x303, x305, &x320);
+ { uint32_t x323; uint8_t _ = _addcarryx_u32(0x0, x321, x306, &x323);
+ { uint32_t _; uint8_t x327 = _addcarryx_u32(0x0, x269, x290, &_);
+ { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x272, x308, &x329);
+ { uint32_t x332; uint8_t x333 = _addcarryx_u32(x330, x275, x311, &x332);
+ { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x278, x314, &x335);
+ { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x281, x317, &x338);
+ { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x284, x320, &x341);
+ { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x287, x323, &x344);
+ { uint8_t x346 = (x345 + x288);
+ { uint32_t x349; uint32_t x348 = _mulx_u32(x11, x15, &x349);
+ { uint32_t x352; uint32_t x351 = _mulx_u32(x11, x17, &x352);
+ { uint32_t x355; uint32_t x354 = _mulx_u32(x11, x19, &x355);
+ { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x21, &x358);
+ { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x23, &x361);
+ { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x22, &x364);
+ { uint32_t x366; uint8_t x367 = _addcarryx_u32(0x0, x349, x351, &x366);
+ { uint32_t x369; uint8_t x370 = _addcarryx_u32(x367, x352, x354, &x369);
+ { uint32_t x372; uint8_t x373 = _addcarryx_u32(x370, x355, x357, &x372);
+ { uint32_t x375; uint8_t x376 = _addcarryx_u32(x373, x358, x360, &x375);
+ { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
+ { uint32_t x381; uint8_t _ = _addcarryx_u32(0x0, x379, x364, &x381);
+ { uint32_t x384; uint8_t x385 = _addcarryx_u32(0x0, x329, x348, &x384);
+ { uint32_t x387; uint8_t x388 = _addcarryx_u32(x385, x332, x366, &x387);
+ { uint32_t x390; uint8_t x391 = _addcarryx_u32(x388, x335, x369, &x390);
+ { uint32_t x393; uint8_t x394 = _addcarryx_u32(x391, x338, x372, &x393);
+ { uint32_t x396; uint8_t x397 = _addcarryx_u32(x394, x341, x375, &x396);
+ { uint32_t x399; uint8_t x400 = _addcarryx_u32(x397, x344, x378, &x399);
+ { uint32_t x402; uint8_t x403 = _addcarryx_u32(x400, x346, x381, &x402);
+ { uint32_t x406; uint32_t x405 = _mulx_u32(x384, 0xffffffff, &x406);
+ { uint32_t x409; uint32_t x408 = _mulx_u32(x384, 0xffffffff, &x409);
+ { uint32_t x412; uint32_t x411 = _mulx_u32(x384, 0xfffffffe, &x412);
+ { uint32_t x415; uint32_t x414 = _mulx_u32(x384, 0xffffffff, &x415);
+ { uint32_t x418; uint32_t x417 = _mulx_u32(x384, 0xffffffff, &x418);
+ { uint32_t x421; uint32_t x420 = _mulx_u32(x384, 0xffffffff, &x421);
+ { uint32_t x423; uint8_t x424 = _addcarryx_u32(0x0, x406, x408, &x423);
+ { uint32_t x426; uint8_t x427 = _addcarryx_u32(x424, x409, x411, &x426);
+ { uint32_t x429; uint8_t x430 = _addcarryx_u32(x427, x412, x414, &x429);
+ { uint32_t x432; uint8_t x433 = _addcarryx_u32(x430, x415, x417, &x432);
+ { uint32_t x435; uint8_t x436 = _addcarryx_u32(x433, x418, x420, &x435);
+ { uint32_t x438; uint8_t _ = _addcarryx_u32(0x0, x436, x421, &x438);
+ { uint32_t _; uint8_t x442 = _addcarryx_u32(0x0, x384, x405, &_);
+ { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x387, x423, &x444);
+ { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x390, x426, &x447);
+ { uint32_t x450; uint8_t x451 = _addcarryx_u32(x448, x393, x429, &x450);
+ { uint32_t x453; uint8_t x454 = _addcarryx_u32(x451, x396, x432, &x453);
+ { uint32_t x456; uint8_t x457 = _addcarryx_u32(x454, x399, x435, &x456);
+ { uint32_t x459; uint8_t x460 = _addcarryx_u32(x457, x402, x438, &x459);
+ { uint8_t x461 = (x460 + x403);
+ { uint32_t x464; uint32_t x463 = _mulx_u32(x13, x15, &x464);
+ { uint32_t x467; uint32_t x466 = _mulx_u32(x13, x17, &x467);
+ { uint32_t x470; uint32_t x469 = _mulx_u32(x13, x19, &x470);
+ { uint32_t x473; uint32_t x472 = _mulx_u32(x13, x21, &x473);
+ { uint32_t x476; uint32_t x475 = _mulx_u32(x13, x23, &x476);
+ { uint32_t x479; uint32_t x478 = _mulx_u32(x13, x22, &x479);
+ { uint32_t x481; uint8_t x482 = _addcarryx_u32(0x0, x464, x466, &x481);
+ { uint32_t x484; uint8_t x485 = _addcarryx_u32(x482, x467, x469, &x484);
+ { uint32_t x487; uint8_t x488 = _addcarryx_u32(x485, x470, x472, &x487);
+ { uint32_t x490; uint8_t x491 = _addcarryx_u32(x488, x473, x475, &x490);
+ { uint32_t x493; uint8_t x494 = _addcarryx_u32(x491, x476, x478, &x493);
+ { uint32_t x496; uint8_t _ = _addcarryx_u32(0x0, x494, x479, &x496);
+ { uint32_t x499; uint8_t x500 = _addcarryx_u32(0x0, x444, x463, &x499);
+ { uint32_t x502; uint8_t x503 = _addcarryx_u32(x500, x447, x481, &x502);
+ { uint32_t x505; uint8_t x506 = _addcarryx_u32(x503, x450, x484, &x505);
+ { uint32_t x508; uint8_t x509 = _addcarryx_u32(x506, x453, x487, &x508);
+ { uint32_t x511; uint8_t x512 = _addcarryx_u32(x509, x456, x490, &x511);
+ { uint32_t x514; uint8_t x515 = _addcarryx_u32(x512, x459, x493, &x514);
+ { uint32_t x517; uint8_t x518 = _addcarryx_u32(x515, x461, x496, &x517);
+ { uint32_t x521; uint32_t x520 = _mulx_u32(x499, 0xffffffff, &x521);
+ { uint32_t x524; uint32_t x523 = _mulx_u32(x499, 0xffffffff, &x524);
+ { uint32_t x527; uint32_t x526 = _mulx_u32(x499, 0xfffffffe, &x527);
+ { uint32_t x530; uint32_t x529 = _mulx_u32(x499, 0xffffffff, &x530);
+ { uint32_t x533; uint32_t x532 = _mulx_u32(x499, 0xffffffff, &x533);
+ { uint32_t x536; uint32_t x535 = _mulx_u32(x499, 0xffffffff, &x536);
+ { uint32_t x538; uint8_t x539 = _addcarryx_u32(0x0, x521, x523, &x538);
+ { uint32_t x541; uint8_t x542 = _addcarryx_u32(x539, x524, x526, &x541);
+ { uint32_t x544; uint8_t x545 = _addcarryx_u32(x542, x527, x529, &x544);
+ { uint32_t x547; uint8_t x548 = _addcarryx_u32(x545, x530, x532, &x547);
+ { uint32_t x550; uint8_t x551 = _addcarryx_u32(x548, x533, x535, &x550);
+ { uint32_t x553; uint8_t _ = _addcarryx_u32(0x0, x551, x536, &x553);
+ { uint32_t _; uint8_t x557 = _addcarryx_u32(0x0, x499, x520, &_);
+ { uint32_t x559; uint8_t x560 = _addcarryx_u32(x557, x502, x538, &x559);
+ { uint32_t x562; uint8_t x563 = _addcarryx_u32(x560, x505, x541, &x562);
+ { uint32_t x565; uint8_t x566 = _addcarryx_u32(x563, x508, x544, &x565);
+ { uint32_t x568; uint8_t x569 = _addcarryx_u32(x566, x511, x547, &x568);
+ { uint32_t x571; uint8_t x572 = _addcarryx_u32(x569, x514, x550, &x571);
+ { uint32_t x574; uint8_t x575 = _addcarryx_u32(x572, x517, x553, &x574);
+ { uint8_t x576 = (x575 + x518);
+ { uint32_t x579; uint32_t x578 = _mulx_u32(x12, x15, &x579);
+ { uint32_t x582; uint32_t x581 = _mulx_u32(x12, x17, &x582);
+ { uint32_t x585; uint32_t x584 = _mulx_u32(x12, x19, &x585);
+ { uint32_t x588; uint32_t x587 = _mulx_u32(x12, x21, &x588);
+ { uint32_t x591; uint32_t x590 = _mulx_u32(x12, x23, &x591);
+ { uint32_t x594; uint32_t x593 = _mulx_u32(x12, x22, &x594);
+ { uint32_t x596; uint8_t x597 = _addcarryx_u32(0x0, x579, x581, &x596);
+ { uint32_t x599; uint8_t x600 = _addcarryx_u32(x597, x582, x584, &x599);
+ { uint32_t x602; uint8_t x603 = _addcarryx_u32(x600, x585, x587, &x602);
+ { uint32_t x605; uint8_t x606 = _addcarryx_u32(x603, x588, x590, &x605);
+ { uint32_t x608; uint8_t x609 = _addcarryx_u32(x606, x591, x593, &x608);
+ { uint32_t x611; uint8_t _ = _addcarryx_u32(0x0, x609, x594, &x611);
+ { uint32_t x614; uint8_t x615 = _addcarryx_u32(0x0, x559, x578, &x614);
+ { uint32_t x617; uint8_t x618 = _addcarryx_u32(x615, x562, x596, &x617);
+ { uint32_t x620; uint8_t x621 = _addcarryx_u32(x618, x565, x599, &x620);
+ { uint32_t x623; uint8_t x624 = _addcarryx_u32(x621, x568, x602, &x623);
+ { uint32_t x626; uint8_t x627 = _addcarryx_u32(x624, x571, x605, &x626);
+ { uint32_t x629; uint8_t x630 = _addcarryx_u32(x627, x574, x608, &x629);
+ { uint32_t x632; uint8_t x633 = _addcarryx_u32(x630, x576, x611, &x632);
+ { uint32_t x636; uint32_t x635 = _mulx_u32(x614, 0xffffffff, &x636);
+ { uint32_t x639; uint32_t x638 = _mulx_u32(x614, 0xffffffff, &x639);
+ { uint32_t x642; uint32_t x641 = _mulx_u32(x614, 0xfffffffe, &x642);
+ { uint32_t x645; uint32_t x644 = _mulx_u32(x614, 0xffffffff, &x645);
+ { uint32_t x648; uint32_t x647 = _mulx_u32(x614, 0xffffffff, &x648);
+ { uint32_t x651; uint32_t x650 = _mulx_u32(x614, 0xffffffff, &x651);
+ { uint32_t x653; uint8_t x654 = _addcarryx_u32(0x0, x636, x638, &x653);
+ { uint32_t x656; uint8_t x657 = _addcarryx_u32(x654, x639, x641, &x656);
+ { uint32_t x659; uint8_t x660 = _addcarryx_u32(x657, x642, x644, &x659);
+ { uint32_t x662; uint8_t x663 = _addcarryx_u32(x660, x645, x647, &x662);
+ { uint32_t x665; uint8_t x666 = _addcarryx_u32(x663, x648, x650, &x665);
+ { uint32_t x668; uint8_t _ = _addcarryx_u32(0x0, x666, x651, &x668);
+ { uint32_t _; uint8_t x672 = _addcarryx_u32(0x0, x614, x635, &_);
+ { uint32_t x674; uint8_t x675 = _addcarryx_u32(x672, x617, x653, &x674);
+ { uint32_t x677; uint8_t x678 = _addcarryx_u32(x675, x620, x656, &x677);
+ { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x623, x659, &x680);
+ { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x626, x662, &x683);
+ { uint32_t x686; uint8_t x687 = _addcarryx_u32(x684, x629, x665, &x686);
+ { uint32_t x689; uint8_t x690 = _addcarryx_u32(x687, x632, x668, &x689);
+ { uint8_t x691 = (x690 + x633);
+ { uint32_t x693; uint8_t x694 = _subborrow_u32(0x0, x674, 0xffffffff, &x693);
+ { uint32_t x696; uint8_t x697 = _subborrow_u32(x694, x677, 0xffffffff, &x696);
+ { uint32_t x699; uint8_t x700 = _subborrow_u32(x697, x680, 0xfffffffe, &x699);
+ { uint32_t x702; uint8_t x703 = _subborrow_u32(x700, x683, 0xffffffff, &x702);
+ { uint32_t x705; uint8_t x706 = _subborrow_u32(x703, x686, 0xffffffff, &x705);
+ { uint32_t x708; uint8_t x709 = _subborrow_u32(x706, x689, 0xffffffff, &x708);
+ { uint32_t _; uint8_t x712 = _subborrow_u32(x709, x691, 0x0, &_);
+ { uint32_t x713 = cmovznz32(x712, x708, x689);
+ { uint32_t x714 = cmovznz32(x712, x705, x686);
+ { uint32_t x715 = cmovznz32(x712, x702, x683);
+ { uint32_t x716 = cmovznz32(x712, x699, x680);
+ { uint32_t x717 = cmovznz32(x712, x696, x677);
+ { uint32_t x718 = cmovznz32(x712, x693, x674);
+ out[0] = x718;
+ out[1] = x717;
+ out[2] = x716;
+ out[3] = x715;
+ out[4] = x714;
+ out[5] = x713;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/femulDisplay.log b/src/Specific/montgomery32_2e192m2e64m1_6limbs/femulDisplay.log
new file mode 100644
index 000000000..8af983b0d
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/femulDisplay.log
@@ -0,0 +1,246 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint32_t x25, uint32_t x26 = mulx_u32(x5, x15);
+ uint32_t x28, uint32_t x29 = mulx_u32(x5, x17);
+ uint32_t x31, uint32_t x32 = mulx_u32(x5, x19);
+ uint32_t x34, uint32_t x35 = mulx_u32(x5, x21);
+ uint32_t x37, uint32_t x38 = mulx_u32(x5, x23);
+ uint32_t x40, uint32_t x41 = mulx_u32(x5, x22);
+ uint32_t x43, uint8_t x44 = addcarryx_u32(0x0, x26, x28);
+ uint32_t x46, uint8_t x47 = addcarryx_u32(x44, x29, x31);
+ uint32_t x49, uint8_t x50 = addcarryx_u32(x47, x32, x34);
+ uint32_t x52, uint8_t x53 = addcarryx_u32(x50, x35, x37);
+ uint32_t x55, uint8_t x56 = addcarryx_u32(x53, x38, x40);
+ uint32_t x58, uint8_t _ = addcarryx_u32(0x0, x56, x41);
+ uint32_t x61, uint32_t x62 = mulx_u32(x25, 0xffffffff);
+ uint32_t x64, uint32_t x65 = mulx_u32(x25, 0xffffffff);
+ uint32_t x67, uint32_t x68 = mulx_u32(x25, 0xfffffffe);
+ uint32_t x70, uint32_t x71 = mulx_u32(x25, 0xffffffff);
+ uint32_t x73, uint32_t x74 = mulx_u32(x25, 0xffffffff);
+ uint32_t x76, uint32_t x77 = mulx_u32(x25, 0xffffffff);
+ uint32_t x79, uint8_t x80 = addcarryx_u32(0x0, x62, x64);
+ uint32_t x82, uint8_t x83 = addcarryx_u32(x80, x65, x67);
+ uint32_t x85, uint8_t x86 = addcarryx_u32(x83, x68, x70);
+ uint32_t x88, uint8_t x89 = addcarryx_u32(x86, x71, x73);
+ uint32_t x91, uint8_t x92 = addcarryx_u32(x89, x74, x76);
+ uint32_t x94, uint8_t _ = addcarryx_u32(0x0, x92, x77);
+ uint32_t _, uint8_t x98 = addcarryx_u32(0x0, x25, x61);
+ uint32_t x100, uint8_t x101 = addcarryx_u32(x98, x43, x79);
+ uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x46, x82);
+ uint32_t x106, uint8_t x107 = addcarryx_u32(x104, x49, x85);
+ uint32_t x109, uint8_t x110 = addcarryx_u32(x107, x52, x88);
+ uint32_t x112, uint8_t x113 = addcarryx_u32(x110, x55, x91);
+ uint32_t x115, uint8_t x116 = addcarryx_u32(x113, x58, x94);
+ uint32_t x118, uint32_t x119 = mulx_u32(x7, x15);
+ uint32_t x121, uint32_t x122 = mulx_u32(x7, x17);
+ uint32_t x124, uint32_t x125 = mulx_u32(x7, x19);
+ uint32_t x127, uint32_t x128 = mulx_u32(x7, x21);
+ uint32_t x130, uint32_t x131 = mulx_u32(x7, x23);
+ uint32_t x133, uint32_t x134 = mulx_u32(x7, x22);
+ uint32_t x136, uint8_t x137 = addcarryx_u32(0x0, x119, x121);
+ uint32_t x139, uint8_t x140 = addcarryx_u32(x137, x122, x124);
+ uint32_t x142, uint8_t x143 = addcarryx_u32(x140, x125, x127);
+ uint32_t x145, uint8_t x146 = addcarryx_u32(x143, x128, x130);
+ uint32_t x148, uint8_t x149 = addcarryx_u32(x146, x131, x133);
+ uint32_t x151, uint8_t _ = addcarryx_u32(0x0, x149, x134);
+ uint32_t x154, uint8_t x155 = addcarryx_u32(0x0, x100, x118);
+ uint32_t x157, uint8_t x158 = addcarryx_u32(x155, x103, x136);
+ uint32_t x160, uint8_t x161 = addcarryx_u32(x158, x106, x139);
+ uint32_t x163, uint8_t x164 = addcarryx_u32(x161, x109, x142);
+ uint32_t x166, uint8_t x167 = addcarryx_u32(x164, x112, x145);
+ uint32_t x169, uint8_t x170 = addcarryx_u32(x167, x115, x148);
+ uint32_t x172, uint8_t x173 = addcarryx_u32(x170, x116, x151);
+ uint32_t x175, uint32_t x176 = mulx_u32(x154, 0xffffffff);
+ uint32_t x178, uint32_t x179 = mulx_u32(x154, 0xffffffff);
+ uint32_t x181, uint32_t x182 = mulx_u32(x154, 0xfffffffe);
+ uint32_t x184, uint32_t x185 = mulx_u32(x154, 0xffffffff);
+ uint32_t x187, uint32_t x188 = mulx_u32(x154, 0xffffffff);
+ uint32_t x190, uint32_t x191 = mulx_u32(x154, 0xffffffff);
+ uint32_t x193, uint8_t x194 = addcarryx_u32(0x0, x176, x178);
+ uint32_t x196, uint8_t x197 = addcarryx_u32(x194, x179, x181);
+ uint32_t x199, uint8_t x200 = addcarryx_u32(x197, x182, x184);
+ uint32_t x202, uint8_t x203 = addcarryx_u32(x200, x185, x187);
+ uint32_t x205, uint8_t x206 = addcarryx_u32(x203, x188, x190);
+ uint32_t x208, uint8_t _ = addcarryx_u32(0x0, x206, x191);
+ uint32_t _, uint8_t x212 = addcarryx_u32(0x0, x154, x175);
+ uint32_t x214, uint8_t x215 = addcarryx_u32(x212, x157, x193);
+ uint32_t x217, uint8_t x218 = addcarryx_u32(x215, x160, x196);
+ uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x163, x199);
+ uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x166, x202);
+ uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x169, x205);
+ uint32_t x229, uint8_t x230 = addcarryx_u32(x227, x172, x208);
+ uint8_t x231 = (x230 + x173);
+ uint32_t x233, uint32_t x234 = mulx_u32(x9, x15);
+ uint32_t x236, uint32_t x237 = mulx_u32(x9, x17);
+ uint32_t x239, uint32_t x240 = mulx_u32(x9, x19);
+ uint32_t x242, uint32_t x243 = mulx_u32(x9, x21);
+ uint32_t x245, uint32_t x246 = mulx_u32(x9, x23);
+ uint32_t x248, uint32_t x249 = mulx_u32(x9, x22);
+ uint32_t x251, uint8_t x252 = addcarryx_u32(0x0, x234, x236);
+ uint32_t x254, uint8_t x255 = addcarryx_u32(x252, x237, x239);
+ uint32_t x257, uint8_t x258 = addcarryx_u32(x255, x240, x242);
+ uint32_t x260, uint8_t x261 = addcarryx_u32(x258, x243, x245);
+ uint32_t x263, uint8_t x264 = addcarryx_u32(x261, x246, x248);
+ uint32_t x266, uint8_t _ = addcarryx_u32(0x0, x264, x249);
+ uint32_t x269, uint8_t x270 = addcarryx_u32(0x0, x214, x233);
+ uint32_t x272, uint8_t x273 = addcarryx_u32(x270, x217, x251);
+ uint32_t x275, uint8_t x276 = addcarryx_u32(x273, x220, x254);
+ uint32_t x278, uint8_t x279 = addcarryx_u32(x276, x223, x257);
+ uint32_t x281, uint8_t x282 = addcarryx_u32(x279, x226, x260);
+ uint32_t x284, uint8_t x285 = addcarryx_u32(x282, x229, x263);
+ uint32_t x287, uint8_t x288 = addcarryx_u32(x285, x231, x266);
+ uint32_t x290, uint32_t x291 = mulx_u32(x269, 0xffffffff);
+ uint32_t x293, uint32_t x294 = mulx_u32(x269, 0xffffffff);
+ uint32_t x296, uint32_t x297 = mulx_u32(x269, 0xfffffffe);
+ uint32_t x299, uint32_t x300 = mulx_u32(x269, 0xffffffff);
+ uint32_t x302, uint32_t x303 = mulx_u32(x269, 0xffffffff);
+ uint32_t x305, uint32_t x306 = mulx_u32(x269, 0xffffffff);
+ uint32_t x308, uint8_t x309 = addcarryx_u32(0x0, x291, x293);
+ uint32_t x311, uint8_t x312 = addcarryx_u32(x309, x294, x296);
+ uint32_t x314, uint8_t x315 = addcarryx_u32(x312, x297, x299);
+ uint32_t x317, uint8_t x318 = addcarryx_u32(x315, x300, x302);
+ uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x303, x305);
+ uint32_t x323, uint8_t _ = addcarryx_u32(0x0, x321, x306);
+ uint32_t _, uint8_t x327 = addcarryx_u32(0x0, x269, x290);
+ uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x272, x308);
+ uint32_t x332, uint8_t x333 = addcarryx_u32(x330, x275, x311);
+ uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x278, x314);
+ uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x281, x317);
+ uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x284, x320);
+ uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x287, x323);
+ uint8_t x346 = (x345 + x288);
+ uint32_t x348, uint32_t x349 = mulx_u32(x11, x15);
+ uint32_t x351, uint32_t x352 = mulx_u32(x11, x17);
+ uint32_t x354, uint32_t x355 = mulx_u32(x11, x19);
+ uint32_t x357, uint32_t x358 = mulx_u32(x11, x21);
+ uint32_t x360, uint32_t x361 = mulx_u32(x11, x23);
+ uint32_t x363, uint32_t x364 = mulx_u32(x11, x22);
+ uint32_t x366, uint8_t x367 = addcarryx_u32(0x0, x349, x351);
+ uint32_t x369, uint8_t x370 = addcarryx_u32(x367, x352, x354);
+ uint32_t x372, uint8_t x373 = addcarryx_u32(x370, x355, x357);
+ uint32_t x375, uint8_t x376 = addcarryx_u32(x373, x358, x360);
+ uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
+ uint32_t x381, uint8_t _ = addcarryx_u32(0x0, x379, x364);
+ uint32_t x384, uint8_t x385 = addcarryx_u32(0x0, x329, x348);
+ uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x332, x366);
+ uint32_t x390, uint8_t x391 = addcarryx_u32(x388, x335, x369);
+ uint32_t x393, uint8_t x394 = addcarryx_u32(x391, x338, x372);
+ uint32_t x396, uint8_t x397 = addcarryx_u32(x394, x341, x375);
+ uint32_t x399, uint8_t x400 = addcarryx_u32(x397, x344, x378);
+ uint32_t x402, uint8_t x403 = addcarryx_u32(x400, x346, x381);
+ uint32_t x405, uint32_t x406 = mulx_u32(x384, 0xffffffff);
+ uint32_t x408, uint32_t x409 = mulx_u32(x384, 0xffffffff);
+ uint32_t x411, uint32_t x412 = mulx_u32(x384, 0xfffffffe);
+ uint32_t x414, uint32_t x415 = mulx_u32(x384, 0xffffffff);
+ uint32_t x417, uint32_t x418 = mulx_u32(x384, 0xffffffff);
+ uint32_t x420, uint32_t x421 = mulx_u32(x384, 0xffffffff);
+ uint32_t x423, uint8_t x424 = addcarryx_u32(0x0, x406, x408);
+ uint32_t x426, uint8_t x427 = addcarryx_u32(x424, x409, x411);
+ uint32_t x429, uint8_t x430 = addcarryx_u32(x427, x412, x414);
+ uint32_t x432, uint8_t x433 = addcarryx_u32(x430, x415, x417);
+ uint32_t x435, uint8_t x436 = addcarryx_u32(x433, x418, x420);
+ uint32_t x438, uint8_t _ = addcarryx_u32(0x0, x436, x421);
+ uint32_t _, uint8_t x442 = addcarryx_u32(0x0, x384, x405);
+ uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x387, x423);
+ uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x390, x426);
+ uint32_t x450, uint8_t x451 = addcarryx_u32(x448, x393, x429);
+ uint32_t x453, uint8_t x454 = addcarryx_u32(x451, x396, x432);
+ uint32_t x456, uint8_t x457 = addcarryx_u32(x454, x399, x435);
+ uint32_t x459, uint8_t x460 = addcarryx_u32(x457, x402, x438);
+ uint8_t x461 = (x460 + x403);
+ uint32_t x463, uint32_t x464 = mulx_u32(x13, x15);
+ uint32_t x466, uint32_t x467 = mulx_u32(x13, x17);
+ uint32_t x469, uint32_t x470 = mulx_u32(x13, x19);
+ uint32_t x472, uint32_t x473 = mulx_u32(x13, x21);
+ uint32_t x475, uint32_t x476 = mulx_u32(x13, x23);
+ uint32_t x478, uint32_t x479 = mulx_u32(x13, x22);
+ uint32_t x481, uint8_t x482 = addcarryx_u32(0x0, x464, x466);
+ uint32_t x484, uint8_t x485 = addcarryx_u32(x482, x467, x469);
+ uint32_t x487, uint8_t x488 = addcarryx_u32(x485, x470, x472);
+ uint32_t x490, uint8_t x491 = addcarryx_u32(x488, x473, x475);
+ uint32_t x493, uint8_t x494 = addcarryx_u32(x491, x476, x478);
+ uint32_t x496, uint8_t _ = addcarryx_u32(0x0, x494, x479);
+ uint32_t x499, uint8_t x500 = addcarryx_u32(0x0, x444, x463);
+ uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x447, x481);
+ uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x450, x484);
+ uint32_t x508, uint8_t x509 = addcarryx_u32(x506, x453, x487);
+ uint32_t x511, uint8_t x512 = addcarryx_u32(x509, x456, x490);
+ uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x459, x493);
+ uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x461, x496);
+ uint32_t x520, uint32_t x521 = mulx_u32(x499, 0xffffffff);
+ uint32_t x523, uint32_t x524 = mulx_u32(x499, 0xffffffff);
+ uint32_t x526, uint32_t x527 = mulx_u32(x499, 0xfffffffe);
+ uint32_t x529, uint32_t x530 = mulx_u32(x499, 0xffffffff);
+ uint32_t x532, uint32_t x533 = mulx_u32(x499, 0xffffffff);
+ uint32_t x535, uint32_t x536 = mulx_u32(x499, 0xffffffff);
+ uint32_t x538, uint8_t x539 = addcarryx_u32(0x0, x521, x523);
+ uint32_t x541, uint8_t x542 = addcarryx_u32(x539, x524, x526);
+ uint32_t x544, uint8_t x545 = addcarryx_u32(x542, x527, x529);
+ uint32_t x547, uint8_t x548 = addcarryx_u32(x545, x530, x532);
+ uint32_t x550, uint8_t x551 = addcarryx_u32(x548, x533, x535);
+ uint32_t x553, uint8_t _ = addcarryx_u32(0x0, x551, x536);
+ uint32_t _, uint8_t x557 = addcarryx_u32(0x0, x499, x520);
+ uint32_t x559, uint8_t x560 = addcarryx_u32(x557, x502, x538);
+ uint32_t x562, uint8_t x563 = addcarryx_u32(x560, x505, x541);
+ uint32_t x565, uint8_t x566 = addcarryx_u32(x563, x508, x544);
+ uint32_t x568, uint8_t x569 = addcarryx_u32(x566, x511, x547);
+ uint32_t x571, uint8_t x572 = addcarryx_u32(x569, x514, x550);
+ uint32_t x574, uint8_t x575 = addcarryx_u32(x572, x517, x553);
+ uint8_t x576 = (x575 + x518);
+ uint32_t x578, uint32_t x579 = mulx_u32(x12, x15);
+ uint32_t x581, uint32_t x582 = mulx_u32(x12, x17);
+ uint32_t x584, uint32_t x585 = mulx_u32(x12, x19);
+ uint32_t x587, uint32_t x588 = mulx_u32(x12, x21);
+ uint32_t x590, uint32_t x591 = mulx_u32(x12, x23);
+ uint32_t x593, uint32_t x594 = mulx_u32(x12, x22);
+ uint32_t x596, uint8_t x597 = addcarryx_u32(0x0, x579, x581);
+ uint32_t x599, uint8_t x600 = addcarryx_u32(x597, x582, x584);
+ uint32_t x602, uint8_t x603 = addcarryx_u32(x600, x585, x587);
+ uint32_t x605, uint8_t x606 = addcarryx_u32(x603, x588, x590);
+ uint32_t x608, uint8_t x609 = addcarryx_u32(x606, x591, x593);
+ uint32_t x611, uint8_t _ = addcarryx_u32(0x0, x609, x594);
+ uint32_t x614, uint8_t x615 = addcarryx_u32(0x0, x559, x578);
+ uint32_t x617, uint8_t x618 = addcarryx_u32(x615, x562, x596);
+ uint32_t x620, uint8_t x621 = addcarryx_u32(x618, x565, x599);
+ uint32_t x623, uint8_t x624 = addcarryx_u32(x621, x568, x602);
+ uint32_t x626, uint8_t x627 = addcarryx_u32(x624, x571, x605);
+ uint32_t x629, uint8_t x630 = addcarryx_u32(x627, x574, x608);
+ uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x576, x611);
+ uint32_t x635, uint32_t x636 = mulx_u32(x614, 0xffffffff);
+ uint32_t x638, uint32_t x639 = mulx_u32(x614, 0xffffffff);
+ uint32_t x641, uint32_t x642 = mulx_u32(x614, 0xfffffffe);
+ uint32_t x644, uint32_t x645 = mulx_u32(x614, 0xffffffff);
+ uint32_t x647, uint32_t x648 = mulx_u32(x614, 0xffffffff);
+ uint32_t x650, uint32_t x651 = mulx_u32(x614, 0xffffffff);
+ uint32_t x653, uint8_t x654 = addcarryx_u32(0x0, x636, x638);
+ uint32_t x656, uint8_t x657 = addcarryx_u32(x654, x639, x641);
+ uint32_t x659, uint8_t x660 = addcarryx_u32(x657, x642, x644);
+ uint32_t x662, uint8_t x663 = addcarryx_u32(x660, x645, x647);
+ uint32_t x665, uint8_t x666 = addcarryx_u32(x663, x648, x650);
+ uint32_t x668, uint8_t _ = addcarryx_u32(0x0, x666, x651);
+ uint32_t _, uint8_t x672 = addcarryx_u32(0x0, x614, x635);
+ uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x617, x653);
+ uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x620, x656);
+ uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x623, x659);
+ uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x626, x662);
+ uint32_t x686, uint8_t x687 = addcarryx_u32(x684, x629, x665);
+ uint32_t x689, uint8_t x690 = addcarryx_u32(x687, x632, x668);
+ uint8_t x691 = (x690 + x633);
+ uint32_t x693, uint8_t x694 = subborrow_u32(0x0, x674, 0xffffffff);
+ uint32_t x696, uint8_t x697 = subborrow_u32(x694, x677, 0xffffffff);
+ uint32_t x699, uint8_t x700 = subborrow_u32(x697, x680, 0xfffffffe);
+ uint32_t x702, uint8_t x703 = subborrow_u32(x700, x683, 0xffffffff);
+ uint32_t x705, uint8_t x706 = subborrow_u32(x703, x686, 0xffffffff);
+ uint32_t x708, uint8_t x709 = subborrow_u32(x706, x689, 0xffffffff);
+ uint32_t _, uint8_t x712 = subborrow_u32(x709, x691, 0x0);
+ uint32_t x713 = cmovznz32(x712, x708, x689);
+ uint32_t x714 = cmovznz32(x712, x705, x686);
+ uint32_t x715 = cmovznz32(x712, x702, x683);
+ uint32_t x716 = cmovznz32(x712, x699, x680);
+ uint32_t x717 = cmovznz32(x712, x696, x677);
+ uint32_t x718 = cmovznz32(x712, x693, x674);
+ return (x713, x714, x715, x716, x717, x718))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/feopp.c b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feopp.c
new file mode 100644
index 000000000..9e9f82dca
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feopp.c
@@ -0,0 +1,34 @@
+static void feopp(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x12; uint8_t x13 = _subborrow_u32(0x0, 0x0, x2, &x12);
+ { uint32_t x15; uint8_t x16 = _subborrow_u32(x13, 0x0, x4, &x15);
+ { uint32_t x18; uint8_t x19 = _subborrow_u32(x16, 0x0, x6, &x18);
+ { uint32_t x21; uint8_t x22 = _subborrow_u32(x19, 0x0, x8, &x21);
+ { uint32_t x24; uint8_t x25 = _subborrow_u32(x22, 0x0, x10, &x24);
+ { uint32_t x27; uint8_t x28 = _subborrow_u32(x25, 0x0, x9, &x27);
+ { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ { uint32_t x30 = (x29 & 0xffffffff);
+ { uint32_t x32; uint8_t x33 = _addcarryx_u32(0x0, x12, x30, &x32);
+ { uint32_t x34 = (x29 & 0xffffffff);
+ { uint32_t x36; uint8_t x37 = _addcarryx_u32(x33, x15, x34, &x36);
+ { uint32_t x38 = (x29 & 0xfffffffe);
+ { uint32_t x40; uint8_t x41 = _addcarryx_u32(x37, x18, x38, &x40);
+ { uint32_t x42 = (x29 & 0xffffffff);
+ { uint32_t x44; uint8_t x45 = _addcarryx_u32(x41, x21, x42, &x44);
+ { uint32_t x46 = (x29 & 0xffffffff);
+ { uint32_t x48; uint8_t x49 = _addcarryx_u32(x45, x24, x46, &x48);
+ { uint32_t x50 = (x29 & 0xffffffff);
+ { uint32_t x52; uint8_t _ = _addcarryx_u32(x49, x27, x50, &x52);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/feoppDisplay.log b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feoppDisplay.log
new file mode 100644
index 000000000..e937846f9
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/feoppDisplay.log
@@ -0,0 +1,26 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x12, uint8_t x13 = subborrow_u32(0x0, 0x0, x2);
+ uint32_t x15, uint8_t x16 = subborrow_u32(x13, 0x0, x4);
+ uint32_t x18, uint8_t x19 = subborrow_u32(x16, 0x0, x6);
+ uint32_t x21, uint8_t x22 = subborrow_u32(x19, 0x0, x8);
+ uint32_t x24, uint8_t x25 = subborrow_u32(x22, 0x0, x10);
+ uint32_t x27, uint8_t x28 = subborrow_u32(x25, 0x0, x9);
+ uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ uint32_t x30 = (x29 & 0xffffffff);
+ uint32_t x32, uint8_t x33 = addcarryx_u32(0x0, x12, x30);
+ uint32_t x34 = (x29 & 0xffffffff);
+ uint32_t x36, uint8_t x37 = addcarryx_u32(x33, x15, x34);
+ uint32_t x38 = (x29 & 0xfffffffe);
+ uint32_t x40, uint8_t x41 = addcarryx_u32(x37, x18, x38);
+ uint32_t x42 = (x29 & 0xffffffff);
+ uint32_t x44, uint8_t x45 = addcarryx_u32(x41, x21, x42);
+ uint32_t x46 = (x29 & 0xffffffff);
+ uint32_t x48, uint8_t x49 = addcarryx_u32(x45, x24, x46);
+ uint32_t x50 = (x29 & 0xffffffff);
+ uint32_t x52, uint8_t _ = addcarryx_u32(x49, x27, x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesub.c b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesub.c
new file mode 100644
index 000000000..5c0d60043
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesub.c
@@ -0,0 +1,40 @@
+static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ { uint32_t x25; uint8_t x26 = _subborrow_u32(0x0, x5, x15, &x25);
+ { uint32_t x28; uint8_t x29 = _subborrow_u32(x26, x7, x17, &x28);
+ { uint32_t x31; uint8_t x32 = _subborrow_u32(x29, x9, x19, &x31);
+ { uint32_t x34; uint8_t x35 = _subborrow_u32(x32, x11, x21, &x34);
+ { uint32_t x37; uint8_t x38 = _subborrow_u32(x35, x13, x23, &x37);
+ { uint32_t x40; uint8_t x41 = _subborrow_u32(x38, x12, x22, &x40);
+ { uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
+ { uint32_t x43 = (x42 & 0xffffffff);
+ { uint32_t x45; uint8_t x46 = _addcarryx_u32(0x0, x25, x43, &x45);
+ { uint32_t x47 = (x42 & 0xffffffff);
+ { uint32_t x49; uint8_t x50 = _addcarryx_u32(x46, x28, x47, &x49);
+ { uint32_t x51 = (x42 & 0xfffffffe);
+ { uint32_t x53; uint8_t x54 = _addcarryx_u32(x50, x31, x51, &x53);
+ { uint32_t x55 = (x42 & 0xffffffff);
+ { uint32_t x57; uint8_t x58 = _addcarryx_u32(x54, x34, x55, &x57);
+ { uint32_t x59 = (x42 & 0xffffffff);
+ { uint32_t x61; uint8_t x62 = _addcarryx_u32(x58, x37, x59, &x61);
+ { uint32_t x63 = (x42 & 0xffffffff);
+ { uint32_t x65; uint8_t _ = _addcarryx_u32(x62, x40, x63, &x65);
+ out[0] = x45;
+ out[1] = x49;
+ out[2] = x53;
+ out[3] = x57;
+ out[4] = x61;
+ out[5] = x65;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesubDisplay.log b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..ec794c27f
--- /dev/null
+++ b/src/Specific/montgomery32_2e192m2e64m1_6limbs/fesubDisplay.log
@@ -0,0 +1,26 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint32_t x25, uint8_t x26 = subborrow_u32(0x0, x5, x15);
+ uint32_t x28, uint8_t x29 = subborrow_u32(x26, x7, x17);
+ uint32_t x31, uint8_t x32 = subborrow_u32(x29, x9, x19);
+ uint32_t x34, uint8_t x35 = subborrow_u32(x32, x11, x21);
+ uint32_t x37, uint8_t x38 = subborrow_u32(x35, x13, x23);
+ uint32_t x40, uint8_t x41 = subborrow_u32(x38, x12, x22);
+ uint32_t x42 = cmovznz32(x41, 0x0, 0xffffffff);
+ uint32_t x43 = (x42 & 0xffffffff);
+ uint32_t x45, uint8_t x46 = addcarryx_u32(0x0, x25, x43);
+ uint32_t x47 = (x42 & 0xffffffff);
+ uint32_t x49, uint8_t x50 = addcarryx_u32(x46, x28, x47);
+ uint32_t x51 = (x42 & 0xfffffffe);
+ uint32_t x53, uint8_t x54 = addcarryx_u32(x50, x31, x51);
+ uint32_t x55 = (x42 & 0xffffffff);
+ uint32_t x57, uint8_t x58 = addcarryx_u32(x54, x34, x55);
+ uint32_t x59 = (x42 & 0xffffffff);
+ uint32_t x61, uint8_t x62 = addcarryx_u32(x58, x37, x59);
+ uint32_t x63 = (x42 & 0xffffffff);
+ uint32_t x65, uint8_t _ = addcarryx_u32(x62, x40, x63);
+ (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/feadd.c b/src/Specific/montgomery32_2e194m33_7limbs/feadd.c
new file mode 100644
index 000000000..ba45079f7
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/feadd.c
@@ -0,0 +1,46 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
+ { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
+ { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
+ { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
+ { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
+ { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
+ { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
+ { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xffffffdf, &x50);
+ { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
+ { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
+ { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
+ { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
+ { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
+ { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0x3, &x68);
+ { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
+ { uint32_t x73 = cmovznz32(x72, x68, x47);
+ { uint32_t x74 = cmovznz32(x72, x65, x44);
+ { uint32_t x75 = cmovznz32(x72, x62, x41);
+ { uint32_t x76 = cmovznz32(x72, x59, x38);
+ { uint32_t x77 = cmovznz32(x72, x56, x35);
+ { uint32_t x78 = cmovznz32(x72, x53, x32);
+ { uint32_t x79 = cmovznz32(x72, x50, x29);
+ out[0] = x79;
+ out[1] = x78;
+ out[2] = x77;
+ out[3] = x76;
+ out[4] = x75;
+ out[5] = x74;
+ out[6] = x73;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/feaddDisplay.log b/src/Specific/montgomery32_2e194m33_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..c217451c3
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/feaddDisplay.log
@@ -0,0 +1,29 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
+ uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
+ uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
+ uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
+ uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
+ uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
+ uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
+ uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xffffffdf);
+ uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
+ uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
+ uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
+ uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
+ uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
+ uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0x3);
+ uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
+ uint32_t x73 = cmovznz32(x72, x68, x47);
+ uint32_t x74 = cmovznz32(x72, x65, x44);
+ uint32_t x75 = cmovznz32(x72, x62, x41);
+ uint32_t x76 = cmovznz32(x72, x59, x38);
+ uint32_t x77 = cmovznz32(x72, x56, x35);
+ uint32_t x78 = cmovznz32(x72, x53, x32);
+ uint32_t x79 = cmovznz32(x72, x50, x29);
+ return (x73, x74, x75, x76, x77, x78, x79))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/fenz.c b/src/Specific/montgomery32_2e194m33_7limbs/fenz.c
new file mode 100644
index 000000000..387dcfe67
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/fenz.c
@@ -0,0 +1,17 @@
+static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x13 = (x12 | x11);
+ { uint32_t x14 = (x10 | x13);
+ { uint32_t x15 = (x8 | x14);
+ { uint32_t x16 = (x6 | x15);
+ { uint32_t x17 = (x4 | x16);
+ { uint32_t x18 = (x2 | x17);
+ out[0] = x18;
+ }}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e194m33_7limbs/fenzDisplay.log b/src/Specific/montgomery32_2e194m33_7limbs/fenzDisplay.log
new file mode 100644
index 000000000..9685f89d7
--- /dev/null
+++ b/src/Specific/montgomery32_2e194m33_7limbs/fenzDisplay.log
@@ -0,0 +1,13 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x13 = (x12 | x11);
+ uint32_t x14 = (x10 | x13);
+ uint32_t x15 = (x8 | x14);
+ uint32_t x16 = (x6 | x15);
+ uint32_t x17 = (x4 | x16);
+ uint32_t x18 = (x2 | x17);
+ return x18)
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/feadd.c b/src/Specific/montgomery32_2e196m15_7limbs/feadd.c
new file mode 100644
index 000000000..3fe2c20c9
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/feadd.c
@@ -0,0 +1,46 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
+ { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
+ { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
+ { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
+ { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
+ { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
+ { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
+ { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xfffffff1, &x50);
+ { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
+ { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
+ { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
+ { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
+ { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
+ { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0xf, &x68);
+ { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
+ { uint32_t x73 = cmovznz32(x72, x68, x47);
+ { uint32_t x74 = cmovznz32(x72, x65, x44);
+ { uint32_t x75 = cmovznz32(x72, x62, x41);
+ { uint32_t x76 = cmovznz32(x72, x59, x38);
+ { uint32_t x77 = cmovznz32(x72, x56, x35);
+ { uint32_t x78 = cmovznz32(x72, x53, x32);
+ { uint32_t x79 = cmovznz32(x72, x50, x29);
+ out[0] = x79;
+ out[1] = x78;
+ out[2] = x77;
+ out[3] = x76;
+ out[4] = x75;
+ out[5] = x74;
+ out[6] = x73;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/feaddDisplay.log b/src/Specific/montgomery32_2e196m15_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..9398047fb
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/feaddDisplay.log
@@ -0,0 +1,29 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
+ uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
+ uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
+ uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
+ uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
+ uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
+ uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
+ uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xfffffff1);
+ uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
+ uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
+ uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
+ uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
+ uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
+ uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0xf);
+ uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
+ uint32_t x73 = cmovznz32(x72, x68, x47);
+ uint32_t x74 = cmovznz32(x72, x65, x44);
+ uint32_t x75 = cmovznz32(x72, x62, x41);
+ uint32_t x76 = cmovznz32(x72, x59, x38);
+ uint32_t x77 = cmovznz32(x72, x56, x35);
+ uint32_t x78 = cmovznz32(x72, x53, x32);
+ uint32_t x79 = cmovznz32(x72, x50, x29);
+ return (x73, x74, x75, x76, x77, x78, x79))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/fenz.c b/src/Specific/montgomery32_2e196m15_7limbs/fenz.c
new file mode 100644
index 000000000..387dcfe67
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/fenz.c
@@ -0,0 +1,17 @@
+static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x13 = (x12 | x11);
+ { uint32_t x14 = (x10 | x13);
+ { uint32_t x15 = (x8 | x14);
+ { uint32_t x16 = (x6 | x15);
+ { uint32_t x17 = (x4 | x16);
+ { uint32_t x18 = (x2 | x17);
+ out[0] = x18;
+ }}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e196m15_7limbs/fenzDisplay.log b/src/Specific/montgomery32_2e196m15_7limbs/fenzDisplay.log
new file mode 100644
index 000000000..9685f89d7
--- /dev/null
+++ b/src/Specific/montgomery32_2e196m15_7limbs/fenzDisplay.log
@@ -0,0 +1,13 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x13 = (x12 | x11);
+ uint32_t x14 = (x10 | x13);
+ uint32_t x15 = (x8 | x14);
+ uint32_t x16 = (x6 | x15);
+ uint32_t x17 = (x4 | x16);
+ uint32_t x18 = (x2 | x17);
+ return x18)
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/feadd.c b/src/Specific/montgomery32_2e198m17_7limbs/feadd.c
new file mode 100644
index 000000000..89081d51b
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/feadd.c
@@ -0,0 +1,46 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint32_t x29; uint8_t x30 = _addcarryx_u32(0x0, x5, x17, &x29);
+ { uint32_t x32; uint8_t x33 = _addcarryx_u32(x30, x7, x19, &x32);
+ { uint32_t x35; uint8_t x36 = _addcarryx_u32(x33, x9, x21, &x35);
+ { uint32_t x38; uint8_t x39 = _addcarryx_u32(x36, x11, x23, &x38);
+ { uint32_t x41; uint8_t x42 = _addcarryx_u32(x39, x13, x25, &x41);
+ { uint32_t x44; uint8_t x45 = _addcarryx_u32(x42, x15, x27, &x44);
+ { uint32_t x47; uint8_t x48 = _addcarryx_u32(x45, x14, x26, &x47);
+ { uint32_t x50; uint8_t x51 = _subborrow_u32(0x0, x29, 0xffffffef, &x50);
+ { uint32_t x53; uint8_t x54 = _subborrow_u32(x51, x32, 0xffffffff, &x53);
+ { uint32_t x56; uint8_t x57 = _subborrow_u32(x54, x35, 0xffffffff, &x56);
+ { uint32_t x59; uint8_t x60 = _subborrow_u32(x57, x38, 0xffffffff, &x59);
+ { uint32_t x62; uint8_t x63 = _subborrow_u32(x60, x41, 0xffffffff, &x62);
+ { uint32_t x65; uint8_t x66 = _subborrow_u32(x63, x44, 0xffffffff, &x65);
+ { uint32_t x68; uint8_t x69 = _subborrow_u32(x66, x47, 0x3f, &x68);
+ { uint32_t _; uint8_t x72 = _subborrow_u32(x69, x48, 0x0, &_);
+ { uint32_t x73 = cmovznz32(x72, x68, x47);
+ { uint32_t x74 = cmovznz32(x72, x65, x44);
+ { uint32_t x75 = cmovznz32(x72, x62, x41);
+ { uint32_t x76 = cmovznz32(x72, x59, x38);
+ { uint32_t x77 = cmovznz32(x72, x56, x35);
+ { uint32_t x78 = cmovznz32(x72, x53, x32);
+ { uint32_t x79 = cmovznz32(x72, x50, x29);
+ out[0] = x79;
+ out[1] = x78;
+ out[2] = x77;
+ out[3] = x76;
+ out[4] = x75;
+ out[5] = x74;
+ out[6] = x73;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/feaddDisplay.log b/src/Specific/montgomery32_2e198m17_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..5d5529301
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/feaddDisplay.log
@@ -0,0 +1,29 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint32_t x29, uint8_t x30 = addcarryx_u32(0x0, x5, x17);
+ uint32_t x32, uint8_t x33 = addcarryx_u32(x30, x7, x19);
+ uint32_t x35, uint8_t x36 = addcarryx_u32(x33, x9, x21);
+ uint32_t x38, uint8_t x39 = addcarryx_u32(x36, x11, x23);
+ uint32_t x41, uint8_t x42 = addcarryx_u32(x39, x13, x25);
+ uint32_t x44, uint8_t x45 = addcarryx_u32(x42, x15, x27);
+ uint32_t x47, uint8_t x48 = addcarryx_u32(x45, x14, x26);
+ uint32_t x50, uint8_t x51 = subborrow_u32(0x0, x29, 0xffffffef);
+ uint32_t x53, uint8_t x54 = subborrow_u32(x51, x32, 0xffffffff);
+ uint32_t x56, uint8_t x57 = subborrow_u32(x54, x35, 0xffffffff);
+ uint32_t x59, uint8_t x60 = subborrow_u32(x57, x38, 0xffffffff);
+ uint32_t x62, uint8_t x63 = subborrow_u32(x60, x41, 0xffffffff);
+ uint32_t x65, uint8_t x66 = subborrow_u32(x63, x44, 0xffffffff);
+ uint32_t x68, uint8_t x69 = subborrow_u32(x66, x47, 0x3f);
+ uint32_t _, uint8_t x72 = subborrow_u32(x69, x48, 0x0);
+ uint32_t x73 = cmovznz32(x72, x68, x47);
+ uint32_t x74 = cmovznz32(x72, x65, x44);
+ uint32_t x75 = cmovznz32(x72, x62, x41);
+ uint32_t x76 = cmovznz32(x72, x59, x38);
+ uint32_t x77 = cmovznz32(x72, x56, x35);
+ uint32_t x78 = cmovznz32(x72, x53, x32);
+ uint32_t x79 = cmovznz32(x72, x50, x29);
+ return (x73, x74, x75, x76, x77, x78, x79))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/fenz.c b/src/Specific/montgomery32_2e198m17_7limbs/fenz.c
new file mode 100644
index 000000000..387dcfe67
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/fenz.c
@@ -0,0 +1,17 @@
+static void fenz(ReturnType uint32_t out[1], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x13 = (x12 | x11);
+ { uint32_t x14 = (x10 | x13);
+ { uint32_t x15 = (x8 | x14);
+ { uint32_t x16 = (x6 | x15);
+ { uint32_t x17 = (x4 | x16);
+ { uint32_t x18 = (x2 | x17);
+ out[0] = x18;
+ }}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e198m17_7limbs/fenzDisplay.log b/src/Specific/montgomery32_2e198m17_7limbs/fenzDisplay.log
new file mode 100644
index 000000000..9685f89d7
--- /dev/null
+++ b/src/Specific/montgomery32_2e198m17_7limbs/fenzDisplay.log
@@ -0,0 +1,13 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x13 = (x12 | x11);
+ uint32_t x14 = (x10 | x13);
+ uint32_t x15 = (x8 | x14);
+ uint32_t x16 = (x6 | x15);
+ uint32_t x17 = (x4 | x16);
+ uint32_t x18 = (x2 | x17);
+ return x18)
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/femul.c b/src/Specific/montgomery64_2e322m2e161m1_6limbs/femul.c
new file mode 100644
index 000000000..21650b616
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/femul.c
@@ -0,0 +1,260 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
+ { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
+ { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
+ { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
+ { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
+ { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
+ { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
+ { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
+ { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
+ { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
+ { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
+ { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
+ { uint64_t x62; uint64_t x61 = _mulx_u64(x25, 0xffffffffffffffffL, &x62);
+ { uint64_t x65; uint64_t x64 = _mulx_u64(x25, 0xffffffffffffffffL, &x65);
+ { uint64_t x68; uint64_t x67 = _mulx_u64(x25, 0xfffffffdffffffffL, &x68);
+ { uint64_t x71; uint64_t x70 = _mulx_u64(x25, 0xffffffffffffffffL, &x71);
+ { uint64_t x74; uint64_t x73 = _mulx_u64(x25, 0xffffffffffffffffL, &x74);
+ { uint8_t x77; uint64_t x76 = _mulx_u64_out_u8(x25, 0x3, &x77);
+ { uint64_t x79; uint8_t x80 = _addcarryx_u64(0x0, x62, x64, &x79);
+ { uint64_t x82; uint8_t x83 = _addcarryx_u64(x80, x65, x67, &x82);
+ { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
+ { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
+ { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
+ { uint8_t x93 = (x92 + x77);
+ { uint64_t _; uint8_t x96 = _addcarryx_u64(0x0, x25, x61, &_);
+ { uint64_t x98; uint8_t x99 = _addcarryx_u64(x96, x43, x79, &x98);
+ { uint64_t x101; uint8_t x102 = _addcarryx_u64(x99, x46, x82, &x101);
+ { uint64_t x104; uint8_t x105 = _addcarryx_u64(x102, x49, x85, &x104);
+ { uint64_t x107; uint8_t x108 = _addcarryx_u64(x105, x52, x88, &x107);
+ { uint64_t x110; uint8_t x111 = _addcarryx_u64(x108, x55, x91, &x110);
+ { uint64_t x113; uint8_t x114 = _addcarryx_u64(x111, x58, x93, &x113);
+ { uint64_t x117; uint64_t x116 = _mulx_u64(x7, x15, &x117);
+ { uint64_t x120; uint64_t x119 = _mulx_u64(x7, x17, &x120);
+ { uint64_t x123; uint64_t x122 = _mulx_u64(x7, x19, &x123);
+ { uint64_t x126; uint64_t x125 = _mulx_u64(x7, x21, &x126);
+ { uint64_t x129; uint64_t x128 = _mulx_u64(x7, x23, &x129);
+ { uint64_t x132; uint64_t x131 = _mulx_u64(x7, x22, &x132);
+ { uint64_t x134; uint8_t x135 = _addcarryx_u64(0x0, x117, x119, &x134);
+ { uint64_t x137; uint8_t x138 = _addcarryx_u64(x135, x120, x122, &x137);
+ { uint64_t x140; uint8_t x141 = _addcarryx_u64(x138, x123, x125, &x140);
+ { uint64_t x143; uint8_t x144 = _addcarryx_u64(x141, x126, x128, &x143);
+ { uint64_t x146; uint8_t x147 = _addcarryx_u64(x144, x129, x131, &x146);
+ { uint64_t x149; uint8_t _ = _addcarryx_u64(0x0, x147, x132, &x149);
+ { uint64_t x152; uint8_t x153 = _addcarryx_u64(0x0, x98, x116, &x152);
+ { uint64_t x155; uint8_t x156 = _addcarryx_u64(x153, x101, x134, &x155);
+ { uint64_t x158; uint8_t x159 = _addcarryx_u64(x156, x104, x137, &x158);
+ { uint64_t x161; uint8_t x162 = _addcarryx_u64(x159, x107, x140, &x161);
+ { uint64_t x164; uint8_t x165 = _addcarryx_u64(x162, x110, x143, &x164);
+ { uint64_t x167; uint8_t x168 = _addcarryx_u64(x165, x113, x146, &x167);
+ { uint64_t x170; uint8_t x171 = _addcarryx_u64(x168, x114, x149, &x170);
+ { uint64_t x174; uint64_t x173 = _mulx_u64(x152, 0xffffffffffffffffL, &x174);
+ { uint64_t x177; uint64_t x176 = _mulx_u64(x152, 0xffffffffffffffffL, &x177);
+ { uint64_t x180; uint64_t x179 = _mulx_u64(x152, 0xfffffffdffffffffL, &x180);
+ { uint64_t x183; uint64_t x182 = _mulx_u64(x152, 0xffffffffffffffffL, &x183);
+ { uint64_t x186; uint64_t x185 = _mulx_u64(x152, 0xffffffffffffffffL, &x186);
+ { uint8_t x189; uint64_t x188 = _mulx_u64_out_u8(x152, 0x3, &x189);
+ { uint64_t x191; uint8_t x192 = _addcarryx_u64(0x0, x174, x176, &x191);
+ { uint64_t x194; uint8_t x195 = _addcarryx_u64(x192, x177, x179, &x194);
+ { uint64_t x197; uint8_t x198 = _addcarryx_u64(x195, x180, x182, &x197);
+ { uint64_t x200; uint8_t x201 = _addcarryx_u64(x198, x183, x185, &x200);
+ { uint64_t x203; uint8_t x204 = _addcarryx_u64(x201, x186, x188, &x203);
+ { uint8_t x205 = (x204 + x189);
+ { uint64_t _; uint8_t x208 = _addcarryx_u64(0x0, x152, x173, &_);
+ { uint64_t x210; uint8_t x211 = _addcarryx_u64(x208, x155, x191, &x210);
+ { uint64_t x213; uint8_t x214 = _addcarryx_u64(x211, x158, x194, &x213);
+ { uint64_t x216; uint8_t x217 = _addcarryx_u64(x214, x161, x197, &x216);
+ { uint64_t x219; uint8_t x220 = _addcarryx_u64(x217, x164, x200, &x219);
+ { uint64_t x222; uint8_t x223 = _addcarryx_u64(x220, x167, x203, &x222);
+ { uint64_t x225; uint8_t x226 = _addcarryx_u64(x223, x170, x205, &x225);
+ { uint8_t x227 = (x226 + x171);
+ { uint64_t x230; uint64_t x229 = _mulx_u64(x9, x15, &x230);
+ { uint64_t x233; uint64_t x232 = _mulx_u64(x9, x17, &x233);
+ { uint64_t x236; uint64_t x235 = _mulx_u64(x9, x19, &x236);
+ { uint64_t x239; uint64_t x238 = _mulx_u64(x9, x21, &x239);
+ { uint64_t x242; uint64_t x241 = _mulx_u64(x9, x23, &x242);
+ { uint64_t x245; uint64_t x244 = _mulx_u64(x9, x22, &x245);
+ { uint64_t x247; uint8_t x248 = _addcarryx_u64(0x0, x230, x232, &x247);
+ { uint64_t x250; uint8_t x251 = _addcarryx_u64(x248, x233, x235, &x250);
+ { uint64_t x253; uint8_t x254 = _addcarryx_u64(x251, x236, x238, &x253);
+ { uint64_t x256; uint8_t x257 = _addcarryx_u64(x254, x239, x241, &x256);
+ { uint64_t x259; uint8_t x260 = _addcarryx_u64(x257, x242, x244, &x259);
+ { uint64_t x262; uint8_t _ = _addcarryx_u64(0x0, x260, x245, &x262);
+ { uint64_t x265; uint8_t x266 = _addcarryx_u64(0x0, x210, x229, &x265);
+ { uint64_t x268; uint8_t x269 = _addcarryx_u64(x266, x213, x247, &x268);
+ { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x216, x250, &x271);
+ { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x219, x253, &x274);
+ { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x222, x256, &x277);
+ { uint64_t x280; uint8_t x281 = _addcarryx_u64(x278, x225, x259, &x280);
+ { uint64_t x283; uint8_t x284 = _addcarryx_u64(x281, x227, x262, &x283);
+ { uint64_t x287; uint64_t x286 = _mulx_u64(x265, 0xffffffffffffffffL, &x287);
+ { uint64_t x290; uint64_t x289 = _mulx_u64(x265, 0xffffffffffffffffL, &x290);
+ { uint64_t x293; uint64_t x292 = _mulx_u64(x265, 0xfffffffdffffffffL, &x293);
+ { uint64_t x296; uint64_t x295 = _mulx_u64(x265, 0xffffffffffffffffL, &x296);
+ { uint64_t x299; uint64_t x298 = _mulx_u64(x265, 0xffffffffffffffffL, &x299);
+ { uint8_t x302; uint64_t x301 = _mulx_u64_out_u8(x265, 0x3, &x302);
+ { uint64_t x304; uint8_t x305 = _addcarryx_u64(0x0, x287, x289, &x304);
+ { uint64_t x307; uint8_t x308 = _addcarryx_u64(x305, x290, x292, &x307);
+ { uint64_t x310; uint8_t x311 = _addcarryx_u64(x308, x293, x295, &x310);
+ { uint64_t x313; uint8_t x314 = _addcarryx_u64(x311, x296, x298, &x313);
+ { uint64_t x316; uint8_t x317 = _addcarryx_u64(x314, x299, x301, &x316);
+ { uint8_t x318 = (x317 + x302);
+ { uint64_t _; uint8_t x321 = _addcarryx_u64(0x0, x265, x286, &_);
+ { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x268, x304, &x323);
+ { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x271, x307, &x326);
+ { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x274, x310, &x329);
+ { uint64_t x332; uint8_t x333 = _addcarryx_u64(x330, x277, x313, &x332);
+ { uint64_t x335; uint8_t x336 = _addcarryx_u64(x333, x280, x316, &x335);
+ { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x283, x318, &x338);
+ { uint8_t x340 = (x339 + x284);
+ { uint64_t x343; uint64_t x342 = _mulx_u64(x11, x15, &x343);
+ { uint64_t x346; uint64_t x345 = _mulx_u64(x11, x17, &x346);
+ { uint64_t x349; uint64_t x348 = _mulx_u64(x11, x19, &x349);
+ { uint64_t x352; uint64_t x351 = _mulx_u64(x11, x21, &x352);
+ { uint64_t x355; uint64_t x354 = _mulx_u64(x11, x23, &x355);
+ { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x22, &x358);
+ { uint64_t x360; uint8_t x361 = _addcarryx_u64(0x0, x343, x345, &x360);
+ { uint64_t x363; uint8_t x364 = _addcarryx_u64(x361, x346, x348, &x363);
+ { uint64_t x366; uint8_t x367 = _addcarryx_u64(x364, x349, x351, &x366);
+ { uint64_t x369; uint8_t x370 = _addcarryx_u64(x367, x352, x354, &x369);
+ { uint64_t x372; uint8_t x373 = _addcarryx_u64(x370, x355, x357, &x372);
+ { uint64_t x375; uint8_t _ = _addcarryx_u64(0x0, x373, x358, &x375);
+ { uint64_t x378; uint8_t x379 = _addcarryx_u64(0x0, x323, x342, &x378);
+ { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x326, x360, &x381);
+ { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x329, x363, &x384);
+ { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x332, x366, &x387);
+ { uint64_t x390; uint8_t x391 = _addcarryx_u64(x388, x335, x369, &x390);
+ { uint64_t x393; uint8_t x394 = _addcarryx_u64(x391, x338, x372, &x393);
+ { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x340, x375, &x396);
+ { uint64_t x400; uint64_t x399 = _mulx_u64(x378, 0xffffffffffffffffL, &x400);
+ { uint64_t x403; uint64_t x402 = _mulx_u64(x378, 0xffffffffffffffffL, &x403);
+ { uint64_t x406; uint64_t x405 = _mulx_u64(x378, 0xfffffffdffffffffL, &x406);
+ { uint64_t x409; uint64_t x408 = _mulx_u64(x378, 0xffffffffffffffffL, &x409);
+ { uint64_t x412; uint64_t x411 = _mulx_u64(x378, 0xffffffffffffffffL, &x412);
+ { uint8_t x415; uint64_t x414 = _mulx_u64_out_u8(x378, 0x3, &x415);
+ { uint64_t x417; uint8_t x418 = _addcarryx_u64(0x0, x400, x402, &x417);
+ { uint64_t x420; uint8_t x421 = _addcarryx_u64(x418, x403, x405, &x420);
+ { uint64_t x423; uint8_t x424 = _addcarryx_u64(x421, x406, x408, &x423);
+ { uint64_t x426; uint8_t x427 = _addcarryx_u64(x424, x409, x411, &x426);
+ { uint64_t x429; uint8_t x430 = _addcarryx_u64(x427, x412, x414, &x429);
+ { uint8_t x431 = (x430 + x415);
+ { uint64_t _; uint8_t x434 = _addcarryx_u64(0x0, x378, x399, &_);
+ { uint64_t x436; uint8_t x437 = _addcarryx_u64(x434, x381, x417, &x436);
+ { uint64_t x439; uint8_t x440 = _addcarryx_u64(x437, x384, x420, &x439);
+ { uint64_t x442; uint8_t x443 = _addcarryx_u64(x440, x387, x423, &x442);
+ { uint64_t x445; uint8_t x446 = _addcarryx_u64(x443, x390, x426, &x445);
+ { uint64_t x448; uint8_t x449 = _addcarryx_u64(x446, x393, x429, &x448);
+ { uint64_t x451; uint8_t x452 = _addcarryx_u64(x449, x396, x431, &x451);
+ { uint8_t x453 = (x452 + x397);
+ { uint64_t x456; uint64_t x455 = _mulx_u64(x13, x15, &x456);
+ { uint64_t x459; uint64_t x458 = _mulx_u64(x13, x17, &x459);
+ { uint64_t x462; uint64_t x461 = _mulx_u64(x13, x19, &x462);
+ { uint64_t x465; uint64_t x464 = _mulx_u64(x13, x21, &x465);
+ { uint64_t x468; uint64_t x467 = _mulx_u64(x13, x23, &x468);
+ { uint64_t x471; uint64_t x470 = _mulx_u64(x13, x22, &x471);
+ { uint64_t x473; uint8_t x474 = _addcarryx_u64(0x0, x456, x458, &x473);
+ { uint64_t x476; uint8_t x477 = _addcarryx_u64(x474, x459, x461, &x476);
+ { uint64_t x479; uint8_t x480 = _addcarryx_u64(x477, x462, x464, &x479);
+ { uint64_t x482; uint8_t x483 = _addcarryx_u64(x480, x465, x467, &x482);
+ { uint64_t x485; uint8_t x486 = _addcarryx_u64(x483, x468, x470, &x485);
+ { uint64_t x488; uint8_t _ = _addcarryx_u64(0x0, x486, x471, &x488);
+ { uint64_t x491; uint8_t x492 = _addcarryx_u64(0x0, x436, x455, &x491);
+ { uint64_t x494; uint8_t x495 = _addcarryx_u64(x492, x439, x473, &x494);
+ { uint64_t x497; uint8_t x498 = _addcarryx_u64(x495, x442, x476, &x497);
+ { uint64_t x500; uint8_t x501 = _addcarryx_u64(x498, x445, x479, &x500);
+ { uint64_t x503; uint8_t x504 = _addcarryx_u64(x501, x448, x482, &x503);
+ { uint64_t x506; uint8_t x507 = _addcarryx_u64(x504, x451, x485, &x506);
+ { uint64_t x509; uint8_t x510 = _addcarryx_u64(x507, x453, x488, &x509);
+ { uint64_t x513; uint64_t x512 = _mulx_u64(x491, 0xffffffffffffffffL, &x513);
+ { uint64_t x516; uint64_t x515 = _mulx_u64(x491, 0xffffffffffffffffL, &x516);
+ { uint64_t x519; uint64_t x518 = _mulx_u64(x491, 0xfffffffdffffffffL, &x519);
+ { uint64_t x522; uint64_t x521 = _mulx_u64(x491, 0xffffffffffffffffL, &x522);
+ { uint64_t x525; uint64_t x524 = _mulx_u64(x491, 0xffffffffffffffffL, &x525);
+ { uint8_t x528; uint64_t x527 = _mulx_u64_out_u8(x491, 0x3, &x528);
+ { uint64_t x530; uint8_t x531 = _addcarryx_u64(0x0, x513, x515, &x530);
+ { uint64_t x533; uint8_t x534 = _addcarryx_u64(x531, x516, x518, &x533);
+ { uint64_t x536; uint8_t x537 = _addcarryx_u64(x534, x519, x521, &x536);
+ { uint64_t x539; uint8_t x540 = _addcarryx_u64(x537, x522, x524, &x539);
+ { uint64_t x542; uint8_t x543 = _addcarryx_u64(x540, x525, x527, &x542);
+ { uint8_t x544 = (x543 + x528);
+ { uint64_t _; uint8_t x547 = _addcarryx_u64(0x0, x491, x512, &_);
+ { uint64_t x549; uint8_t x550 = _addcarryx_u64(x547, x494, x530, &x549);
+ { uint64_t x552; uint8_t x553 = _addcarryx_u64(x550, x497, x533, &x552);
+ { uint64_t x555; uint8_t x556 = _addcarryx_u64(x553, x500, x536, &x555);
+ { uint64_t x558; uint8_t x559 = _addcarryx_u64(x556, x503, x539, &x558);
+ { uint64_t x561; uint8_t x562 = _addcarryx_u64(x559, x506, x542, &x561);
+ { uint64_t x564; uint8_t x565 = _addcarryx_u64(x562, x509, x544, &x564);
+ { uint8_t x566 = (x565 + x510);
+ { uint64_t x569; uint64_t x568 = _mulx_u64(x12, x15, &x569);
+ { uint64_t x572; uint64_t x571 = _mulx_u64(x12, x17, &x572);
+ { uint64_t x575; uint64_t x574 = _mulx_u64(x12, x19, &x575);
+ { uint64_t x578; uint64_t x577 = _mulx_u64(x12, x21, &x578);
+ { uint64_t x581; uint64_t x580 = _mulx_u64(x12, x23, &x581);
+ { uint64_t x584; uint64_t x583 = _mulx_u64(x12, x22, &x584);
+ { uint64_t x586; uint8_t x587 = _addcarryx_u64(0x0, x569, x571, &x586);
+ { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x572, x574, &x589);
+ { uint64_t x592; uint8_t x593 = _addcarryx_u64(x590, x575, x577, &x592);
+ { uint64_t x595; uint8_t x596 = _addcarryx_u64(x593, x578, x580, &x595);
+ { uint64_t x598; uint8_t x599 = _addcarryx_u64(x596, x581, x583, &x598);
+ { uint64_t x601; uint8_t _ = _addcarryx_u64(0x0, x599, x584, &x601);
+ { uint64_t x604; uint8_t x605 = _addcarryx_u64(0x0, x549, x568, &x604);
+ { uint64_t x607; uint8_t x608 = _addcarryx_u64(x605, x552, x586, &x607);
+ { uint64_t x610; uint8_t x611 = _addcarryx_u64(x608, x555, x589, &x610);
+ { uint64_t x613; uint8_t x614 = _addcarryx_u64(x611, x558, x592, &x613);
+ { uint64_t x616; uint8_t x617 = _addcarryx_u64(x614, x561, x595, &x616);
+ { uint64_t x619; uint8_t x620 = _addcarryx_u64(x617, x564, x598, &x619);
+ { uint64_t x622; uint8_t x623 = _addcarryx_u64(x620, x566, x601, &x622);
+ { uint64_t x626; uint64_t x625 = _mulx_u64(x604, 0xffffffffffffffffL, &x626);
+ { uint64_t x629; uint64_t x628 = _mulx_u64(x604, 0xffffffffffffffffL, &x629);
+ { uint64_t x632; uint64_t x631 = _mulx_u64(x604, 0xfffffffdffffffffL, &x632);
+ { uint64_t x635; uint64_t x634 = _mulx_u64(x604, 0xffffffffffffffffL, &x635);
+ { uint64_t x638; uint64_t x637 = _mulx_u64(x604, 0xffffffffffffffffL, &x638);
+ { uint8_t x641; uint64_t x640 = _mulx_u64_out_u8(x604, 0x3, &x641);
+ { uint64_t x643; uint8_t x644 = _addcarryx_u64(0x0, x626, x628, &x643);
+ { uint64_t x646; uint8_t x647 = _addcarryx_u64(x644, x629, x631, &x646);
+ { uint64_t x649; uint8_t x650 = _addcarryx_u64(x647, x632, x634, &x649);
+ { uint64_t x652; uint8_t x653 = _addcarryx_u64(x650, x635, x637, &x652);
+ { uint64_t x655; uint8_t x656 = _addcarryx_u64(x653, x638, x640, &x655);
+ { uint8_t x657 = (x656 + x641);
+ { uint64_t _; uint8_t x660 = _addcarryx_u64(0x0, x604, x625, &_);
+ { uint64_t x662; uint8_t x663 = _addcarryx_u64(x660, x607, x643, &x662);
+ { uint64_t x665; uint8_t x666 = _addcarryx_u64(x663, x610, x646, &x665);
+ { uint64_t x668; uint8_t x669 = _addcarryx_u64(x666, x613, x649, &x668);
+ { uint64_t x671; uint8_t x672 = _addcarryx_u64(x669, x616, x652, &x671);
+ { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x619, x655, &x674);
+ { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x622, x657, &x677);
+ { uint8_t x679 = (x678 + x623);
+ { uint64_t x681; uint8_t x682 = _subborrow_u64(0x0, x662, 0xffffffffffffffffL, &x681);
+ { uint64_t x684; uint8_t x685 = _subborrow_u64(x682, x665, 0xffffffffffffffffL, &x684);
+ { uint64_t x687; uint8_t x688 = _subborrow_u64(x685, x668, 0xfffffffdffffffffL, &x687);
+ { uint64_t x690; uint8_t x691 = _subborrow_u64(x688, x671, 0xffffffffffffffffL, &x690);
+ { uint64_t x693; uint8_t x694 = _subborrow_u64(x691, x674, 0xffffffffffffffffL, &x693);
+ { uint64_t x696; uint8_t x697 = _subborrow_u64(x694, x677, 0x3, &x696);
+ { uint64_t _; uint8_t x700 = _subborrow_u64(x697, x679, 0x0, &_);
+ { uint64_t x701 = cmovznz64(x700, x696, x677);
+ { uint64_t x702 = cmovznz64(x700, x693, x674);
+ { uint64_t x703 = cmovznz64(x700, x690, x671);
+ { uint64_t x704 = cmovznz64(x700, x687, x668);
+ { uint64_t x705 = cmovznz64(x700, x684, x665);
+ { uint64_t x706 = cmovznz64(x700, x681, x662);
+ out[0] = x706;
+ out[1] = x705;
+ out[2] = x704;
+ out[3] = x703;
+ out[4] = x702;
+ out[5] = x701;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/femulDisplay.log b/src/Specific/montgomery64_2e322m2e161m1_6limbs/femulDisplay.log
new file mode 100644
index 000000000..bd69c25d5
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/femulDisplay.log
@@ -0,0 +1,246 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
+ uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
+ uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
+ uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
+ uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
+ uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
+ uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
+ uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
+ uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
+ uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
+ uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
+ uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
+ uint64_t x61, uint64_t x62 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x64, uint64_t x65 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x67, uint64_t x68 = mulx_u64(x25, 0xfffffffdffffffffL);
+ uint64_t x70, uint64_t x71 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x73, uint64_t x74 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x76, uint8_t x77 = mulx_u64_out_u8(x25, 0x3);
+ uint64_t x79, uint8_t x80 = addcarryx_u64(0x0, x62, x64);
+ uint64_t x82, uint8_t x83 = addcarryx_u64(x80, x65, x67);
+ uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
+ uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
+ uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
+ uint8_t x93 = (x92 + x77);
+ uint64_t _, uint8_t x96 = addcarryx_u64(0x0, x25, x61);
+ uint64_t x98, uint8_t x99 = addcarryx_u64(x96, x43, x79);
+ uint64_t x101, uint8_t x102 = addcarryx_u64(x99, x46, x82);
+ uint64_t x104, uint8_t x105 = addcarryx_u64(x102, x49, x85);
+ uint64_t x107, uint8_t x108 = addcarryx_u64(x105, x52, x88);
+ uint64_t x110, uint8_t x111 = addcarryx_u64(x108, x55, x91);
+ uint64_t x113, uint8_t x114 = addcarryx_u64(x111, x58, x93);
+ uint64_t x116, uint64_t x117 = mulx_u64(x7, x15);
+ uint64_t x119, uint64_t x120 = mulx_u64(x7, x17);
+ uint64_t x122, uint64_t x123 = mulx_u64(x7, x19);
+ uint64_t x125, uint64_t x126 = mulx_u64(x7, x21);
+ uint64_t x128, uint64_t x129 = mulx_u64(x7, x23);
+ uint64_t x131, uint64_t x132 = mulx_u64(x7, x22);
+ uint64_t x134, uint8_t x135 = addcarryx_u64(0x0, x117, x119);
+ uint64_t x137, uint8_t x138 = addcarryx_u64(x135, x120, x122);
+ uint64_t x140, uint8_t x141 = addcarryx_u64(x138, x123, x125);
+ uint64_t x143, uint8_t x144 = addcarryx_u64(x141, x126, x128);
+ uint64_t x146, uint8_t x147 = addcarryx_u64(x144, x129, x131);
+ uint64_t x149, uint8_t _ = addcarryx_u64(0x0, x147, x132);
+ uint64_t x152, uint8_t x153 = addcarryx_u64(0x0, x98, x116);
+ uint64_t x155, uint8_t x156 = addcarryx_u64(x153, x101, x134);
+ uint64_t x158, uint8_t x159 = addcarryx_u64(x156, x104, x137);
+ uint64_t x161, uint8_t x162 = addcarryx_u64(x159, x107, x140);
+ uint64_t x164, uint8_t x165 = addcarryx_u64(x162, x110, x143);
+ uint64_t x167, uint8_t x168 = addcarryx_u64(x165, x113, x146);
+ uint64_t x170, uint8_t x171 = addcarryx_u64(x168, x114, x149);
+ uint64_t x173, uint64_t x174 = mulx_u64(x152, 0xffffffffffffffffL);
+ uint64_t x176, uint64_t x177 = mulx_u64(x152, 0xffffffffffffffffL);
+ uint64_t x179, uint64_t x180 = mulx_u64(x152, 0xfffffffdffffffffL);
+ uint64_t x182, uint64_t x183 = mulx_u64(x152, 0xffffffffffffffffL);
+ uint64_t x185, uint64_t x186 = mulx_u64(x152, 0xffffffffffffffffL);
+ uint64_t x188, uint8_t x189 = mulx_u64_out_u8(x152, 0x3);
+ uint64_t x191, uint8_t x192 = addcarryx_u64(0x0, x174, x176);
+ uint64_t x194, uint8_t x195 = addcarryx_u64(x192, x177, x179);
+ uint64_t x197, uint8_t x198 = addcarryx_u64(x195, x180, x182);
+ uint64_t x200, uint8_t x201 = addcarryx_u64(x198, x183, x185);
+ uint64_t x203, uint8_t x204 = addcarryx_u64(x201, x186, x188);
+ uint8_t x205 = (x204 + x189);
+ uint64_t _, uint8_t x208 = addcarryx_u64(0x0, x152, x173);
+ uint64_t x210, uint8_t x211 = addcarryx_u64(x208, x155, x191);
+ uint64_t x213, uint8_t x214 = addcarryx_u64(x211, x158, x194);
+ uint64_t x216, uint8_t x217 = addcarryx_u64(x214, x161, x197);
+ uint64_t x219, uint8_t x220 = addcarryx_u64(x217, x164, x200);
+ uint64_t x222, uint8_t x223 = addcarryx_u64(x220, x167, x203);
+ uint64_t x225, uint8_t x226 = addcarryx_u64(x223, x170, x205);
+ uint8_t x227 = (x226 + x171);
+ uint64_t x229, uint64_t x230 = mulx_u64(x9, x15);
+ uint64_t x232, uint64_t x233 = mulx_u64(x9, x17);
+ uint64_t x235, uint64_t x236 = mulx_u64(x9, x19);
+ uint64_t x238, uint64_t x239 = mulx_u64(x9, x21);
+ uint64_t x241, uint64_t x242 = mulx_u64(x9, x23);
+ uint64_t x244, uint64_t x245 = mulx_u64(x9, x22);
+ uint64_t x247, uint8_t x248 = addcarryx_u64(0x0, x230, x232);
+ uint64_t x250, uint8_t x251 = addcarryx_u64(x248, x233, x235);
+ uint64_t x253, uint8_t x254 = addcarryx_u64(x251, x236, x238);
+ uint64_t x256, uint8_t x257 = addcarryx_u64(x254, x239, x241);
+ uint64_t x259, uint8_t x260 = addcarryx_u64(x257, x242, x244);
+ uint64_t x262, uint8_t _ = addcarryx_u64(0x0, x260, x245);
+ uint64_t x265, uint8_t x266 = addcarryx_u64(0x0, x210, x229);
+ uint64_t x268, uint8_t x269 = addcarryx_u64(x266, x213, x247);
+ uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x216, x250);
+ uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x219, x253);
+ uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x222, x256);
+ uint64_t x280, uint8_t x281 = addcarryx_u64(x278, x225, x259);
+ uint64_t x283, uint8_t x284 = addcarryx_u64(x281, x227, x262);
+ uint64_t x286, uint64_t x287 = mulx_u64(x265, 0xffffffffffffffffL);
+ uint64_t x289, uint64_t x290 = mulx_u64(x265, 0xffffffffffffffffL);
+ uint64_t x292, uint64_t x293 = mulx_u64(x265, 0xfffffffdffffffffL);
+ uint64_t x295, uint64_t x296 = mulx_u64(x265, 0xffffffffffffffffL);
+ uint64_t x298, uint64_t x299 = mulx_u64(x265, 0xffffffffffffffffL);
+ uint64_t x301, uint8_t x302 = mulx_u64_out_u8(x265, 0x3);
+ uint64_t x304, uint8_t x305 = addcarryx_u64(0x0, x287, x289);
+ uint64_t x307, uint8_t x308 = addcarryx_u64(x305, x290, x292);
+ uint64_t x310, uint8_t x311 = addcarryx_u64(x308, x293, x295);
+ uint64_t x313, uint8_t x314 = addcarryx_u64(x311, x296, x298);
+ uint64_t x316, uint8_t x317 = addcarryx_u64(x314, x299, x301);
+ uint8_t x318 = (x317 + x302);
+ uint64_t _, uint8_t x321 = addcarryx_u64(0x0, x265, x286);
+ uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x268, x304);
+ uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x271, x307);
+ uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x274, x310);
+ uint64_t x332, uint8_t x333 = addcarryx_u64(x330, x277, x313);
+ uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x280, x316);
+ uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x283, x318);
+ uint8_t x340 = (x339 + x284);
+ uint64_t x342, uint64_t x343 = mulx_u64(x11, x15);
+ uint64_t x345, uint64_t x346 = mulx_u64(x11, x17);
+ uint64_t x348, uint64_t x349 = mulx_u64(x11, x19);
+ uint64_t x351, uint64_t x352 = mulx_u64(x11, x21);
+ uint64_t x354, uint64_t x355 = mulx_u64(x11, x23);
+ uint64_t x357, uint64_t x358 = mulx_u64(x11, x22);
+ uint64_t x360, uint8_t x361 = addcarryx_u64(0x0, x343, x345);
+ uint64_t x363, uint8_t x364 = addcarryx_u64(x361, x346, x348);
+ uint64_t x366, uint8_t x367 = addcarryx_u64(x364, x349, x351);
+ uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x352, x354);
+ uint64_t x372, uint8_t x373 = addcarryx_u64(x370, x355, x357);
+ uint64_t x375, uint8_t _ = addcarryx_u64(0x0, x373, x358);
+ uint64_t x378, uint8_t x379 = addcarryx_u64(0x0, x323, x342);
+ uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x326, x360);
+ uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x329, x363);
+ uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x332, x366);
+ uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x335, x369);
+ uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x338, x372);
+ uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x340, x375);
+ uint64_t x399, uint64_t x400 = mulx_u64(x378, 0xffffffffffffffffL);
+ uint64_t x402, uint64_t x403 = mulx_u64(x378, 0xffffffffffffffffL);
+ uint64_t x405, uint64_t x406 = mulx_u64(x378, 0xfffffffdffffffffL);
+ uint64_t x408, uint64_t x409 = mulx_u64(x378, 0xffffffffffffffffL);
+ uint64_t x411, uint64_t x412 = mulx_u64(x378, 0xffffffffffffffffL);
+ uint64_t x414, uint8_t x415 = mulx_u64_out_u8(x378, 0x3);
+ uint64_t x417, uint8_t x418 = addcarryx_u64(0x0, x400, x402);
+ uint64_t x420, uint8_t x421 = addcarryx_u64(x418, x403, x405);
+ uint64_t x423, uint8_t x424 = addcarryx_u64(x421, x406, x408);
+ uint64_t x426, uint8_t x427 = addcarryx_u64(x424, x409, x411);
+ uint64_t x429, uint8_t x430 = addcarryx_u64(x427, x412, x414);
+ uint8_t x431 = (x430 + x415);
+ uint64_t _, uint8_t x434 = addcarryx_u64(0x0, x378, x399);
+ uint64_t x436, uint8_t x437 = addcarryx_u64(x434, x381, x417);
+ uint64_t x439, uint8_t x440 = addcarryx_u64(x437, x384, x420);
+ uint64_t x442, uint8_t x443 = addcarryx_u64(x440, x387, x423);
+ uint64_t x445, uint8_t x446 = addcarryx_u64(x443, x390, x426);
+ uint64_t x448, uint8_t x449 = addcarryx_u64(x446, x393, x429);
+ uint64_t x451, uint8_t x452 = addcarryx_u64(x449, x396, x431);
+ uint8_t x453 = (x452 + x397);
+ uint64_t x455, uint64_t x456 = mulx_u64(x13, x15);
+ uint64_t x458, uint64_t x459 = mulx_u64(x13, x17);
+ uint64_t x461, uint64_t x462 = mulx_u64(x13, x19);
+ uint64_t x464, uint64_t x465 = mulx_u64(x13, x21);
+ uint64_t x467, uint64_t x468 = mulx_u64(x13, x23);
+ uint64_t x470, uint64_t x471 = mulx_u64(x13, x22);
+ uint64_t x473, uint8_t x474 = addcarryx_u64(0x0, x456, x458);
+ uint64_t x476, uint8_t x477 = addcarryx_u64(x474, x459, x461);
+ uint64_t x479, uint8_t x480 = addcarryx_u64(x477, x462, x464);
+ uint64_t x482, uint8_t x483 = addcarryx_u64(x480, x465, x467);
+ uint64_t x485, uint8_t x486 = addcarryx_u64(x483, x468, x470);
+ uint64_t x488, uint8_t _ = addcarryx_u64(0x0, x486, x471);
+ uint64_t x491, uint8_t x492 = addcarryx_u64(0x0, x436, x455);
+ uint64_t x494, uint8_t x495 = addcarryx_u64(x492, x439, x473);
+ uint64_t x497, uint8_t x498 = addcarryx_u64(x495, x442, x476);
+ uint64_t x500, uint8_t x501 = addcarryx_u64(x498, x445, x479);
+ uint64_t x503, uint8_t x504 = addcarryx_u64(x501, x448, x482);
+ uint64_t x506, uint8_t x507 = addcarryx_u64(x504, x451, x485);
+ uint64_t x509, uint8_t x510 = addcarryx_u64(x507, x453, x488);
+ uint64_t x512, uint64_t x513 = mulx_u64(x491, 0xffffffffffffffffL);
+ uint64_t x515, uint64_t x516 = mulx_u64(x491, 0xffffffffffffffffL);
+ uint64_t x518, uint64_t x519 = mulx_u64(x491, 0xfffffffdffffffffL);
+ uint64_t x521, uint64_t x522 = mulx_u64(x491, 0xffffffffffffffffL);
+ uint64_t x524, uint64_t x525 = mulx_u64(x491, 0xffffffffffffffffL);
+ uint64_t x527, uint8_t x528 = mulx_u64_out_u8(x491, 0x3);
+ uint64_t x530, uint8_t x531 = addcarryx_u64(0x0, x513, x515);
+ uint64_t x533, uint8_t x534 = addcarryx_u64(x531, x516, x518);
+ uint64_t x536, uint8_t x537 = addcarryx_u64(x534, x519, x521);
+ uint64_t x539, uint8_t x540 = addcarryx_u64(x537, x522, x524);
+ uint64_t x542, uint8_t x543 = addcarryx_u64(x540, x525, x527);
+ uint8_t x544 = (x543 + x528);
+ uint64_t _, uint8_t x547 = addcarryx_u64(0x0, x491, x512);
+ uint64_t x549, uint8_t x550 = addcarryx_u64(x547, x494, x530);
+ uint64_t x552, uint8_t x553 = addcarryx_u64(x550, x497, x533);
+ uint64_t x555, uint8_t x556 = addcarryx_u64(x553, x500, x536);
+ uint64_t x558, uint8_t x559 = addcarryx_u64(x556, x503, x539);
+ uint64_t x561, uint8_t x562 = addcarryx_u64(x559, x506, x542);
+ uint64_t x564, uint8_t x565 = addcarryx_u64(x562, x509, x544);
+ uint8_t x566 = (x565 + x510);
+ uint64_t x568, uint64_t x569 = mulx_u64(x12, x15);
+ uint64_t x571, uint64_t x572 = mulx_u64(x12, x17);
+ uint64_t x574, uint64_t x575 = mulx_u64(x12, x19);
+ uint64_t x577, uint64_t x578 = mulx_u64(x12, x21);
+ uint64_t x580, uint64_t x581 = mulx_u64(x12, x23);
+ uint64_t x583, uint64_t x584 = mulx_u64(x12, x22);
+ uint64_t x586, uint8_t x587 = addcarryx_u64(0x0, x569, x571);
+ uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x572, x574);
+ uint64_t x592, uint8_t x593 = addcarryx_u64(x590, x575, x577);
+ uint64_t x595, uint8_t x596 = addcarryx_u64(x593, x578, x580);
+ uint64_t x598, uint8_t x599 = addcarryx_u64(x596, x581, x583);
+ uint64_t x601, uint8_t _ = addcarryx_u64(0x0, x599, x584);
+ uint64_t x604, uint8_t x605 = addcarryx_u64(0x0, x549, x568);
+ uint64_t x607, uint8_t x608 = addcarryx_u64(x605, x552, x586);
+ uint64_t x610, uint8_t x611 = addcarryx_u64(x608, x555, x589);
+ uint64_t x613, uint8_t x614 = addcarryx_u64(x611, x558, x592);
+ uint64_t x616, uint8_t x617 = addcarryx_u64(x614, x561, x595);
+ uint64_t x619, uint8_t x620 = addcarryx_u64(x617, x564, x598);
+ uint64_t x622, uint8_t x623 = addcarryx_u64(x620, x566, x601);
+ uint64_t x625, uint64_t x626 = mulx_u64(x604, 0xffffffffffffffffL);
+ uint64_t x628, uint64_t x629 = mulx_u64(x604, 0xffffffffffffffffL);
+ uint64_t x631, uint64_t x632 = mulx_u64(x604, 0xfffffffdffffffffL);
+ uint64_t x634, uint64_t x635 = mulx_u64(x604, 0xffffffffffffffffL);
+ uint64_t x637, uint64_t x638 = mulx_u64(x604, 0xffffffffffffffffL);
+ uint64_t x640, uint8_t x641 = mulx_u64_out_u8(x604, 0x3);
+ uint64_t x643, uint8_t x644 = addcarryx_u64(0x0, x626, x628);
+ uint64_t x646, uint8_t x647 = addcarryx_u64(x644, x629, x631);
+ uint64_t x649, uint8_t x650 = addcarryx_u64(x647, x632, x634);
+ uint64_t x652, uint8_t x653 = addcarryx_u64(x650, x635, x637);
+ uint64_t x655, uint8_t x656 = addcarryx_u64(x653, x638, x640);
+ uint8_t x657 = (x656 + x641);
+ uint64_t _, uint8_t x660 = addcarryx_u64(0x0, x604, x625);
+ uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x607, x643);
+ uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x610, x646);
+ uint64_t x668, uint8_t x669 = addcarryx_u64(x666, x613, x649);
+ uint64_t x671, uint8_t x672 = addcarryx_u64(x669, x616, x652);
+ uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x619, x655);
+ uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x622, x657);
+ uint8_t x679 = (x678 + x623);
+ uint64_t x681, uint8_t x682 = subborrow_u64(0x0, x662, 0xffffffffffffffffL);
+ uint64_t x684, uint8_t x685 = subborrow_u64(x682, x665, 0xffffffffffffffffL);
+ uint64_t x687, uint8_t x688 = subborrow_u64(x685, x668, 0xfffffffdffffffffL);
+ uint64_t x690, uint8_t x691 = subborrow_u64(x688, x671, 0xffffffffffffffffL);
+ uint64_t x693, uint8_t x694 = subborrow_u64(x691, x674, 0xffffffffffffffffL);
+ uint64_t x696, uint8_t x697 = subborrow_u64(x694, x677, 0x3);
+ uint64_t _, uint8_t x700 = subborrow_u64(x697, x679, 0x0);
+ uint64_t x701 = cmovznz64(x700, x696, x677);
+ uint64_t x702 = cmovznz64(x700, x693, x674);
+ uint64_t x703 = cmovznz64(x700, x690, x671);
+ uint64_t x704 = cmovznz64(x700, x687, x668);
+ uint64_t x705 = cmovznz64(x700, x684, x665);
+ uint64_t x706 = cmovznz64(x700, x681, x662);
+ return (x701, x702, x703, x704, x705, x706))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/feopp.c b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feopp.c
new file mode 100644
index 000000000..7445311c5
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feopp.c
@@ -0,0 +1,34 @@
+static void feopp(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
+ { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
+ { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
+ { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
+ { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
+ { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
+ { uint64_t x34 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
+ { uint64_t x38 = (x29 & 0xfffffffdffffffffL);
+ { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
+ { uint64_t x42 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
+ { uint64_t x46 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
+ { uint8_t x50 = ((uint8_t)x29 & 0x3);
+ { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/feoppDisplay.log b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feoppDisplay.log
new file mode 100644
index 000000000..2dee04d64
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/feoppDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
+ uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
+ uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
+ uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
+ uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
+ uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0xffffffffffffffffL);
+ uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
+ uint64_t x34 = (x29 & 0xffffffffffffffffL);
+ uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
+ uint64_t x38 = (x29 & 0xfffffffdffffffffL);
+ uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
+ uint64_t x42 = (x29 & 0xffffffffffffffffL);
+ uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
+ uint64_t x46 = (x29 & 0xffffffffffffffffL);
+ uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
+ uint8_t x50 = ((uint8_t)x29 & 0x3);
+ uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesub.c b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesub.c
new file mode 100644
index 000000000..587de6e27
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesub.c
@@ -0,0 +1,40 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
+ { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
+ { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
+ { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
+ { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
+ { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
+ { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
+ { uint64_t x43 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
+ { uint64_t x47 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
+ { uint64_t x51 = (x42 & 0xfffffffdffffffffL);
+ { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
+ { uint64_t x55 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
+ { uint64_t x59 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
+ { uint8_t x63 = ((uint8_t)x42 & 0x3);
+ { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
+ out[0] = x45;
+ out[1] = x49;
+ out[2] = x53;
+ out[3] = x57;
+ out[4] = x61;
+ out[5] = x65;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesubDisplay.log b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..3068ccc4e
--- /dev/null
+++ b/src/Specific/montgomery64_2e322m2e161m1_6limbs/fesubDisplay.log
@@ -0,0 +1,26 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
+ uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
+ uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
+ uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
+ uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
+ uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
+ uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
+ uint64_t x43 = (x42 & 0xffffffffffffffffL);
+ uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
+ uint64_t x47 = (x42 & 0xffffffffffffffffL);
+ uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
+ uint64_t x51 = (x42 & 0xfffffffdffffffffL);
+ uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
+ uint64_t x55 = (x42 & 0xffffffffffffffffL);
+ uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
+ uint64_t x59 = (x42 & 0xffffffffffffffffL);
+ uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
+ uint8_t x63 = ((uint8_t)x42 & 0x3);
+ uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
+ (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feadd.c b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feadd.c
new file mode 100644
index 000000000..ac69883a5
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feadd.c
@@ -0,0 +1,40 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
+ { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
+ { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
+ { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
+ { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
+ { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
+ { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffff, &x43);
+ { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffff00000000L, &x46);
+ { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xfffffffffffffffeL, &x49);
+ { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
+ { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
+ { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0xffffffffffffffffL, &x58);
+ { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
+ { uint64_t x63 = cmovznz64(x62, x58, x40);
+ { uint64_t x64 = cmovznz64(x62, x55, x37);
+ { uint64_t x65 = cmovznz64(x62, x52, x34);
+ { uint64_t x66 = cmovznz64(x62, x49, x31);
+ { uint64_t x67 = cmovznz64(x62, x46, x28);
+ { uint64_t x68 = cmovznz64(x62, x43, x25);
+ out[0] = x68;
+ out[1] = x67;
+ out[2] = x66;
+ out[3] = x65;
+ out[4] = x64;
+ out[5] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feaddDisplay.log b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..82253f65f
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feaddDisplay.log
@@ -0,0 +1,26 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
+ uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
+ uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
+ uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
+ uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
+ uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
+ uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffff);
+ uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffff00000000L);
+ uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xfffffffffffffffeL);
+ uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
+ uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
+ uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0xffffffffffffffffL);
+ uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
+ uint64_t x63 = cmovznz64(x62, x58, x40);
+ uint64_t x64 = cmovznz64(x62, x55, x37);
+ uint64_t x65 = cmovznz64(x62, x52, x34);
+ uint64_t x66 = cmovznz64(x62, x49, x31);
+ uint64_t x67 = cmovznz64(x62, x46, x28);
+ uint64_t x68 = cmovznz64(x62, x43, x25);
+ return (x63, x64, x65, x66, x67, x68))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femul.c b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femul.c
new file mode 100644
index 000000000..77fcb4861
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femul.c
@@ -0,0 +1,266 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
+ { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
+ { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
+ { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
+ { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
+ { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
+ { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
+ { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
+ { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
+ { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
+ { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
+ { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
+ { uint64_t _; uint64_t x61 = _mulx_u64(x25, 0x100000001, &_);
+ { uint64_t x65; uint64_t x64 = _mulx_u64(x61, 0xffffffff, &x65);
+ { uint64_t x68; uint64_t x67 = _mulx_u64(x61, 0xffffffff00000000L, &x68);
+ { uint64_t x71; uint64_t x70 = _mulx_u64(x61, 0xfffffffffffffffeL, &x71);
+ { uint64_t x74; uint64_t x73 = _mulx_u64(x61, 0xffffffffffffffffL, &x74);
+ { uint64_t x77; uint64_t x76 = _mulx_u64(x61, 0xffffffffffffffffL, &x77);
+ { uint64_t x80; uint64_t x79 = _mulx_u64(x61, 0xffffffffffffffffL, &x80);
+ { uint64_t x82; uint8_t x83 = _addcarryx_u64(0x0, x65, x67, &x82);
+ { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
+ { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
+ { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
+ { uint64_t x94; uint8_t x95 = _addcarryx_u64(x92, x77, x79, &x94);
+ { uint64_t x97; uint8_t _ = _addcarryx_u64(0x0, x95, x80, &x97);
+ { uint64_t _; uint8_t x101 = _addcarryx_u64(0x0, x25, x64, &_);
+ { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x43, x82, &x103);
+ { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x46, x85, &x106);
+ { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x49, x88, &x109);
+ { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x52, x91, &x112);
+ { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x55, x94, &x115);
+ { uint64_t x118; uint8_t x119 = _addcarryx_u64(x116, x58, x97, &x118);
+ { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x15, &x122);
+ { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x17, &x125);
+ { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x19, &x128);
+ { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x21, &x131);
+ { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x23, &x134);
+ { uint64_t x137; uint64_t x136 = _mulx_u64(x7, x22, &x137);
+ { uint64_t x139; uint8_t x140 = _addcarryx_u64(0x0, x122, x124, &x139);
+ { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
+ { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
+ { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
+ { uint64_t x151; uint8_t x152 = _addcarryx_u64(x149, x134, x136, &x151);
+ { uint64_t x154; uint8_t _ = _addcarryx_u64(0x0, x152, x137, &x154);
+ { uint64_t x157; uint8_t x158 = _addcarryx_u64(0x0, x103, x121, &x157);
+ { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
+ { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
+ { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
+ { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
+ { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x118, x151, &x172);
+ { uint64_t x175; uint8_t x176 = _addcarryx_u64(x173, x119, x154, &x175);
+ { uint64_t _; uint64_t x178 = _mulx_u64(x157, 0x100000001, &_);
+ { uint64_t x182; uint64_t x181 = _mulx_u64(x178, 0xffffffff, &x182);
+ { uint64_t x185; uint64_t x184 = _mulx_u64(x178, 0xffffffff00000000L, &x185);
+ { uint64_t x188; uint64_t x187 = _mulx_u64(x178, 0xfffffffffffffffeL, &x188);
+ { uint64_t x191; uint64_t x190 = _mulx_u64(x178, 0xffffffffffffffffL, &x191);
+ { uint64_t x194; uint64_t x193 = _mulx_u64(x178, 0xffffffffffffffffL, &x194);
+ { uint64_t x197; uint64_t x196 = _mulx_u64(x178, 0xffffffffffffffffL, &x197);
+ { uint64_t x199; uint8_t x200 = _addcarryx_u64(0x0, x182, x184, &x199);
+ { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
+ { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
+ { uint64_t x208; uint8_t x209 = _addcarryx_u64(x206, x191, x193, &x208);
+ { uint64_t x211; uint8_t x212 = _addcarryx_u64(x209, x194, x196, &x211);
+ { uint64_t x214; uint8_t _ = _addcarryx_u64(0x0, x212, x197, &x214);
+ { uint64_t _; uint8_t x218 = _addcarryx_u64(0x0, x157, x181, &_);
+ { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x160, x199, &x220);
+ { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x163, x202, &x223);
+ { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x166, x205, &x226);
+ { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x169, x208, &x229);
+ { uint64_t x232; uint8_t x233 = _addcarryx_u64(x230, x172, x211, &x232);
+ { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x175, x214, &x235);
+ { uint8_t x237 = (x236 + x176);
+ { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x15, &x240);
+ { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x17, &x243);
+ { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x19, &x246);
+ { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x21, &x249);
+ { uint64_t x252; uint64_t x251 = _mulx_u64(x9, x23, &x252);
+ { uint64_t x255; uint64_t x254 = _mulx_u64(x9, x22, &x255);
+ { uint64_t x257; uint8_t x258 = _addcarryx_u64(0x0, x240, x242, &x257);
+ { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
+ { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
+ { uint64_t x266; uint8_t x267 = _addcarryx_u64(x264, x249, x251, &x266);
+ { uint64_t x269; uint8_t x270 = _addcarryx_u64(x267, x252, x254, &x269);
+ { uint64_t x272; uint8_t _ = _addcarryx_u64(0x0, x270, x255, &x272);
+ { uint64_t x275; uint8_t x276 = _addcarryx_u64(0x0, x220, x239, &x275);
+ { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
+ { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
+ { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
+ { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x232, x266, &x287);
+ { uint64_t x290; uint8_t x291 = _addcarryx_u64(x288, x235, x269, &x290);
+ { uint64_t x293; uint8_t x294 = _addcarryx_u64(x291, x237, x272, &x293);
+ { uint64_t _; uint64_t x296 = _mulx_u64(x275, 0x100000001, &_);
+ { uint64_t x300; uint64_t x299 = _mulx_u64(x296, 0xffffffff, &x300);
+ { uint64_t x303; uint64_t x302 = _mulx_u64(x296, 0xffffffff00000000L, &x303);
+ { uint64_t x306; uint64_t x305 = _mulx_u64(x296, 0xfffffffffffffffeL, &x306);
+ { uint64_t x309; uint64_t x308 = _mulx_u64(x296, 0xffffffffffffffffL, &x309);
+ { uint64_t x312; uint64_t x311 = _mulx_u64(x296, 0xffffffffffffffffL, &x312);
+ { uint64_t x315; uint64_t x314 = _mulx_u64(x296, 0xffffffffffffffffL, &x315);
+ { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x300, x302, &x317);
+ { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
+ { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x306, x308, &x323);
+ { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x309, x311, &x326);
+ { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x312, x314, &x329);
+ { uint64_t x332; uint8_t _ = _addcarryx_u64(0x0, x330, x315, &x332);
+ { uint64_t _; uint8_t x336 = _addcarryx_u64(0x0, x275, x299, &_);
+ { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x278, x317, &x338);
+ { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x281, x320, &x341);
+ { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x284, x323, &x344);
+ { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x287, x326, &x347);
+ { uint64_t x350; uint8_t x351 = _addcarryx_u64(x348, x290, x329, &x350);
+ { uint64_t x353; uint8_t x354 = _addcarryx_u64(x351, x293, x332, &x353);
+ { uint8_t x355 = (x354 + x294);
+ { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x15, &x358);
+ { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x17, &x361);
+ { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x19, &x364);
+ { uint64_t x367; uint64_t x366 = _mulx_u64(x11, x21, &x367);
+ { uint64_t x370; uint64_t x369 = _mulx_u64(x11, x23, &x370);
+ { uint64_t x373; uint64_t x372 = _mulx_u64(x11, x22, &x373);
+ { uint64_t x375; uint8_t x376 = _addcarryx_u64(0x0, x358, x360, &x375);
+ { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
+ { uint64_t x381; uint8_t x382 = _addcarryx_u64(x379, x364, x366, &x381);
+ { uint64_t x384; uint8_t x385 = _addcarryx_u64(x382, x367, x369, &x384);
+ { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x370, x372, &x387);
+ { uint64_t x390; uint8_t _ = _addcarryx_u64(0x0, x388, x373, &x390);
+ { uint64_t x393; uint8_t x394 = _addcarryx_u64(0x0, x338, x357, &x393);
+ { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
+ { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
+ { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x347, x381, &x402);
+ { uint64_t x405; uint8_t x406 = _addcarryx_u64(x403, x350, x384, &x405);
+ { uint64_t x408; uint8_t x409 = _addcarryx_u64(x406, x353, x387, &x408);
+ { uint64_t x411; uint8_t x412 = _addcarryx_u64(x409, x355, x390, &x411);
+ { uint64_t _; uint64_t x414 = _mulx_u64(x393, 0x100000001, &_);
+ { uint64_t x418; uint64_t x417 = _mulx_u64(x414, 0xffffffff, &x418);
+ { uint64_t x421; uint64_t x420 = _mulx_u64(x414, 0xffffffff00000000L, &x421);
+ { uint64_t x424; uint64_t x423 = _mulx_u64(x414, 0xfffffffffffffffeL, &x424);
+ { uint64_t x427; uint64_t x426 = _mulx_u64(x414, 0xffffffffffffffffL, &x427);
+ { uint64_t x430; uint64_t x429 = _mulx_u64(x414, 0xffffffffffffffffL, &x430);
+ { uint64_t x433; uint64_t x432 = _mulx_u64(x414, 0xffffffffffffffffL, &x433);
+ { uint64_t x435; uint8_t x436 = _addcarryx_u64(0x0, x418, x420, &x435);
+ { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x421, x423, &x438);
+ { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x424, x426, &x441);
+ { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x427, x429, &x444);
+ { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x430, x432, &x447);
+ { uint64_t x450; uint8_t _ = _addcarryx_u64(0x0, x448, x433, &x450);
+ { uint64_t _; uint8_t x454 = _addcarryx_u64(0x0, x393, x417, &_);
+ { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x396, x435, &x456);
+ { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x399, x438, &x459);
+ { uint64_t x462; uint8_t x463 = _addcarryx_u64(x460, x402, x441, &x462);
+ { uint64_t x465; uint8_t x466 = _addcarryx_u64(x463, x405, x444, &x465);
+ { uint64_t x468; uint8_t x469 = _addcarryx_u64(x466, x408, x447, &x468);
+ { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x411, x450, &x471);
+ { uint8_t x473 = (x472 + x412);
+ { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x15, &x476);
+ { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x17, &x479);
+ { uint64_t x482; uint64_t x481 = _mulx_u64(x13, x19, &x482);
+ { uint64_t x485; uint64_t x484 = _mulx_u64(x13, x21, &x485);
+ { uint64_t x488; uint64_t x487 = _mulx_u64(x13, x23, &x488);
+ { uint64_t x491; uint64_t x490 = _mulx_u64(x13, x22, &x491);
+ { uint64_t x493; uint8_t x494 = _addcarryx_u64(0x0, x476, x478, &x493);
+ { uint64_t x496; uint8_t x497 = _addcarryx_u64(x494, x479, x481, &x496);
+ { uint64_t x499; uint8_t x500 = _addcarryx_u64(x497, x482, x484, &x499);
+ { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x485, x487, &x502);
+ { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x488, x490, &x505);
+ { uint64_t x508; uint8_t _ = _addcarryx_u64(0x0, x506, x491, &x508);
+ { uint64_t x511; uint8_t x512 = _addcarryx_u64(0x0, x456, x475, &x511);
+ { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
+ { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x462, x496, &x517);
+ { uint64_t x520; uint8_t x521 = _addcarryx_u64(x518, x465, x499, &x520);
+ { uint64_t x523; uint8_t x524 = _addcarryx_u64(x521, x468, x502, &x523);
+ { uint64_t x526; uint8_t x527 = _addcarryx_u64(x524, x471, x505, &x526);
+ { uint64_t x529; uint8_t x530 = _addcarryx_u64(x527, x473, x508, &x529);
+ { uint64_t _; uint64_t x532 = _mulx_u64(x511, 0x100000001, &_);
+ { uint64_t x536; uint64_t x535 = _mulx_u64(x532, 0xffffffff, &x536);
+ { uint64_t x539; uint64_t x538 = _mulx_u64(x532, 0xffffffff00000000L, &x539);
+ { uint64_t x542; uint64_t x541 = _mulx_u64(x532, 0xfffffffffffffffeL, &x542);
+ { uint64_t x545; uint64_t x544 = _mulx_u64(x532, 0xffffffffffffffffL, &x545);
+ { uint64_t x548; uint64_t x547 = _mulx_u64(x532, 0xffffffffffffffffL, &x548);
+ { uint64_t x551; uint64_t x550 = _mulx_u64(x532, 0xffffffffffffffffL, &x551);
+ { uint64_t x553; uint8_t x554 = _addcarryx_u64(0x0, x536, x538, &x553);
+ { uint64_t x556; uint8_t x557 = _addcarryx_u64(x554, x539, x541, &x556);
+ { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x542, x544, &x559);
+ { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x545, x547, &x562);
+ { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x548, x550, &x565);
+ { uint64_t x568; uint8_t _ = _addcarryx_u64(0x0, x566, x551, &x568);
+ { uint64_t _; uint8_t x572 = _addcarryx_u64(0x0, x511, x535, &_);
+ { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x514, x553, &x574);
+ { uint64_t x577; uint8_t x578 = _addcarryx_u64(x575, x517, x556, &x577);
+ { uint64_t x580; uint8_t x581 = _addcarryx_u64(x578, x520, x559, &x580);
+ { uint64_t x583; uint8_t x584 = _addcarryx_u64(x581, x523, x562, &x583);
+ { uint64_t x586; uint8_t x587 = _addcarryx_u64(x584, x526, x565, &x586);
+ { uint64_t x589; uint8_t x590 = _addcarryx_u64(x587, x529, x568, &x589);
+ { uint8_t x591 = (x590 + x530);
+ { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x15, &x594);
+ { uint64_t x597; uint64_t x596 = _mulx_u64(x12, x17, &x597);
+ { uint64_t x600; uint64_t x599 = _mulx_u64(x12, x19, &x600);
+ { uint64_t x603; uint64_t x602 = _mulx_u64(x12, x21, &x603);
+ { uint64_t x606; uint64_t x605 = _mulx_u64(x12, x23, &x606);
+ { uint64_t x609; uint64_t x608 = _mulx_u64(x12, x22, &x609);
+ { uint64_t x611; uint8_t x612 = _addcarryx_u64(0x0, x594, x596, &x611);
+ { uint64_t x614; uint8_t x615 = _addcarryx_u64(x612, x597, x599, &x614);
+ { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x600, x602, &x617);
+ { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x603, x605, &x620);
+ { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x606, x608, &x623);
+ { uint64_t x626; uint8_t _ = _addcarryx_u64(0x0, x624, x609, &x626);
+ { uint64_t x629; uint8_t x630 = _addcarryx_u64(0x0, x574, x593, &x629);
+ { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x577, x611, &x632);
+ { uint64_t x635; uint8_t x636 = _addcarryx_u64(x633, x580, x614, &x635);
+ { uint64_t x638; uint8_t x639 = _addcarryx_u64(x636, x583, x617, &x638);
+ { uint64_t x641; uint8_t x642 = _addcarryx_u64(x639, x586, x620, &x641);
+ { uint64_t x644; uint8_t x645 = _addcarryx_u64(x642, x589, x623, &x644);
+ { uint64_t x647; uint8_t x648 = _addcarryx_u64(x645, x591, x626, &x647);
+ { uint64_t _; uint64_t x650 = _mulx_u64(x629, 0x100000001, &_);
+ { uint64_t x654; uint64_t x653 = _mulx_u64(x650, 0xffffffff, &x654);
+ { uint64_t x657; uint64_t x656 = _mulx_u64(x650, 0xffffffff00000000L, &x657);
+ { uint64_t x660; uint64_t x659 = _mulx_u64(x650, 0xfffffffffffffffeL, &x660);
+ { uint64_t x663; uint64_t x662 = _mulx_u64(x650, 0xffffffffffffffffL, &x663);
+ { uint64_t x666; uint64_t x665 = _mulx_u64(x650, 0xffffffffffffffffL, &x666);
+ { uint64_t x669; uint64_t x668 = _mulx_u64(x650, 0xffffffffffffffffL, &x669);
+ { uint64_t x671; uint8_t x672 = _addcarryx_u64(0x0, x654, x656, &x671);
+ { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x657, x659, &x674);
+ { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x660, x662, &x677);
+ { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x663, x665, &x680);
+ { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x666, x668, &x683);
+ { uint64_t x686; uint8_t _ = _addcarryx_u64(0x0, x684, x669, &x686);
+ { uint64_t _; uint8_t x690 = _addcarryx_u64(0x0, x629, x653, &_);
+ { uint64_t x692; uint8_t x693 = _addcarryx_u64(x690, x632, x671, &x692);
+ { uint64_t x695; uint8_t x696 = _addcarryx_u64(x693, x635, x674, &x695);
+ { uint64_t x698; uint8_t x699 = _addcarryx_u64(x696, x638, x677, &x698);
+ { uint64_t x701; uint8_t x702 = _addcarryx_u64(x699, x641, x680, &x701);
+ { uint64_t x704; uint8_t x705 = _addcarryx_u64(x702, x644, x683, &x704);
+ { uint64_t x707; uint8_t x708 = _addcarryx_u64(x705, x647, x686, &x707);
+ { uint8_t x709 = (x708 + x648);
+ { uint64_t x711; uint8_t x712 = _subborrow_u64(0x0, x692, 0xffffffff, &x711);
+ { uint64_t x714; uint8_t x715 = _subborrow_u64(x712, x695, 0xffffffff00000000L, &x714);
+ { uint64_t x717; uint8_t x718 = _subborrow_u64(x715, x698, 0xfffffffffffffffeL, &x717);
+ { uint64_t x720; uint8_t x721 = _subborrow_u64(x718, x701, 0xffffffffffffffffL, &x720);
+ { uint64_t x723; uint8_t x724 = _subborrow_u64(x721, x704, 0xffffffffffffffffL, &x723);
+ { uint64_t x726; uint8_t x727 = _subborrow_u64(x724, x707, 0xffffffffffffffffL, &x726);
+ { uint64_t _; uint8_t x730 = _subborrow_u64(x727, x709, 0x0, &_);
+ { uint64_t x731 = cmovznz64(x730, x726, x707);
+ { uint64_t x732 = cmovznz64(x730, x723, x704);
+ { uint64_t x733 = cmovznz64(x730, x720, x701);
+ { uint64_t x734 = cmovznz64(x730, x717, x698);
+ { uint64_t x735 = cmovznz64(x730, x714, x695);
+ { uint64_t x736 = cmovznz64(x730, x711, x692);
+ out[0] = x736;
+ out[1] = x735;
+ out[2] = x734;
+ out[3] = x733;
+ out[4] = x732;
+ out[5] = x731;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femulDisplay.log b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femulDisplay.log
new file mode 100644
index 000000000..bda309185
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/femulDisplay.log
@@ -0,0 +1,252 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
+ uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
+ uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
+ uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
+ uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
+ uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
+ uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
+ uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
+ uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
+ uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
+ uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
+ uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
+ uint64_t x61, uint64_t _ = mulx_u64(x25, 0x100000001);
+ uint64_t x64, uint64_t x65 = mulx_u64(x61, 0xffffffff);
+ uint64_t x67, uint64_t x68 = mulx_u64(x61, 0xffffffff00000000L);
+ uint64_t x70, uint64_t x71 = mulx_u64(x61, 0xfffffffffffffffeL);
+ uint64_t x73, uint64_t x74 = mulx_u64(x61, 0xffffffffffffffffL);
+ uint64_t x76, uint64_t x77 = mulx_u64(x61, 0xffffffffffffffffL);
+ uint64_t x79, uint64_t x80 = mulx_u64(x61, 0xffffffffffffffffL);
+ uint64_t x82, uint8_t x83 = addcarryx_u64(0x0, x65, x67);
+ uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
+ uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
+ uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
+ uint64_t x94, uint8_t x95 = addcarryx_u64(x92, x77, x79);
+ uint64_t x97, uint8_t _ = addcarryx_u64(0x0, x95, x80);
+ uint64_t _, uint8_t x101 = addcarryx_u64(0x0, x25, x64);
+ uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x43, x82);
+ uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x46, x85);
+ uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x49, x88);
+ uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x52, x91);
+ uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x55, x94);
+ uint64_t x118, uint8_t x119 = addcarryx_u64(x116, x58, x97);
+ uint64_t x121, uint64_t x122 = mulx_u64(x7, x15);
+ uint64_t x124, uint64_t x125 = mulx_u64(x7, x17);
+ uint64_t x127, uint64_t x128 = mulx_u64(x7, x19);
+ uint64_t x130, uint64_t x131 = mulx_u64(x7, x21);
+ uint64_t x133, uint64_t x134 = mulx_u64(x7, x23);
+ uint64_t x136, uint64_t x137 = mulx_u64(x7, x22);
+ uint64_t x139, uint8_t x140 = addcarryx_u64(0x0, x122, x124);
+ uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
+ uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
+ uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
+ uint64_t x151, uint8_t x152 = addcarryx_u64(x149, x134, x136);
+ uint64_t x154, uint8_t _ = addcarryx_u64(0x0, x152, x137);
+ uint64_t x157, uint8_t x158 = addcarryx_u64(0x0, x103, x121);
+ uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
+ uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
+ uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
+ uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
+ uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x118, x151);
+ uint64_t x175, uint8_t x176 = addcarryx_u64(x173, x119, x154);
+ uint64_t x178, uint64_t _ = mulx_u64(x157, 0x100000001);
+ uint64_t x181, uint64_t x182 = mulx_u64(x178, 0xffffffff);
+ uint64_t x184, uint64_t x185 = mulx_u64(x178, 0xffffffff00000000L);
+ uint64_t x187, uint64_t x188 = mulx_u64(x178, 0xfffffffffffffffeL);
+ uint64_t x190, uint64_t x191 = mulx_u64(x178, 0xffffffffffffffffL);
+ uint64_t x193, uint64_t x194 = mulx_u64(x178, 0xffffffffffffffffL);
+ uint64_t x196, uint64_t x197 = mulx_u64(x178, 0xffffffffffffffffL);
+ uint64_t x199, uint8_t x200 = addcarryx_u64(0x0, x182, x184);
+ uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
+ uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
+ uint64_t x208, uint8_t x209 = addcarryx_u64(x206, x191, x193);
+ uint64_t x211, uint8_t x212 = addcarryx_u64(x209, x194, x196);
+ uint64_t x214, uint8_t _ = addcarryx_u64(0x0, x212, x197);
+ uint64_t _, uint8_t x218 = addcarryx_u64(0x0, x157, x181);
+ uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x160, x199);
+ uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x163, x202);
+ uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x166, x205);
+ uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x169, x208);
+ uint64_t x232, uint8_t x233 = addcarryx_u64(x230, x172, x211);
+ uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x175, x214);
+ uint8_t x237 = (x236 + x176);
+ uint64_t x239, uint64_t x240 = mulx_u64(x9, x15);
+ uint64_t x242, uint64_t x243 = mulx_u64(x9, x17);
+ uint64_t x245, uint64_t x246 = mulx_u64(x9, x19);
+ uint64_t x248, uint64_t x249 = mulx_u64(x9, x21);
+ uint64_t x251, uint64_t x252 = mulx_u64(x9, x23);
+ uint64_t x254, uint64_t x255 = mulx_u64(x9, x22);
+ uint64_t x257, uint8_t x258 = addcarryx_u64(0x0, x240, x242);
+ uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
+ uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
+ uint64_t x266, uint8_t x267 = addcarryx_u64(x264, x249, x251);
+ uint64_t x269, uint8_t x270 = addcarryx_u64(x267, x252, x254);
+ uint64_t x272, uint8_t _ = addcarryx_u64(0x0, x270, x255);
+ uint64_t x275, uint8_t x276 = addcarryx_u64(0x0, x220, x239);
+ uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
+ uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
+ uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
+ uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x232, x266);
+ uint64_t x290, uint8_t x291 = addcarryx_u64(x288, x235, x269);
+ uint64_t x293, uint8_t x294 = addcarryx_u64(x291, x237, x272);
+ uint64_t x296, uint64_t _ = mulx_u64(x275, 0x100000001);
+ uint64_t x299, uint64_t x300 = mulx_u64(x296, 0xffffffff);
+ uint64_t x302, uint64_t x303 = mulx_u64(x296, 0xffffffff00000000L);
+ uint64_t x305, uint64_t x306 = mulx_u64(x296, 0xfffffffffffffffeL);
+ uint64_t x308, uint64_t x309 = mulx_u64(x296, 0xffffffffffffffffL);
+ uint64_t x311, uint64_t x312 = mulx_u64(x296, 0xffffffffffffffffL);
+ uint64_t x314, uint64_t x315 = mulx_u64(x296, 0xffffffffffffffffL);
+ uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x300, x302);
+ uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
+ uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x306, x308);
+ uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x309, x311);
+ uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x312, x314);
+ uint64_t x332, uint8_t _ = addcarryx_u64(0x0, x330, x315);
+ uint64_t _, uint8_t x336 = addcarryx_u64(0x0, x275, x299);
+ uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x278, x317);
+ uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x281, x320);
+ uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x284, x323);
+ uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x287, x326);
+ uint64_t x350, uint8_t x351 = addcarryx_u64(x348, x290, x329);
+ uint64_t x353, uint8_t x354 = addcarryx_u64(x351, x293, x332);
+ uint8_t x355 = (x354 + x294);
+ uint64_t x357, uint64_t x358 = mulx_u64(x11, x15);
+ uint64_t x360, uint64_t x361 = mulx_u64(x11, x17);
+ uint64_t x363, uint64_t x364 = mulx_u64(x11, x19);
+ uint64_t x366, uint64_t x367 = mulx_u64(x11, x21);
+ uint64_t x369, uint64_t x370 = mulx_u64(x11, x23);
+ uint64_t x372, uint64_t x373 = mulx_u64(x11, x22);
+ uint64_t x375, uint8_t x376 = addcarryx_u64(0x0, x358, x360);
+ uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
+ uint64_t x381, uint8_t x382 = addcarryx_u64(x379, x364, x366);
+ uint64_t x384, uint8_t x385 = addcarryx_u64(x382, x367, x369);
+ uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x370, x372);
+ uint64_t x390, uint8_t _ = addcarryx_u64(0x0, x388, x373);
+ uint64_t x393, uint8_t x394 = addcarryx_u64(0x0, x338, x357);
+ uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
+ uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
+ uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x347, x381);
+ uint64_t x405, uint8_t x406 = addcarryx_u64(x403, x350, x384);
+ uint64_t x408, uint8_t x409 = addcarryx_u64(x406, x353, x387);
+ uint64_t x411, uint8_t x412 = addcarryx_u64(x409, x355, x390);
+ uint64_t x414, uint64_t _ = mulx_u64(x393, 0x100000001);
+ uint64_t x417, uint64_t x418 = mulx_u64(x414, 0xffffffff);
+ uint64_t x420, uint64_t x421 = mulx_u64(x414, 0xffffffff00000000L);
+ uint64_t x423, uint64_t x424 = mulx_u64(x414, 0xfffffffffffffffeL);
+ uint64_t x426, uint64_t x427 = mulx_u64(x414, 0xffffffffffffffffL);
+ uint64_t x429, uint64_t x430 = mulx_u64(x414, 0xffffffffffffffffL);
+ uint64_t x432, uint64_t x433 = mulx_u64(x414, 0xffffffffffffffffL);
+ uint64_t x435, uint8_t x436 = addcarryx_u64(0x0, x418, x420);
+ uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x421, x423);
+ uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x424, x426);
+ uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x427, x429);
+ uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x430, x432);
+ uint64_t x450, uint8_t _ = addcarryx_u64(0x0, x448, x433);
+ uint64_t _, uint8_t x454 = addcarryx_u64(0x0, x393, x417);
+ uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x396, x435);
+ uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x399, x438);
+ uint64_t x462, uint8_t x463 = addcarryx_u64(x460, x402, x441);
+ uint64_t x465, uint8_t x466 = addcarryx_u64(x463, x405, x444);
+ uint64_t x468, uint8_t x469 = addcarryx_u64(x466, x408, x447);
+ uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x411, x450);
+ uint8_t x473 = (x472 + x412);
+ uint64_t x475, uint64_t x476 = mulx_u64(x13, x15);
+ uint64_t x478, uint64_t x479 = mulx_u64(x13, x17);
+ uint64_t x481, uint64_t x482 = mulx_u64(x13, x19);
+ uint64_t x484, uint64_t x485 = mulx_u64(x13, x21);
+ uint64_t x487, uint64_t x488 = mulx_u64(x13, x23);
+ uint64_t x490, uint64_t x491 = mulx_u64(x13, x22);
+ uint64_t x493, uint8_t x494 = addcarryx_u64(0x0, x476, x478);
+ uint64_t x496, uint8_t x497 = addcarryx_u64(x494, x479, x481);
+ uint64_t x499, uint8_t x500 = addcarryx_u64(x497, x482, x484);
+ uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x485, x487);
+ uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x488, x490);
+ uint64_t x508, uint8_t _ = addcarryx_u64(0x0, x506, x491);
+ uint64_t x511, uint8_t x512 = addcarryx_u64(0x0, x456, x475);
+ uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
+ uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x462, x496);
+ uint64_t x520, uint8_t x521 = addcarryx_u64(x518, x465, x499);
+ uint64_t x523, uint8_t x524 = addcarryx_u64(x521, x468, x502);
+ uint64_t x526, uint8_t x527 = addcarryx_u64(x524, x471, x505);
+ uint64_t x529, uint8_t x530 = addcarryx_u64(x527, x473, x508);
+ uint64_t x532, uint64_t _ = mulx_u64(x511, 0x100000001);
+ uint64_t x535, uint64_t x536 = mulx_u64(x532, 0xffffffff);
+ uint64_t x538, uint64_t x539 = mulx_u64(x532, 0xffffffff00000000L);
+ uint64_t x541, uint64_t x542 = mulx_u64(x532, 0xfffffffffffffffeL);
+ uint64_t x544, uint64_t x545 = mulx_u64(x532, 0xffffffffffffffffL);
+ uint64_t x547, uint64_t x548 = mulx_u64(x532, 0xffffffffffffffffL);
+ uint64_t x550, uint64_t x551 = mulx_u64(x532, 0xffffffffffffffffL);
+ uint64_t x553, uint8_t x554 = addcarryx_u64(0x0, x536, x538);
+ uint64_t x556, uint8_t x557 = addcarryx_u64(x554, x539, x541);
+ uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x542, x544);
+ uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x545, x547);
+ uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x548, x550);
+ uint64_t x568, uint8_t _ = addcarryx_u64(0x0, x566, x551);
+ uint64_t _, uint8_t x572 = addcarryx_u64(0x0, x511, x535);
+ uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x514, x553);
+ uint64_t x577, uint8_t x578 = addcarryx_u64(x575, x517, x556);
+ uint64_t x580, uint8_t x581 = addcarryx_u64(x578, x520, x559);
+ uint64_t x583, uint8_t x584 = addcarryx_u64(x581, x523, x562);
+ uint64_t x586, uint8_t x587 = addcarryx_u64(x584, x526, x565);
+ uint64_t x589, uint8_t x590 = addcarryx_u64(x587, x529, x568);
+ uint8_t x591 = (x590 + x530);
+ uint64_t x593, uint64_t x594 = mulx_u64(x12, x15);
+ uint64_t x596, uint64_t x597 = mulx_u64(x12, x17);
+ uint64_t x599, uint64_t x600 = mulx_u64(x12, x19);
+ uint64_t x602, uint64_t x603 = mulx_u64(x12, x21);
+ uint64_t x605, uint64_t x606 = mulx_u64(x12, x23);
+ uint64_t x608, uint64_t x609 = mulx_u64(x12, x22);
+ uint64_t x611, uint8_t x612 = addcarryx_u64(0x0, x594, x596);
+ uint64_t x614, uint8_t x615 = addcarryx_u64(x612, x597, x599);
+ uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x600, x602);
+ uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x603, x605);
+ uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x606, x608);
+ uint64_t x626, uint8_t _ = addcarryx_u64(0x0, x624, x609);
+ uint64_t x629, uint8_t x630 = addcarryx_u64(0x0, x574, x593);
+ uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x577, x611);
+ uint64_t x635, uint8_t x636 = addcarryx_u64(x633, x580, x614);
+ uint64_t x638, uint8_t x639 = addcarryx_u64(x636, x583, x617);
+ uint64_t x641, uint8_t x642 = addcarryx_u64(x639, x586, x620);
+ uint64_t x644, uint8_t x645 = addcarryx_u64(x642, x589, x623);
+ uint64_t x647, uint8_t x648 = addcarryx_u64(x645, x591, x626);
+ uint64_t x650, uint64_t _ = mulx_u64(x629, 0x100000001);
+ uint64_t x653, uint64_t x654 = mulx_u64(x650, 0xffffffff);
+ uint64_t x656, uint64_t x657 = mulx_u64(x650, 0xffffffff00000000L);
+ uint64_t x659, uint64_t x660 = mulx_u64(x650, 0xfffffffffffffffeL);
+ uint64_t x662, uint64_t x663 = mulx_u64(x650, 0xffffffffffffffffL);
+ uint64_t x665, uint64_t x666 = mulx_u64(x650, 0xffffffffffffffffL);
+ uint64_t x668, uint64_t x669 = mulx_u64(x650, 0xffffffffffffffffL);
+ uint64_t x671, uint8_t x672 = addcarryx_u64(0x0, x654, x656);
+ uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x657, x659);
+ uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x660, x662);
+ uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x663, x665);
+ uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x666, x668);
+ uint64_t x686, uint8_t _ = addcarryx_u64(0x0, x684, x669);
+ uint64_t _, uint8_t x690 = addcarryx_u64(0x0, x629, x653);
+ uint64_t x692, uint8_t x693 = addcarryx_u64(x690, x632, x671);
+ uint64_t x695, uint8_t x696 = addcarryx_u64(x693, x635, x674);
+ uint64_t x698, uint8_t x699 = addcarryx_u64(x696, x638, x677);
+ uint64_t x701, uint8_t x702 = addcarryx_u64(x699, x641, x680);
+ uint64_t x704, uint8_t x705 = addcarryx_u64(x702, x644, x683);
+ uint64_t x707, uint8_t x708 = addcarryx_u64(x705, x647, x686);
+ uint8_t x709 = (x708 + x648);
+ uint64_t x711, uint8_t x712 = subborrow_u64(0x0, x692, 0xffffffff);
+ uint64_t x714, uint8_t x715 = subborrow_u64(x712, x695, 0xffffffff00000000L);
+ uint64_t x717, uint8_t x718 = subborrow_u64(x715, x698, 0xfffffffffffffffeL);
+ uint64_t x720, uint8_t x721 = subborrow_u64(x718, x701, 0xffffffffffffffffL);
+ uint64_t x723, uint8_t x724 = subborrow_u64(x721, x704, 0xffffffffffffffffL);
+ uint64_t x726, uint8_t x727 = subborrow_u64(x724, x707, 0xffffffffffffffffL);
+ uint64_t _, uint8_t x730 = subborrow_u64(x727, x709, 0x0);
+ uint64_t x731 = cmovznz64(x730, x726, x707);
+ uint64_t x732 = cmovznz64(x730, x723, x704);
+ uint64_t x733 = cmovznz64(x730, x720, x701);
+ uint64_t x734 = cmovznz64(x730, x717, x698);
+ uint64_t x735 = cmovznz64(x730, x714, x695);
+ uint64_t x736 = cmovznz64(x730, x711, x692);
+ return (x731, x732, x733, x734, x735, x736))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenz.c b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenz.c
new file mode 100644
index 000000000..c93f74257
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenz.c
@@ -0,0 +1,15 @@
+static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x11 = (x10 | x9);
+ { uint64_t x12 = (x8 | x11);
+ { uint64_t x13 = (x6 | x12);
+ { uint64_t x14 = (x4 | x13);
+ { uint64_t x15 = (x2 | x14);
+ out[0] = x15;
+ }}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenzDisplay.log b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenzDisplay.log
new file mode 100644
index 000000000..f39f1d91b
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fenzDisplay.log
@@ -0,0 +1,12 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x11 = (x10 | x9);
+ uint64_t x12 = (x8 | x11);
+ uint64_t x13 = (x6 | x12);
+ uint64_t x14 = (x4 | x13);
+ uint64_t x15 = (x2 | x14);
+ return x15)
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feopp.c b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feopp.c
new file mode 100644
index 000000000..51a571f4d
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feopp.c
@@ -0,0 +1,34 @@
+static void feopp(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
+ { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
+ { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
+ { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
+ { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
+ { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0xffffffff);
+ { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
+ { uint64_t x34 = (x29 & 0xffffffff00000000L);
+ { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
+ { uint64_t x38 = (x29 & 0xfffffffffffffffeL);
+ { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
+ { uint64_t x42 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
+ { uint64_t x46 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
+ { uint64_t x50 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feoppDisplay.log b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feoppDisplay.log
new file mode 100644
index 000000000..ab3378641
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/feoppDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
+ uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
+ uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
+ uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
+ uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
+ uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0xffffffff);
+ uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
+ uint64_t x34 = (x29 & 0xffffffff00000000L);
+ uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
+ uint64_t x38 = (x29 & 0xfffffffffffffffeL);
+ uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
+ uint64_t x42 = (x29 & 0xffffffffffffffffL);
+ uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
+ uint64_t x46 = (x29 & 0xffffffffffffffffL);
+ uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
+ uint64_t x50 = (x29 & 0xffffffffffffffffL);
+ uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesub.c b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesub.c
new file mode 100644
index 000000000..f14f24207
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesub.c
@@ -0,0 +1,40 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
+ { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
+ { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
+ { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
+ { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
+ { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
+ { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
+ { uint64_t x43 = (x42 & 0xffffffff);
+ { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
+ { uint64_t x47 = (x42 & 0xffffffff00000000L);
+ { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
+ { uint64_t x51 = (x42 & 0xfffffffffffffffeL);
+ { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
+ { uint64_t x55 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
+ { uint64_t x59 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
+ { uint64_t x63 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
+ out[0] = x45;
+ out[1] = x49;
+ out[2] = x53;
+ out[3] = x57;
+ out[4] = x61;
+ out[5] = x65;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesubDisplay.log b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..63da9b2f5
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m2e128m2e96p2e32m1_6limbs/fesubDisplay.log
@@ -0,0 +1,26 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
+ uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
+ uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
+ uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
+ uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
+ uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
+ uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
+ uint64_t x43 = (x42 & 0xffffffff);
+ uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
+ uint64_t x47 = (x42 & 0xffffffff00000000L);
+ uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
+ uint64_t x51 = (x42 & 0xfffffffffffffffeL);
+ uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
+ uint64_t x55 = (x42 & 0xffffffffffffffffL);
+ uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
+ uint64_t x59 = (x42 & 0xffffffffffffffffL);
+ uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
+ uint64_t x63 = (x42 & 0xffffffffffffffffL);
+ uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
+ (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/fesub.c b/src/Specific/montgomery64_2e384m317_6limbs/fesub.c
new file mode 100644
index 000000000..600d8f46f
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/fesub.c
@@ -0,0 +1,40 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
+ { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
+ { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
+ { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
+ { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
+ { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
+ { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
+ { uint64_t x43 = (x42 & 0xfffffffffffffec3L);
+ { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
+ { uint64_t x47 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
+ { uint64_t x51 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
+ { uint64_t x55 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
+ { uint64_t x59 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
+ { uint64_t x63 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
+ out[0] = x45;
+ out[1] = x49;
+ out[2] = x53;
+ out[3] = x57;
+ out[4] = x61;
+ out[5] = x65;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m317_6limbs/fesubDisplay.log b/src/Specific/montgomery64_2e384m317_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..f66a7568e
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m317_6limbs/fesubDisplay.log
@@ -0,0 +1,26 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
+ uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
+ uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
+ uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
+ uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
+ uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
+ uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
+ uint64_t x43 = (x42 & 0xfffffffffffffec3L);
+ uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
+ uint64_t x47 = (x42 & 0xffffffffffffffffL);
+ uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
+ uint64_t x51 = (x42 & 0xffffffffffffffffL);
+ uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
+ uint64_t x55 = (x42 & 0xffffffffffffffffL);
+ uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
+ uint64_t x59 = (x42 & 0xffffffffffffffffL);
+ uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
+ uint64_t x63 = (x42 & 0xffffffffffffffffL);
+ uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
+ (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feadd.c b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feadd.c
new file mode 100644
index 000000000..f7bc3c4f8
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feadd.c
@@ -0,0 +1,40 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
+ { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
+ { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
+ { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
+ { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
+ { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
+ { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffffffffffffL, &x43);
+ { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
+ { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
+ { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
+ { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
+ { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0xfffaffffffffffffL, &x58);
+ { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
+ { uint64_t x63 = cmovznz64(x62, x58, x40);
+ { uint64_t x64 = cmovznz64(x62, x55, x37);
+ { uint64_t x65 = cmovznz64(x62, x52, x34);
+ { uint64_t x66 = cmovznz64(x62, x49, x31);
+ { uint64_t x67 = cmovznz64(x62, x46, x28);
+ { uint64_t x68 = cmovznz64(x62, x43, x25);
+ out[0] = x68;
+ out[1] = x67;
+ out[2] = x66;
+ out[3] = x65;
+ out[4] = x64;
+ out[5] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feaddDisplay.log b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..222cf00b2
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feaddDisplay.log
@@ -0,0 +1,26 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
+ uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
+ uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
+ uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
+ uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
+ uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
+ uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffffffffffffL);
+ uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
+ uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
+ uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
+ uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
+ uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0xfffaffffffffffffL);
+ uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
+ uint64_t x63 = cmovznz64(x62, x58, x40);
+ uint64_t x64 = cmovznz64(x62, x55, x37);
+ uint64_t x65 = cmovznz64(x62, x52, x34);
+ uint64_t x66 = cmovznz64(x62, x49, x31);
+ uint64_t x67 = cmovznz64(x62, x46, x28);
+ uint64_t x68 = cmovznz64(x62, x43, x25);
+ return (x63, x64, x65, x66, x67, x68))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femul.c b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femul.c
new file mode 100644
index 000000000..1df4cfe62
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femul.c
@@ -0,0 +1,260 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
+ { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
+ { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
+ { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
+ { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
+ { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
+ { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
+ { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
+ { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
+ { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
+ { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
+ { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
+ { uint64_t x62; uint64_t x61 = _mulx_u64(x25, 0xffffffffffffffffL, &x62);
+ { uint64_t x65; uint64_t x64 = _mulx_u64(x25, 0xffffffffffffffffL, &x65);
+ { uint64_t x68; uint64_t x67 = _mulx_u64(x25, 0xffffffffffffffffL, &x68);
+ { uint64_t x71; uint64_t x70 = _mulx_u64(x25, 0xffffffffffffffffL, &x71);
+ { uint64_t x74; uint64_t x73 = _mulx_u64(x25, 0xffffffffffffffffL, &x74);
+ { uint64_t x77; uint64_t x76 = _mulx_u64(x25, 0xfffaffffffffffffL, &x77);
+ { uint64_t x79; uint8_t x80 = _addcarryx_u64(0x0, x62, x64, &x79);
+ { uint64_t x82; uint8_t x83 = _addcarryx_u64(x80, x65, x67, &x82);
+ { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
+ { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
+ { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
+ { uint64_t x94; uint8_t _ = _addcarryx_u64(0x0, x92, x77, &x94);
+ { uint64_t _; uint8_t x98 = _addcarryx_u64(0x0, x25, x61, &_);
+ { uint64_t x100; uint8_t x101 = _addcarryx_u64(x98, x43, x79, &x100);
+ { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x46, x82, &x103);
+ { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x49, x85, &x106);
+ { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x52, x88, &x109);
+ { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x55, x91, &x112);
+ { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x58, x94, &x115);
+ { uint64_t x119; uint64_t x118 = _mulx_u64(x7, x15, &x119);
+ { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x17, &x122);
+ { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x19, &x125);
+ { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x21, &x128);
+ { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x23, &x131);
+ { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x22, &x134);
+ { uint64_t x136; uint8_t x137 = _addcarryx_u64(0x0, x119, x121, &x136);
+ { uint64_t x139; uint8_t x140 = _addcarryx_u64(x137, x122, x124, &x139);
+ { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
+ { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
+ { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
+ { uint64_t x151; uint8_t _ = _addcarryx_u64(0x0, x149, x134, &x151);
+ { uint64_t x154; uint8_t x155 = _addcarryx_u64(0x0, x100, x118, &x154);
+ { uint64_t x157; uint8_t x158 = _addcarryx_u64(x155, x103, x136, &x157);
+ { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
+ { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
+ { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
+ { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
+ { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x116, x151, &x172);
+ { uint64_t x176; uint64_t x175 = _mulx_u64(x154, 0xffffffffffffffffL, &x176);
+ { uint64_t x179; uint64_t x178 = _mulx_u64(x154, 0xffffffffffffffffL, &x179);
+ { uint64_t x182; uint64_t x181 = _mulx_u64(x154, 0xffffffffffffffffL, &x182);
+ { uint64_t x185; uint64_t x184 = _mulx_u64(x154, 0xffffffffffffffffL, &x185);
+ { uint64_t x188; uint64_t x187 = _mulx_u64(x154, 0xffffffffffffffffL, &x188);
+ { uint64_t x191; uint64_t x190 = _mulx_u64(x154, 0xfffaffffffffffffL, &x191);
+ { uint64_t x193; uint8_t x194 = _addcarryx_u64(0x0, x176, x178, &x193);
+ { uint64_t x196; uint8_t x197 = _addcarryx_u64(x194, x179, x181, &x196);
+ { uint64_t x199; uint8_t x200 = _addcarryx_u64(x197, x182, x184, &x199);
+ { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
+ { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
+ { uint64_t x208; uint8_t _ = _addcarryx_u64(0x0, x206, x191, &x208);
+ { uint64_t _; uint8_t x212 = _addcarryx_u64(0x0, x154, x175, &_);
+ { uint64_t x214; uint8_t x215 = _addcarryx_u64(x212, x157, x193, &x214);
+ { uint64_t x217; uint8_t x218 = _addcarryx_u64(x215, x160, x196, &x217);
+ { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x163, x199, &x220);
+ { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x166, x202, &x223);
+ { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x169, x205, &x226);
+ { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x172, x208, &x229);
+ { uint8_t x231 = (x230 + x173);
+ { uint64_t x234; uint64_t x233 = _mulx_u64(x9, x15, &x234);
+ { uint64_t x237; uint64_t x236 = _mulx_u64(x9, x17, &x237);
+ { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x19, &x240);
+ { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x21, &x243);
+ { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x23, &x246);
+ { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x22, &x249);
+ { uint64_t x251; uint8_t x252 = _addcarryx_u64(0x0, x234, x236, &x251);
+ { uint64_t x254; uint8_t x255 = _addcarryx_u64(x252, x237, x239, &x254);
+ { uint64_t x257; uint8_t x258 = _addcarryx_u64(x255, x240, x242, &x257);
+ { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
+ { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
+ { uint64_t x266; uint8_t _ = _addcarryx_u64(0x0, x264, x249, &x266);
+ { uint64_t x269; uint8_t x270 = _addcarryx_u64(0x0, x214, x233, &x269);
+ { uint64_t x272; uint8_t x273 = _addcarryx_u64(x270, x217, x251, &x272);
+ { uint64_t x275; uint8_t x276 = _addcarryx_u64(x273, x220, x254, &x275);
+ { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
+ { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
+ { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
+ { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x231, x266, &x287);
+ { uint64_t x291; uint64_t x290 = _mulx_u64(x269, 0xffffffffffffffffL, &x291);
+ { uint64_t x294; uint64_t x293 = _mulx_u64(x269, 0xffffffffffffffffL, &x294);
+ { uint64_t x297; uint64_t x296 = _mulx_u64(x269, 0xffffffffffffffffL, &x297);
+ { uint64_t x300; uint64_t x299 = _mulx_u64(x269, 0xffffffffffffffffL, &x300);
+ { uint64_t x303; uint64_t x302 = _mulx_u64(x269, 0xffffffffffffffffL, &x303);
+ { uint64_t x306; uint64_t x305 = _mulx_u64(x269, 0xfffaffffffffffffL, &x306);
+ { uint64_t x308; uint8_t x309 = _addcarryx_u64(0x0, x291, x293, &x308);
+ { uint64_t x311; uint8_t x312 = _addcarryx_u64(x309, x294, x296, &x311);
+ { uint64_t x314; uint8_t x315 = _addcarryx_u64(x312, x297, x299, &x314);
+ { uint64_t x317; uint8_t x318 = _addcarryx_u64(x315, x300, x302, &x317);
+ { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
+ { uint64_t x323; uint8_t _ = _addcarryx_u64(0x0, x321, x306, &x323);
+ { uint64_t _; uint8_t x327 = _addcarryx_u64(0x0, x269, x290, &_);
+ { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x272, x308, &x329);
+ { uint64_t x332; uint8_t x333 = _addcarryx_u64(x330, x275, x311, &x332);
+ { uint64_t x335; uint8_t x336 = _addcarryx_u64(x333, x278, x314, &x335);
+ { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x281, x317, &x338);
+ { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x284, x320, &x341);
+ { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x287, x323, &x344);
+ { uint8_t x346 = (x345 + x288);
+ { uint64_t x349; uint64_t x348 = _mulx_u64(x11, x15, &x349);
+ { uint64_t x352; uint64_t x351 = _mulx_u64(x11, x17, &x352);
+ { uint64_t x355; uint64_t x354 = _mulx_u64(x11, x19, &x355);
+ { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x21, &x358);
+ { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x23, &x361);
+ { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x22, &x364);
+ { uint64_t x366; uint8_t x367 = _addcarryx_u64(0x0, x349, x351, &x366);
+ { uint64_t x369; uint8_t x370 = _addcarryx_u64(x367, x352, x354, &x369);
+ { uint64_t x372; uint8_t x373 = _addcarryx_u64(x370, x355, x357, &x372);
+ { uint64_t x375; uint8_t x376 = _addcarryx_u64(x373, x358, x360, &x375);
+ { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
+ { uint64_t x381; uint8_t _ = _addcarryx_u64(0x0, x379, x364, &x381);
+ { uint64_t x384; uint8_t x385 = _addcarryx_u64(0x0, x329, x348, &x384);
+ { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x332, x366, &x387);
+ { uint64_t x390; uint8_t x391 = _addcarryx_u64(x388, x335, x369, &x390);
+ { uint64_t x393; uint8_t x394 = _addcarryx_u64(x391, x338, x372, &x393);
+ { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
+ { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
+ { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x346, x381, &x402);
+ { uint64_t x406; uint64_t x405 = _mulx_u64(x384, 0xffffffffffffffffL, &x406);
+ { uint64_t x409; uint64_t x408 = _mulx_u64(x384, 0xffffffffffffffffL, &x409);
+ { uint64_t x412; uint64_t x411 = _mulx_u64(x384, 0xffffffffffffffffL, &x412);
+ { uint64_t x415; uint64_t x414 = _mulx_u64(x384, 0xffffffffffffffffL, &x415);
+ { uint64_t x418; uint64_t x417 = _mulx_u64(x384, 0xffffffffffffffffL, &x418);
+ { uint64_t x421; uint64_t x420 = _mulx_u64(x384, 0xfffaffffffffffffL, &x421);
+ { uint64_t x423; uint8_t x424 = _addcarryx_u64(0x0, x406, x408, &x423);
+ { uint64_t x426; uint8_t x427 = _addcarryx_u64(x424, x409, x411, &x426);
+ { uint64_t x429; uint8_t x430 = _addcarryx_u64(x427, x412, x414, &x429);
+ { uint64_t x432; uint8_t x433 = _addcarryx_u64(x430, x415, x417, &x432);
+ { uint64_t x435; uint8_t x436 = _addcarryx_u64(x433, x418, x420, &x435);
+ { uint64_t x438; uint8_t _ = _addcarryx_u64(0x0, x436, x421, &x438);
+ { uint64_t _; uint8_t x442 = _addcarryx_u64(0x0, x384, x405, &_);
+ { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x387, x423, &x444);
+ { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x390, x426, &x447);
+ { uint64_t x450; uint8_t x451 = _addcarryx_u64(x448, x393, x429, &x450);
+ { uint64_t x453; uint8_t x454 = _addcarryx_u64(x451, x396, x432, &x453);
+ { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x399, x435, &x456);
+ { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x402, x438, &x459);
+ { uint8_t x461 = (x460 + x403);
+ { uint64_t x464; uint64_t x463 = _mulx_u64(x13, x15, &x464);
+ { uint64_t x467; uint64_t x466 = _mulx_u64(x13, x17, &x467);
+ { uint64_t x470; uint64_t x469 = _mulx_u64(x13, x19, &x470);
+ { uint64_t x473; uint64_t x472 = _mulx_u64(x13, x21, &x473);
+ { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x23, &x476);
+ { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x22, &x479);
+ { uint64_t x481; uint8_t x482 = _addcarryx_u64(0x0, x464, x466, &x481);
+ { uint64_t x484; uint8_t x485 = _addcarryx_u64(x482, x467, x469, &x484);
+ { uint64_t x487; uint8_t x488 = _addcarryx_u64(x485, x470, x472, &x487);
+ { uint64_t x490; uint8_t x491 = _addcarryx_u64(x488, x473, x475, &x490);
+ { uint64_t x493; uint8_t x494 = _addcarryx_u64(x491, x476, x478, &x493);
+ { uint64_t x496; uint8_t _ = _addcarryx_u64(0x0, x494, x479, &x496);
+ { uint64_t x499; uint8_t x500 = _addcarryx_u64(0x0, x444, x463, &x499);
+ { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x447, x481, &x502);
+ { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x450, x484, &x505);
+ { uint64_t x508; uint8_t x509 = _addcarryx_u64(x506, x453, x487, &x508);
+ { uint64_t x511; uint8_t x512 = _addcarryx_u64(x509, x456, x490, &x511);
+ { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
+ { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x461, x496, &x517);
+ { uint64_t x521; uint64_t x520 = _mulx_u64(x499, 0xffffffffffffffffL, &x521);
+ { uint64_t x524; uint64_t x523 = _mulx_u64(x499, 0xffffffffffffffffL, &x524);
+ { uint64_t x527; uint64_t x526 = _mulx_u64(x499, 0xffffffffffffffffL, &x527);
+ { uint64_t x530; uint64_t x529 = _mulx_u64(x499, 0xffffffffffffffffL, &x530);
+ { uint64_t x533; uint64_t x532 = _mulx_u64(x499, 0xffffffffffffffffL, &x533);
+ { uint64_t x536; uint64_t x535 = _mulx_u64(x499, 0xfffaffffffffffffL, &x536);
+ { uint64_t x538; uint8_t x539 = _addcarryx_u64(0x0, x521, x523, &x538);
+ { uint64_t x541; uint8_t x542 = _addcarryx_u64(x539, x524, x526, &x541);
+ { uint64_t x544; uint8_t x545 = _addcarryx_u64(x542, x527, x529, &x544);
+ { uint64_t x547; uint8_t x548 = _addcarryx_u64(x545, x530, x532, &x547);
+ { uint64_t x550; uint8_t x551 = _addcarryx_u64(x548, x533, x535, &x550);
+ { uint64_t x553; uint8_t _ = _addcarryx_u64(0x0, x551, x536, &x553);
+ { uint64_t _; uint8_t x557 = _addcarryx_u64(0x0, x499, x520, &_);
+ { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x502, x538, &x559);
+ { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x505, x541, &x562);
+ { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x508, x544, &x565);
+ { uint64_t x568; uint8_t x569 = _addcarryx_u64(x566, x511, x547, &x568);
+ { uint64_t x571; uint8_t x572 = _addcarryx_u64(x569, x514, x550, &x571);
+ { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x517, x553, &x574);
+ { uint8_t x576 = (x575 + x518);
+ { uint64_t x579; uint64_t x578 = _mulx_u64(x12, x15, &x579);
+ { uint64_t x582; uint64_t x581 = _mulx_u64(x12, x17, &x582);
+ { uint64_t x585; uint64_t x584 = _mulx_u64(x12, x19, &x585);
+ { uint64_t x588; uint64_t x587 = _mulx_u64(x12, x21, &x588);
+ { uint64_t x591; uint64_t x590 = _mulx_u64(x12, x23, &x591);
+ { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x22, &x594);
+ { uint64_t x596; uint8_t x597 = _addcarryx_u64(0x0, x579, x581, &x596);
+ { uint64_t x599; uint8_t x600 = _addcarryx_u64(x597, x582, x584, &x599);
+ { uint64_t x602; uint8_t x603 = _addcarryx_u64(x600, x585, x587, &x602);
+ { uint64_t x605; uint8_t x606 = _addcarryx_u64(x603, x588, x590, &x605);
+ { uint64_t x608; uint8_t x609 = _addcarryx_u64(x606, x591, x593, &x608);
+ { uint64_t x611; uint8_t _ = _addcarryx_u64(0x0, x609, x594, &x611);
+ { uint64_t x614; uint8_t x615 = _addcarryx_u64(0x0, x559, x578, &x614);
+ { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x562, x596, &x617);
+ { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x565, x599, &x620);
+ { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x568, x602, &x623);
+ { uint64_t x626; uint8_t x627 = _addcarryx_u64(x624, x571, x605, &x626);
+ { uint64_t x629; uint8_t x630 = _addcarryx_u64(x627, x574, x608, &x629);
+ { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x576, x611, &x632);
+ { uint64_t x636; uint64_t x635 = _mulx_u64(x614, 0xffffffffffffffffL, &x636);
+ { uint64_t x639; uint64_t x638 = _mulx_u64(x614, 0xffffffffffffffffL, &x639);
+ { uint64_t x642; uint64_t x641 = _mulx_u64(x614, 0xffffffffffffffffL, &x642);
+ { uint64_t x645; uint64_t x644 = _mulx_u64(x614, 0xffffffffffffffffL, &x645);
+ { uint64_t x648; uint64_t x647 = _mulx_u64(x614, 0xffffffffffffffffL, &x648);
+ { uint64_t x651; uint64_t x650 = _mulx_u64(x614, 0xfffaffffffffffffL, &x651);
+ { uint64_t x653; uint8_t x654 = _addcarryx_u64(0x0, x636, x638, &x653);
+ { uint64_t x656; uint8_t x657 = _addcarryx_u64(x654, x639, x641, &x656);
+ { uint64_t x659; uint8_t x660 = _addcarryx_u64(x657, x642, x644, &x659);
+ { uint64_t x662; uint8_t x663 = _addcarryx_u64(x660, x645, x647, &x662);
+ { uint64_t x665; uint8_t x666 = _addcarryx_u64(x663, x648, x650, &x665);
+ { uint64_t x668; uint8_t _ = _addcarryx_u64(0x0, x666, x651, &x668);
+ { uint64_t _; uint8_t x672 = _addcarryx_u64(0x0, x614, x635, &_);
+ { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x617, x653, &x674);
+ { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x620, x656, &x677);
+ { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x623, x659, &x680);
+ { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x626, x662, &x683);
+ { uint64_t x686; uint8_t x687 = _addcarryx_u64(x684, x629, x665, &x686);
+ { uint64_t x689; uint8_t x690 = _addcarryx_u64(x687, x632, x668, &x689);
+ { uint8_t x691 = (x690 + x633);
+ { uint64_t x693; uint8_t x694 = _subborrow_u64(0x0, x674, 0xffffffffffffffffL, &x693);
+ { uint64_t x696; uint8_t x697 = _subborrow_u64(x694, x677, 0xffffffffffffffffL, &x696);
+ { uint64_t x699; uint8_t x700 = _subborrow_u64(x697, x680, 0xffffffffffffffffL, &x699);
+ { uint64_t x702; uint8_t x703 = _subborrow_u64(x700, x683, 0xffffffffffffffffL, &x702);
+ { uint64_t x705; uint8_t x706 = _subborrow_u64(x703, x686, 0xffffffffffffffffL, &x705);
+ { uint64_t x708; uint8_t x709 = _subborrow_u64(x706, x689, 0xfffaffffffffffffL, &x708);
+ { uint64_t _; uint8_t x712 = _subborrow_u64(x709, x691, 0x0, &_);
+ { uint64_t x713 = cmovznz64(x712, x708, x689);
+ { uint64_t x714 = cmovznz64(x712, x705, x686);
+ { uint64_t x715 = cmovznz64(x712, x702, x683);
+ { uint64_t x716 = cmovznz64(x712, x699, x680);
+ { uint64_t x717 = cmovznz64(x712, x696, x677);
+ { uint64_t x718 = cmovznz64(x712, x693, x674);
+ out[0] = x718;
+ out[1] = x717;
+ out[2] = x716;
+ out[3] = x715;
+ out[4] = x714;
+ out[5] = x713;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femulDisplay.log b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femulDisplay.log
new file mode 100644
index 000000000..1e07e0934
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/femulDisplay.log
@@ -0,0 +1,246 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
+ uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
+ uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
+ uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
+ uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
+ uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
+ uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
+ uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
+ uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
+ uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
+ uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
+ uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
+ uint64_t x61, uint64_t x62 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x64, uint64_t x65 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x67, uint64_t x68 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x70, uint64_t x71 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x73, uint64_t x74 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x76, uint64_t x77 = mulx_u64(x25, 0xfffaffffffffffffL);
+ uint64_t x79, uint8_t x80 = addcarryx_u64(0x0, x62, x64);
+ uint64_t x82, uint8_t x83 = addcarryx_u64(x80, x65, x67);
+ uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
+ uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
+ uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
+ uint64_t x94, uint8_t _ = addcarryx_u64(0x0, x92, x77);
+ uint64_t _, uint8_t x98 = addcarryx_u64(0x0, x25, x61);
+ uint64_t x100, uint8_t x101 = addcarryx_u64(x98, x43, x79);
+ uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x46, x82);
+ uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x49, x85);
+ uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x52, x88);
+ uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x55, x91);
+ uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x58, x94);
+ uint64_t x118, uint64_t x119 = mulx_u64(x7, x15);
+ uint64_t x121, uint64_t x122 = mulx_u64(x7, x17);
+ uint64_t x124, uint64_t x125 = mulx_u64(x7, x19);
+ uint64_t x127, uint64_t x128 = mulx_u64(x7, x21);
+ uint64_t x130, uint64_t x131 = mulx_u64(x7, x23);
+ uint64_t x133, uint64_t x134 = mulx_u64(x7, x22);
+ uint64_t x136, uint8_t x137 = addcarryx_u64(0x0, x119, x121);
+ uint64_t x139, uint8_t x140 = addcarryx_u64(x137, x122, x124);
+ uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
+ uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
+ uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
+ uint64_t x151, uint8_t _ = addcarryx_u64(0x0, x149, x134);
+ uint64_t x154, uint8_t x155 = addcarryx_u64(0x0, x100, x118);
+ uint64_t x157, uint8_t x158 = addcarryx_u64(x155, x103, x136);
+ uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
+ uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
+ uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
+ uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
+ uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x116, x151);
+ uint64_t x175, uint64_t x176 = mulx_u64(x154, 0xffffffffffffffffL);
+ uint64_t x178, uint64_t x179 = mulx_u64(x154, 0xffffffffffffffffL);
+ uint64_t x181, uint64_t x182 = mulx_u64(x154, 0xffffffffffffffffL);
+ uint64_t x184, uint64_t x185 = mulx_u64(x154, 0xffffffffffffffffL);
+ uint64_t x187, uint64_t x188 = mulx_u64(x154, 0xffffffffffffffffL);
+ uint64_t x190, uint64_t x191 = mulx_u64(x154, 0xfffaffffffffffffL);
+ uint64_t x193, uint8_t x194 = addcarryx_u64(0x0, x176, x178);
+ uint64_t x196, uint8_t x197 = addcarryx_u64(x194, x179, x181);
+ uint64_t x199, uint8_t x200 = addcarryx_u64(x197, x182, x184);
+ uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
+ uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
+ uint64_t x208, uint8_t _ = addcarryx_u64(0x0, x206, x191);
+ uint64_t _, uint8_t x212 = addcarryx_u64(0x0, x154, x175);
+ uint64_t x214, uint8_t x215 = addcarryx_u64(x212, x157, x193);
+ uint64_t x217, uint8_t x218 = addcarryx_u64(x215, x160, x196);
+ uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x163, x199);
+ uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x166, x202);
+ uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x169, x205);
+ uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x172, x208);
+ uint8_t x231 = (x230 + x173);
+ uint64_t x233, uint64_t x234 = mulx_u64(x9, x15);
+ uint64_t x236, uint64_t x237 = mulx_u64(x9, x17);
+ uint64_t x239, uint64_t x240 = mulx_u64(x9, x19);
+ uint64_t x242, uint64_t x243 = mulx_u64(x9, x21);
+ uint64_t x245, uint64_t x246 = mulx_u64(x9, x23);
+ uint64_t x248, uint64_t x249 = mulx_u64(x9, x22);
+ uint64_t x251, uint8_t x252 = addcarryx_u64(0x0, x234, x236);
+ uint64_t x254, uint8_t x255 = addcarryx_u64(x252, x237, x239);
+ uint64_t x257, uint8_t x258 = addcarryx_u64(x255, x240, x242);
+ uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
+ uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
+ uint64_t x266, uint8_t _ = addcarryx_u64(0x0, x264, x249);
+ uint64_t x269, uint8_t x270 = addcarryx_u64(0x0, x214, x233);
+ uint64_t x272, uint8_t x273 = addcarryx_u64(x270, x217, x251);
+ uint64_t x275, uint8_t x276 = addcarryx_u64(x273, x220, x254);
+ uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
+ uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
+ uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
+ uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x231, x266);
+ uint64_t x290, uint64_t x291 = mulx_u64(x269, 0xffffffffffffffffL);
+ uint64_t x293, uint64_t x294 = mulx_u64(x269, 0xffffffffffffffffL);
+ uint64_t x296, uint64_t x297 = mulx_u64(x269, 0xffffffffffffffffL);
+ uint64_t x299, uint64_t x300 = mulx_u64(x269, 0xffffffffffffffffL);
+ uint64_t x302, uint64_t x303 = mulx_u64(x269, 0xffffffffffffffffL);
+ uint64_t x305, uint64_t x306 = mulx_u64(x269, 0xfffaffffffffffffL);
+ uint64_t x308, uint8_t x309 = addcarryx_u64(0x0, x291, x293);
+ uint64_t x311, uint8_t x312 = addcarryx_u64(x309, x294, x296);
+ uint64_t x314, uint8_t x315 = addcarryx_u64(x312, x297, x299);
+ uint64_t x317, uint8_t x318 = addcarryx_u64(x315, x300, x302);
+ uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
+ uint64_t x323, uint8_t _ = addcarryx_u64(0x0, x321, x306);
+ uint64_t _, uint8_t x327 = addcarryx_u64(0x0, x269, x290);
+ uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x272, x308);
+ uint64_t x332, uint8_t x333 = addcarryx_u64(x330, x275, x311);
+ uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x278, x314);
+ uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x281, x317);
+ uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x284, x320);
+ uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x287, x323);
+ uint8_t x346 = (x345 + x288);
+ uint64_t x348, uint64_t x349 = mulx_u64(x11, x15);
+ uint64_t x351, uint64_t x352 = mulx_u64(x11, x17);
+ uint64_t x354, uint64_t x355 = mulx_u64(x11, x19);
+ uint64_t x357, uint64_t x358 = mulx_u64(x11, x21);
+ uint64_t x360, uint64_t x361 = mulx_u64(x11, x23);
+ uint64_t x363, uint64_t x364 = mulx_u64(x11, x22);
+ uint64_t x366, uint8_t x367 = addcarryx_u64(0x0, x349, x351);
+ uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x352, x354);
+ uint64_t x372, uint8_t x373 = addcarryx_u64(x370, x355, x357);
+ uint64_t x375, uint8_t x376 = addcarryx_u64(x373, x358, x360);
+ uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
+ uint64_t x381, uint8_t _ = addcarryx_u64(0x0, x379, x364);
+ uint64_t x384, uint8_t x385 = addcarryx_u64(0x0, x329, x348);
+ uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x332, x366);
+ uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x335, x369);
+ uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x338, x372);
+ uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
+ uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
+ uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x346, x381);
+ uint64_t x405, uint64_t x406 = mulx_u64(x384, 0xffffffffffffffffL);
+ uint64_t x408, uint64_t x409 = mulx_u64(x384, 0xffffffffffffffffL);
+ uint64_t x411, uint64_t x412 = mulx_u64(x384, 0xffffffffffffffffL);
+ uint64_t x414, uint64_t x415 = mulx_u64(x384, 0xffffffffffffffffL);
+ uint64_t x417, uint64_t x418 = mulx_u64(x384, 0xffffffffffffffffL);
+ uint64_t x420, uint64_t x421 = mulx_u64(x384, 0xfffaffffffffffffL);
+ uint64_t x423, uint8_t x424 = addcarryx_u64(0x0, x406, x408);
+ uint64_t x426, uint8_t x427 = addcarryx_u64(x424, x409, x411);
+ uint64_t x429, uint8_t x430 = addcarryx_u64(x427, x412, x414);
+ uint64_t x432, uint8_t x433 = addcarryx_u64(x430, x415, x417);
+ uint64_t x435, uint8_t x436 = addcarryx_u64(x433, x418, x420);
+ uint64_t x438, uint8_t _ = addcarryx_u64(0x0, x436, x421);
+ uint64_t _, uint8_t x442 = addcarryx_u64(0x0, x384, x405);
+ uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x387, x423);
+ uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x390, x426);
+ uint64_t x450, uint8_t x451 = addcarryx_u64(x448, x393, x429);
+ uint64_t x453, uint8_t x454 = addcarryx_u64(x451, x396, x432);
+ uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x399, x435);
+ uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x402, x438);
+ uint8_t x461 = (x460 + x403);
+ uint64_t x463, uint64_t x464 = mulx_u64(x13, x15);
+ uint64_t x466, uint64_t x467 = mulx_u64(x13, x17);
+ uint64_t x469, uint64_t x470 = mulx_u64(x13, x19);
+ uint64_t x472, uint64_t x473 = mulx_u64(x13, x21);
+ uint64_t x475, uint64_t x476 = mulx_u64(x13, x23);
+ uint64_t x478, uint64_t x479 = mulx_u64(x13, x22);
+ uint64_t x481, uint8_t x482 = addcarryx_u64(0x0, x464, x466);
+ uint64_t x484, uint8_t x485 = addcarryx_u64(x482, x467, x469);
+ uint64_t x487, uint8_t x488 = addcarryx_u64(x485, x470, x472);
+ uint64_t x490, uint8_t x491 = addcarryx_u64(x488, x473, x475);
+ uint64_t x493, uint8_t x494 = addcarryx_u64(x491, x476, x478);
+ uint64_t x496, uint8_t _ = addcarryx_u64(0x0, x494, x479);
+ uint64_t x499, uint8_t x500 = addcarryx_u64(0x0, x444, x463);
+ uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x447, x481);
+ uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x450, x484);
+ uint64_t x508, uint8_t x509 = addcarryx_u64(x506, x453, x487);
+ uint64_t x511, uint8_t x512 = addcarryx_u64(x509, x456, x490);
+ uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
+ uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x461, x496);
+ uint64_t x520, uint64_t x521 = mulx_u64(x499, 0xffffffffffffffffL);
+ uint64_t x523, uint64_t x524 = mulx_u64(x499, 0xffffffffffffffffL);
+ uint64_t x526, uint64_t x527 = mulx_u64(x499, 0xffffffffffffffffL);
+ uint64_t x529, uint64_t x530 = mulx_u64(x499, 0xffffffffffffffffL);
+ uint64_t x532, uint64_t x533 = mulx_u64(x499, 0xffffffffffffffffL);
+ uint64_t x535, uint64_t x536 = mulx_u64(x499, 0xfffaffffffffffffL);
+ uint64_t x538, uint8_t x539 = addcarryx_u64(0x0, x521, x523);
+ uint64_t x541, uint8_t x542 = addcarryx_u64(x539, x524, x526);
+ uint64_t x544, uint8_t x545 = addcarryx_u64(x542, x527, x529);
+ uint64_t x547, uint8_t x548 = addcarryx_u64(x545, x530, x532);
+ uint64_t x550, uint8_t x551 = addcarryx_u64(x548, x533, x535);
+ uint64_t x553, uint8_t _ = addcarryx_u64(0x0, x551, x536);
+ uint64_t _, uint8_t x557 = addcarryx_u64(0x0, x499, x520);
+ uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x502, x538);
+ uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x505, x541);
+ uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x508, x544);
+ uint64_t x568, uint8_t x569 = addcarryx_u64(x566, x511, x547);
+ uint64_t x571, uint8_t x572 = addcarryx_u64(x569, x514, x550);
+ uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x517, x553);
+ uint8_t x576 = (x575 + x518);
+ uint64_t x578, uint64_t x579 = mulx_u64(x12, x15);
+ uint64_t x581, uint64_t x582 = mulx_u64(x12, x17);
+ uint64_t x584, uint64_t x585 = mulx_u64(x12, x19);
+ uint64_t x587, uint64_t x588 = mulx_u64(x12, x21);
+ uint64_t x590, uint64_t x591 = mulx_u64(x12, x23);
+ uint64_t x593, uint64_t x594 = mulx_u64(x12, x22);
+ uint64_t x596, uint8_t x597 = addcarryx_u64(0x0, x579, x581);
+ uint64_t x599, uint8_t x600 = addcarryx_u64(x597, x582, x584);
+ uint64_t x602, uint8_t x603 = addcarryx_u64(x600, x585, x587);
+ uint64_t x605, uint8_t x606 = addcarryx_u64(x603, x588, x590);
+ uint64_t x608, uint8_t x609 = addcarryx_u64(x606, x591, x593);
+ uint64_t x611, uint8_t _ = addcarryx_u64(0x0, x609, x594);
+ uint64_t x614, uint8_t x615 = addcarryx_u64(0x0, x559, x578);
+ uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x562, x596);
+ uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x565, x599);
+ uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x568, x602);
+ uint64_t x626, uint8_t x627 = addcarryx_u64(x624, x571, x605);
+ uint64_t x629, uint8_t x630 = addcarryx_u64(x627, x574, x608);
+ uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x576, x611);
+ uint64_t x635, uint64_t x636 = mulx_u64(x614, 0xffffffffffffffffL);
+ uint64_t x638, uint64_t x639 = mulx_u64(x614, 0xffffffffffffffffL);
+ uint64_t x641, uint64_t x642 = mulx_u64(x614, 0xffffffffffffffffL);
+ uint64_t x644, uint64_t x645 = mulx_u64(x614, 0xffffffffffffffffL);
+ uint64_t x647, uint64_t x648 = mulx_u64(x614, 0xffffffffffffffffL);
+ uint64_t x650, uint64_t x651 = mulx_u64(x614, 0xfffaffffffffffffL);
+ uint64_t x653, uint8_t x654 = addcarryx_u64(0x0, x636, x638);
+ uint64_t x656, uint8_t x657 = addcarryx_u64(x654, x639, x641);
+ uint64_t x659, uint8_t x660 = addcarryx_u64(x657, x642, x644);
+ uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x645, x647);
+ uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x648, x650);
+ uint64_t x668, uint8_t _ = addcarryx_u64(0x0, x666, x651);
+ uint64_t _, uint8_t x672 = addcarryx_u64(0x0, x614, x635);
+ uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x617, x653);
+ uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x620, x656);
+ uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x623, x659);
+ uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x626, x662);
+ uint64_t x686, uint8_t x687 = addcarryx_u64(x684, x629, x665);
+ uint64_t x689, uint8_t x690 = addcarryx_u64(x687, x632, x668);
+ uint8_t x691 = (x690 + x633);
+ uint64_t x693, uint8_t x694 = subborrow_u64(0x0, x674, 0xffffffffffffffffL);
+ uint64_t x696, uint8_t x697 = subborrow_u64(x694, x677, 0xffffffffffffffffL);
+ uint64_t x699, uint8_t x700 = subborrow_u64(x697, x680, 0xffffffffffffffffL);
+ uint64_t x702, uint8_t x703 = subborrow_u64(x700, x683, 0xffffffffffffffffL);
+ uint64_t x705, uint8_t x706 = subborrow_u64(x703, x686, 0xffffffffffffffffL);
+ uint64_t x708, uint8_t x709 = subborrow_u64(x706, x689, 0xfffaffffffffffffL);
+ uint64_t _, uint8_t x712 = subborrow_u64(x709, x691, 0x0);
+ uint64_t x713 = cmovznz64(x712, x708, x689);
+ uint64_t x714 = cmovznz64(x712, x705, x686);
+ uint64_t x715 = cmovznz64(x712, x702, x683);
+ uint64_t x716 = cmovznz64(x712, x699, x680);
+ uint64_t x717 = cmovznz64(x712, x696, x677);
+ uint64_t x718 = cmovznz64(x712, x693, x674);
+ return (x713, x714, x715, x716, x717, x718))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenz.c b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenz.c
new file mode 100644
index 000000000..c93f74257
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenz.c
@@ -0,0 +1,15 @@
+static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x11 = (x10 | x9);
+ { uint64_t x12 = (x8 | x11);
+ { uint64_t x13 = (x6 | x12);
+ { uint64_t x14 = (x4 | x13);
+ { uint64_t x15 = (x2 | x14);
+ out[0] = x15;
+ }}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenzDisplay.log b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenzDisplay.log
new file mode 100644
index 000000000..f39f1d91b
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fenzDisplay.log
@@ -0,0 +1,12 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x11 = (x10 | x9);
+ uint64_t x12 = (x8 | x11);
+ uint64_t x13 = (x6 | x12);
+ uint64_t x14 = (x4 | x13);
+ uint64_t x15 = (x2 | x14);
+ return x15)
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feopp.c b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feopp.c
new file mode 100644
index 000000000..666ec0ad1
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feopp.c
@@ -0,0 +1,34 @@
+static void feopp(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
+ { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
+ { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
+ { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
+ { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
+ { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
+ { uint64_t x34 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
+ { uint64_t x38 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
+ { uint64_t x42 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
+ { uint64_t x46 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
+ { uint64_t x50 = (x29 & 0xfffaffffffffffffL);
+ { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feoppDisplay.log b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feoppDisplay.log
new file mode 100644
index 000000000..625c3e169
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/feoppDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
+ uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
+ uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
+ uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
+ uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
+ uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0xffffffffffffffffL);
+ uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
+ uint64_t x34 = (x29 & 0xffffffffffffffffL);
+ uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
+ uint64_t x38 = (x29 & 0xffffffffffffffffL);
+ uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
+ uint64_t x42 = (x29 & 0xffffffffffffffffL);
+ uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
+ uint64_t x46 = (x29 & 0xffffffffffffffffL);
+ uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
+ uint64_t x50 = (x29 & 0xfffaffffffffffffL);
+ uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesub.c b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesub.c
new file mode 100644
index 000000000..8e5943404
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesub.c
@@ -0,0 +1,40 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
+ { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
+ { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
+ { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
+ { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
+ { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
+ { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
+ { uint64_t x43 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
+ { uint64_t x47 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
+ { uint64_t x51 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
+ { uint64_t x55 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
+ { uint64_t x59 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
+ { uint64_t x63 = (x42 & 0xfffaffffffffffffL);
+ { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
+ out[0] = x45;
+ out[1] = x49;
+ out[2] = x53;
+ out[3] = x57;
+ out[4] = x61;
+ out[5] = x65;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesubDisplay.log b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..2787b77d5
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m5x2e368m1_6limbs/fesubDisplay.log
@@ -0,0 +1,26 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
+ uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
+ uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
+ uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
+ uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
+ uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
+ uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
+ uint64_t x43 = (x42 & 0xffffffffffffffffL);
+ uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
+ uint64_t x47 = (x42 & 0xffffffffffffffffL);
+ uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
+ uint64_t x51 = (x42 & 0xffffffffffffffffL);
+ uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
+ uint64_t x55 = (x42 & 0xffffffffffffffffL);
+ uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
+ uint64_t x59 = (x42 & 0xffffffffffffffffL);
+ uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
+ uint64_t x63 = (x42 & 0xfffaffffffffffffL);
+ uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
+ (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feadd.c b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feadd.c
new file mode 100644
index 000000000..1bc58a70d
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feadd.c
@@ -0,0 +1,40 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x25; uint8_t x26 = _addcarryx_u64(0x0, x5, x15, &x25);
+ { uint64_t x28; uint8_t x29 = _addcarryx_u64(x26, x7, x17, &x28);
+ { uint64_t x31; uint8_t x32 = _addcarryx_u64(x29, x9, x19, &x31);
+ { uint64_t x34; uint8_t x35 = _addcarryx_u64(x32, x11, x21, &x34);
+ { uint64_t x37; uint8_t x38 = _addcarryx_u64(x35, x13, x23, &x37);
+ { uint64_t x40; uint8_t x41 = _addcarryx_u64(x38, x12, x22, &x40);
+ { uint64_t x43; uint8_t x44 = _subborrow_u64(0x0, x25, 0xffffffffffffffffL, &x43);
+ { uint64_t x46; uint8_t x47 = _subborrow_u64(x44, x28, 0xffffffffffffffffL, &x46);
+ { uint64_t x49; uint8_t x50 = _subborrow_u64(x47, x31, 0xffffffffffffffffL, &x49);
+ { uint64_t x52; uint8_t x53 = _subborrow_u64(x50, x34, 0xffffffffffffffffL, &x52);
+ { uint64_t x55; uint8_t x56 = _subborrow_u64(x53, x37, 0xffffffffffffffffL, &x55);
+ { uint64_t x58; uint8_t x59 = _subborrow_u64(x56, x40, 0xb0ffffffffffffffL, &x58);
+ { uint64_t _; uint8_t x62 = _subborrow_u64(x59, x41, 0x0, &_);
+ { uint64_t x63 = cmovznz64(x62, x58, x40);
+ { uint64_t x64 = cmovznz64(x62, x55, x37);
+ { uint64_t x65 = cmovznz64(x62, x52, x34);
+ { uint64_t x66 = cmovznz64(x62, x49, x31);
+ { uint64_t x67 = cmovznz64(x62, x46, x28);
+ { uint64_t x68 = cmovznz64(x62, x43, x25);
+ out[0] = x68;
+ out[1] = x67;
+ out[2] = x66;
+ out[3] = x65;
+ out[4] = x64;
+ out[5] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feaddDisplay.log b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..d44abf137
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feaddDisplay.log
@@ -0,0 +1,26 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint8_t x26 = addcarryx_u64(0x0, x5, x15);
+ uint64_t x28, uint8_t x29 = addcarryx_u64(x26, x7, x17);
+ uint64_t x31, uint8_t x32 = addcarryx_u64(x29, x9, x19);
+ uint64_t x34, uint8_t x35 = addcarryx_u64(x32, x11, x21);
+ uint64_t x37, uint8_t x38 = addcarryx_u64(x35, x13, x23);
+ uint64_t x40, uint8_t x41 = addcarryx_u64(x38, x12, x22);
+ uint64_t x43, uint8_t x44 = subborrow_u64(0x0, x25, 0xffffffffffffffffL);
+ uint64_t x46, uint8_t x47 = subborrow_u64(x44, x28, 0xffffffffffffffffL);
+ uint64_t x49, uint8_t x50 = subborrow_u64(x47, x31, 0xffffffffffffffffL);
+ uint64_t x52, uint8_t x53 = subborrow_u64(x50, x34, 0xffffffffffffffffL);
+ uint64_t x55, uint8_t x56 = subborrow_u64(x53, x37, 0xffffffffffffffffL);
+ uint64_t x58, uint8_t x59 = subborrow_u64(x56, x40, 0xb0ffffffffffffffL);
+ uint64_t _, uint8_t x62 = subborrow_u64(x59, x41, 0x0);
+ uint64_t x63 = cmovznz64(x62, x58, x40);
+ uint64_t x64 = cmovznz64(x62, x55, x37);
+ uint64_t x65 = cmovznz64(x62, x52, x34);
+ uint64_t x66 = cmovznz64(x62, x49, x31);
+ uint64_t x67 = cmovznz64(x62, x46, x28);
+ uint64_t x68 = cmovznz64(x62, x43, x25);
+ return (x63, x64, x65, x66, x67, x68))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femul.c b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femul.c
new file mode 100644
index 000000000..65495b82a
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femul.c
@@ -0,0 +1,260 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x26; uint64_t x25 = _mulx_u64(x5, x15, &x26);
+ { uint64_t x29; uint64_t x28 = _mulx_u64(x5, x17, &x29);
+ { uint64_t x32; uint64_t x31 = _mulx_u64(x5, x19, &x32);
+ { uint64_t x35; uint64_t x34 = _mulx_u64(x5, x21, &x35);
+ { uint64_t x38; uint64_t x37 = _mulx_u64(x5, x23, &x38);
+ { uint64_t x41; uint64_t x40 = _mulx_u64(x5, x22, &x41);
+ { uint64_t x43; uint8_t x44 = _addcarryx_u64(0x0, x26, x28, &x43);
+ { uint64_t x46; uint8_t x47 = _addcarryx_u64(x44, x29, x31, &x46);
+ { uint64_t x49; uint8_t x50 = _addcarryx_u64(x47, x32, x34, &x49);
+ { uint64_t x52; uint8_t x53 = _addcarryx_u64(x50, x35, x37, &x52);
+ { uint64_t x55; uint8_t x56 = _addcarryx_u64(x53, x38, x40, &x55);
+ { uint64_t x58; uint8_t _ = _addcarryx_u64(0x0, x56, x41, &x58);
+ { uint64_t x62; uint64_t x61 = _mulx_u64(x25, 0xffffffffffffffffL, &x62);
+ { uint64_t x65; uint64_t x64 = _mulx_u64(x25, 0xffffffffffffffffL, &x65);
+ { uint64_t x68; uint64_t x67 = _mulx_u64(x25, 0xffffffffffffffffL, &x68);
+ { uint64_t x71; uint64_t x70 = _mulx_u64(x25, 0xffffffffffffffffL, &x71);
+ { uint64_t x74; uint64_t x73 = _mulx_u64(x25, 0xffffffffffffffffL, &x74);
+ { uint64_t x77; uint64_t x76 = _mulx_u64(x25, 0xb0ffffffffffffffL, &x77);
+ { uint64_t x79; uint8_t x80 = _addcarryx_u64(0x0, x62, x64, &x79);
+ { uint64_t x82; uint8_t x83 = _addcarryx_u64(x80, x65, x67, &x82);
+ { uint64_t x85; uint8_t x86 = _addcarryx_u64(x83, x68, x70, &x85);
+ { uint64_t x88; uint8_t x89 = _addcarryx_u64(x86, x71, x73, &x88);
+ { uint64_t x91; uint8_t x92 = _addcarryx_u64(x89, x74, x76, &x91);
+ { uint64_t x94; uint8_t _ = _addcarryx_u64(0x0, x92, x77, &x94);
+ { uint64_t _; uint8_t x98 = _addcarryx_u64(0x0, x25, x61, &_);
+ { uint64_t x100; uint8_t x101 = _addcarryx_u64(x98, x43, x79, &x100);
+ { uint64_t x103; uint8_t x104 = _addcarryx_u64(x101, x46, x82, &x103);
+ { uint64_t x106; uint8_t x107 = _addcarryx_u64(x104, x49, x85, &x106);
+ { uint64_t x109; uint8_t x110 = _addcarryx_u64(x107, x52, x88, &x109);
+ { uint64_t x112; uint8_t x113 = _addcarryx_u64(x110, x55, x91, &x112);
+ { uint64_t x115; uint8_t x116 = _addcarryx_u64(x113, x58, x94, &x115);
+ { uint64_t x119; uint64_t x118 = _mulx_u64(x7, x15, &x119);
+ { uint64_t x122; uint64_t x121 = _mulx_u64(x7, x17, &x122);
+ { uint64_t x125; uint64_t x124 = _mulx_u64(x7, x19, &x125);
+ { uint64_t x128; uint64_t x127 = _mulx_u64(x7, x21, &x128);
+ { uint64_t x131; uint64_t x130 = _mulx_u64(x7, x23, &x131);
+ { uint64_t x134; uint64_t x133 = _mulx_u64(x7, x22, &x134);
+ { uint64_t x136; uint8_t x137 = _addcarryx_u64(0x0, x119, x121, &x136);
+ { uint64_t x139; uint8_t x140 = _addcarryx_u64(x137, x122, x124, &x139);
+ { uint64_t x142; uint8_t x143 = _addcarryx_u64(x140, x125, x127, &x142);
+ { uint64_t x145; uint8_t x146 = _addcarryx_u64(x143, x128, x130, &x145);
+ { uint64_t x148; uint8_t x149 = _addcarryx_u64(x146, x131, x133, &x148);
+ { uint64_t x151; uint8_t _ = _addcarryx_u64(0x0, x149, x134, &x151);
+ { uint64_t x154; uint8_t x155 = _addcarryx_u64(0x0, x100, x118, &x154);
+ { uint64_t x157; uint8_t x158 = _addcarryx_u64(x155, x103, x136, &x157);
+ { uint64_t x160; uint8_t x161 = _addcarryx_u64(x158, x106, x139, &x160);
+ { uint64_t x163; uint8_t x164 = _addcarryx_u64(x161, x109, x142, &x163);
+ { uint64_t x166; uint8_t x167 = _addcarryx_u64(x164, x112, x145, &x166);
+ { uint64_t x169; uint8_t x170 = _addcarryx_u64(x167, x115, x148, &x169);
+ { uint64_t x172; uint8_t x173 = _addcarryx_u64(x170, x116, x151, &x172);
+ { uint64_t x176; uint64_t x175 = _mulx_u64(x154, 0xffffffffffffffffL, &x176);
+ { uint64_t x179; uint64_t x178 = _mulx_u64(x154, 0xffffffffffffffffL, &x179);
+ { uint64_t x182; uint64_t x181 = _mulx_u64(x154, 0xffffffffffffffffL, &x182);
+ { uint64_t x185; uint64_t x184 = _mulx_u64(x154, 0xffffffffffffffffL, &x185);
+ { uint64_t x188; uint64_t x187 = _mulx_u64(x154, 0xffffffffffffffffL, &x188);
+ { uint64_t x191; uint64_t x190 = _mulx_u64(x154, 0xb0ffffffffffffffL, &x191);
+ { uint64_t x193; uint8_t x194 = _addcarryx_u64(0x0, x176, x178, &x193);
+ { uint64_t x196; uint8_t x197 = _addcarryx_u64(x194, x179, x181, &x196);
+ { uint64_t x199; uint8_t x200 = _addcarryx_u64(x197, x182, x184, &x199);
+ { uint64_t x202; uint8_t x203 = _addcarryx_u64(x200, x185, x187, &x202);
+ { uint64_t x205; uint8_t x206 = _addcarryx_u64(x203, x188, x190, &x205);
+ { uint64_t x208; uint8_t _ = _addcarryx_u64(0x0, x206, x191, &x208);
+ { uint64_t _; uint8_t x212 = _addcarryx_u64(0x0, x154, x175, &_);
+ { uint64_t x214; uint8_t x215 = _addcarryx_u64(x212, x157, x193, &x214);
+ { uint64_t x217; uint8_t x218 = _addcarryx_u64(x215, x160, x196, &x217);
+ { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x163, x199, &x220);
+ { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x166, x202, &x223);
+ { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x169, x205, &x226);
+ { uint64_t x229; uint8_t x230 = _addcarryx_u64(x227, x172, x208, &x229);
+ { uint8_t x231 = (x230 + x173);
+ { uint64_t x234; uint64_t x233 = _mulx_u64(x9, x15, &x234);
+ { uint64_t x237; uint64_t x236 = _mulx_u64(x9, x17, &x237);
+ { uint64_t x240; uint64_t x239 = _mulx_u64(x9, x19, &x240);
+ { uint64_t x243; uint64_t x242 = _mulx_u64(x9, x21, &x243);
+ { uint64_t x246; uint64_t x245 = _mulx_u64(x9, x23, &x246);
+ { uint64_t x249; uint64_t x248 = _mulx_u64(x9, x22, &x249);
+ { uint64_t x251; uint8_t x252 = _addcarryx_u64(0x0, x234, x236, &x251);
+ { uint64_t x254; uint8_t x255 = _addcarryx_u64(x252, x237, x239, &x254);
+ { uint64_t x257; uint8_t x258 = _addcarryx_u64(x255, x240, x242, &x257);
+ { uint64_t x260; uint8_t x261 = _addcarryx_u64(x258, x243, x245, &x260);
+ { uint64_t x263; uint8_t x264 = _addcarryx_u64(x261, x246, x248, &x263);
+ { uint64_t x266; uint8_t _ = _addcarryx_u64(0x0, x264, x249, &x266);
+ { uint64_t x269; uint8_t x270 = _addcarryx_u64(0x0, x214, x233, &x269);
+ { uint64_t x272; uint8_t x273 = _addcarryx_u64(x270, x217, x251, &x272);
+ { uint64_t x275; uint8_t x276 = _addcarryx_u64(x273, x220, x254, &x275);
+ { uint64_t x278; uint8_t x279 = _addcarryx_u64(x276, x223, x257, &x278);
+ { uint64_t x281; uint8_t x282 = _addcarryx_u64(x279, x226, x260, &x281);
+ { uint64_t x284; uint8_t x285 = _addcarryx_u64(x282, x229, x263, &x284);
+ { uint64_t x287; uint8_t x288 = _addcarryx_u64(x285, x231, x266, &x287);
+ { uint64_t x291; uint64_t x290 = _mulx_u64(x269, 0xffffffffffffffffL, &x291);
+ { uint64_t x294; uint64_t x293 = _mulx_u64(x269, 0xffffffffffffffffL, &x294);
+ { uint64_t x297; uint64_t x296 = _mulx_u64(x269, 0xffffffffffffffffL, &x297);
+ { uint64_t x300; uint64_t x299 = _mulx_u64(x269, 0xffffffffffffffffL, &x300);
+ { uint64_t x303; uint64_t x302 = _mulx_u64(x269, 0xffffffffffffffffL, &x303);
+ { uint64_t x306; uint64_t x305 = _mulx_u64(x269, 0xb0ffffffffffffffL, &x306);
+ { uint64_t x308; uint8_t x309 = _addcarryx_u64(0x0, x291, x293, &x308);
+ { uint64_t x311; uint8_t x312 = _addcarryx_u64(x309, x294, x296, &x311);
+ { uint64_t x314; uint8_t x315 = _addcarryx_u64(x312, x297, x299, &x314);
+ { uint64_t x317; uint8_t x318 = _addcarryx_u64(x315, x300, x302, &x317);
+ { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x303, x305, &x320);
+ { uint64_t x323; uint8_t _ = _addcarryx_u64(0x0, x321, x306, &x323);
+ { uint64_t _; uint8_t x327 = _addcarryx_u64(0x0, x269, x290, &_);
+ { uint64_t x329; uint8_t x330 = _addcarryx_u64(x327, x272, x308, &x329);
+ { uint64_t x332; uint8_t x333 = _addcarryx_u64(x330, x275, x311, &x332);
+ { uint64_t x335; uint8_t x336 = _addcarryx_u64(x333, x278, x314, &x335);
+ { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x281, x317, &x338);
+ { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x284, x320, &x341);
+ { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x287, x323, &x344);
+ { uint8_t x346 = (x345 + x288);
+ { uint64_t x349; uint64_t x348 = _mulx_u64(x11, x15, &x349);
+ { uint64_t x352; uint64_t x351 = _mulx_u64(x11, x17, &x352);
+ { uint64_t x355; uint64_t x354 = _mulx_u64(x11, x19, &x355);
+ { uint64_t x358; uint64_t x357 = _mulx_u64(x11, x21, &x358);
+ { uint64_t x361; uint64_t x360 = _mulx_u64(x11, x23, &x361);
+ { uint64_t x364; uint64_t x363 = _mulx_u64(x11, x22, &x364);
+ { uint64_t x366; uint8_t x367 = _addcarryx_u64(0x0, x349, x351, &x366);
+ { uint64_t x369; uint8_t x370 = _addcarryx_u64(x367, x352, x354, &x369);
+ { uint64_t x372; uint8_t x373 = _addcarryx_u64(x370, x355, x357, &x372);
+ { uint64_t x375; uint8_t x376 = _addcarryx_u64(x373, x358, x360, &x375);
+ { uint64_t x378; uint8_t x379 = _addcarryx_u64(x376, x361, x363, &x378);
+ { uint64_t x381; uint8_t _ = _addcarryx_u64(0x0, x379, x364, &x381);
+ { uint64_t x384; uint8_t x385 = _addcarryx_u64(0x0, x329, x348, &x384);
+ { uint64_t x387; uint8_t x388 = _addcarryx_u64(x385, x332, x366, &x387);
+ { uint64_t x390; uint8_t x391 = _addcarryx_u64(x388, x335, x369, &x390);
+ { uint64_t x393; uint8_t x394 = _addcarryx_u64(x391, x338, x372, &x393);
+ { uint64_t x396; uint8_t x397 = _addcarryx_u64(x394, x341, x375, &x396);
+ { uint64_t x399; uint8_t x400 = _addcarryx_u64(x397, x344, x378, &x399);
+ { uint64_t x402; uint8_t x403 = _addcarryx_u64(x400, x346, x381, &x402);
+ { uint64_t x406; uint64_t x405 = _mulx_u64(x384, 0xffffffffffffffffL, &x406);
+ { uint64_t x409; uint64_t x408 = _mulx_u64(x384, 0xffffffffffffffffL, &x409);
+ { uint64_t x412; uint64_t x411 = _mulx_u64(x384, 0xffffffffffffffffL, &x412);
+ { uint64_t x415; uint64_t x414 = _mulx_u64(x384, 0xffffffffffffffffL, &x415);
+ { uint64_t x418; uint64_t x417 = _mulx_u64(x384, 0xffffffffffffffffL, &x418);
+ { uint64_t x421; uint64_t x420 = _mulx_u64(x384, 0xb0ffffffffffffffL, &x421);
+ { uint64_t x423; uint8_t x424 = _addcarryx_u64(0x0, x406, x408, &x423);
+ { uint64_t x426; uint8_t x427 = _addcarryx_u64(x424, x409, x411, &x426);
+ { uint64_t x429; uint8_t x430 = _addcarryx_u64(x427, x412, x414, &x429);
+ { uint64_t x432; uint8_t x433 = _addcarryx_u64(x430, x415, x417, &x432);
+ { uint64_t x435; uint8_t x436 = _addcarryx_u64(x433, x418, x420, &x435);
+ { uint64_t x438; uint8_t _ = _addcarryx_u64(0x0, x436, x421, &x438);
+ { uint64_t _; uint8_t x442 = _addcarryx_u64(0x0, x384, x405, &_);
+ { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x387, x423, &x444);
+ { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x390, x426, &x447);
+ { uint64_t x450; uint8_t x451 = _addcarryx_u64(x448, x393, x429, &x450);
+ { uint64_t x453; uint8_t x454 = _addcarryx_u64(x451, x396, x432, &x453);
+ { uint64_t x456; uint8_t x457 = _addcarryx_u64(x454, x399, x435, &x456);
+ { uint64_t x459; uint8_t x460 = _addcarryx_u64(x457, x402, x438, &x459);
+ { uint8_t x461 = (x460 + x403);
+ { uint64_t x464; uint64_t x463 = _mulx_u64(x13, x15, &x464);
+ { uint64_t x467; uint64_t x466 = _mulx_u64(x13, x17, &x467);
+ { uint64_t x470; uint64_t x469 = _mulx_u64(x13, x19, &x470);
+ { uint64_t x473; uint64_t x472 = _mulx_u64(x13, x21, &x473);
+ { uint64_t x476; uint64_t x475 = _mulx_u64(x13, x23, &x476);
+ { uint64_t x479; uint64_t x478 = _mulx_u64(x13, x22, &x479);
+ { uint64_t x481; uint8_t x482 = _addcarryx_u64(0x0, x464, x466, &x481);
+ { uint64_t x484; uint8_t x485 = _addcarryx_u64(x482, x467, x469, &x484);
+ { uint64_t x487; uint8_t x488 = _addcarryx_u64(x485, x470, x472, &x487);
+ { uint64_t x490; uint8_t x491 = _addcarryx_u64(x488, x473, x475, &x490);
+ { uint64_t x493; uint8_t x494 = _addcarryx_u64(x491, x476, x478, &x493);
+ { uint64_t x496; uint8_t _ = _addcarryx_u64(0x0, x494, x479, &x496);
+ { uint64_t x499; uint8_t x500 = _addcarryx_u64(0x0, x444, x463, &x499);
+ { uint64_t x502; uint8_t x503 = _addcarryx_u64(x500, x447, x481, &x502);
+ { uint64_t x505; uint8_t x506 = _addcarryx_u64(x503, x450, x484, &x505);
+ { uint64_t x508; uint8_t x509 = _addcarryx_u64(x506, x453, x487, &x508);
+ { uint64_t x511; uint8_t x512 = _addcarryx_u64(x509, x456, x490, &x511);
+ { uint64_t x514; uint8_t x515 = _addcarryx_u64(x512, x459, x493, &x514);
+ { uint64_t x517; uint8_t x518 = _addcarryx_u64(x515, x461, x496, &x517);
+ { uint64_t x521; uint64_t x520 = _mulx_u64(x499, 0xffffffffffffffffL, &x521);
+ { uint64_t x524; uint64_t x523 = _mulx_u64(x499, 0xffffffffffffffffL, &x524);
+ { uint64_t x527; uint64_t x526 = _mulx_u64(x499, 0xffffffffffffffffL, &x527);
+ { uint64_t x530; uint64_t x529 = _mulx_u64(x499, 0xffffffffffffffffL, &x530);
+ { uint64_t x533; uint64_t x532 = _mulx_u64(x499, 0xffffffffffffffffL, &x533);
+ { uint64_t x536; uint64_t x535 = _mulx_u64(x499, 0xb0ffffffffffffffL, &x536);
+ { uint64_t x538; uint8_t x539 = _addcarryx_u64(0x0, x521, x523, &x538);
+ { uint64_t x541; uint8_t x542 = _addcarryx_u64(x539, x524, x526, &x541);
+ { uint64_t x544; uint8_t x545 = _addcarryx_u64(x542, x527, x529, &x544);
+ { uint64_t x547; uint8_t x548 = _addcarryx_u64(x545, x530, x532, &x547);
+ { uint64_t x550; uint8_t x551 = _addcarryx_u64(x548, x533, x535, &x550);
+ { uint64_t x553; uint8_t _ = _addcarryx_u64(0x0, x551, x536, &x553);
+ { uint64_t _; uint8_t x557 = _addcarryx_u64(0x0, x499, x520, &_);
+ { uint64_t x559; uint8_t x560 = _addcarryx_u64(x557, x502, x538, &x559);
+ { uint64_t x562; uint8_t x563 = _addcarryx_u64(x560, x505, x541, &x562);
+ { uint64_t x565; uint8_t x566 = _addcarryx_u64(x563, x508, x544, &x565);
+ { uint64_t x568; uint8_t x569 = _addcarryx_u64(x566, x511, x547, &x568);
+ { uint64_t x571; uint8_t x572 = _addcarryx_u64(x569, x514, x550, &x571);
+ { uint64_t x574; uint8_t x575 = _addcarryx_u64(x572, x517, x553, &x574);
+ { uint8_t x576 = (x575 + x518);
+ { uint64_t x579; uint64_t x578 = _mulx_u64(x12, x15, &x579);
+ { uint64_t x582; uint64_t x581 = _mulx_u64(x12, x17, &x582);
+ { uint64_t x585; uint64_t x584 = _mulx_u64(x12, x19, &x585);
+ { uint64_t x588; uint64_t x587 = _mulx_u64(x12, x21, &x588);
+ { uint64_t x591; uint64_t x590 = _mulx_u64(x12, x23, &x591);
+ { uint64_t x594; uint64_t x593 = _mulx_u64(x12, x22, &x594);
+ { uint64_t x596; uint8_t x597 = _addcarryx_u64(0x0, x579, x581, &x596);
+ { uint64_t x599; uint8_t x600 = _addcarryx_u64(x597, x582, x584, &x599);
+ { uint64_t x602; uint8_t x603 = _addcarryx_u64(x600, x585, x587, &x602);
+ { uint64_t x605; uint8_t x606 = _addcarryx_u64(x603, x588, x590, &x605);
+ { uint64_t x608; uint8_t x609 = _addcarryx_u64(x606, x591, x593, &x608);
+ { uint64_t x611; uint8_t _ = _addcarryx_u64(0x0, x609, x594, &x611);
+ { uint64_t x614; uint8_t x615 = _addcarryx_u64(0x0, x559, x578, &x614);
+ { uint64_t x617; uint8_t x618 = _addcarryx_u64(x615, x562, x596, &x617);
+ { uint64_t x620; uint8_t x621 = _addcarryx_u64(x618, x565, x599, &x620);
+ { uint64_t x623; uint8_t x624 = _addcarryx_u64(x621, x568, x602, &x623);
+ { uint64_t x626; uint8_t x627 = _addcarryx_u64(x624, x571, x605, &x626);
+ { uint64_t x629; uint8_t x630 = _addcarryx_u64(x627, x574, x608, &x629);
+ { uint64_t x632; uint8_t x633 = _addcarryx_u64(x630, x576, x611, &x632);
+ { uint64_t x636; uint64_t x635 = _mulx_u64(x614, 0xffffffffffffffffL, &x636);
+ { uint64_t x639; uint64_t x638 = _mulx_u64(x614, 0xffffffffffffffffL, &x639);
+ { uint64_t x642; uint64_t x641 = _mulx_u64(x614, 0xffffffffffffffffL, &x642);
+ { uint64_t x645; uint64_t x644 = _mulx_u64(x614, 0xffffffffffffffffL, &x645);
+ { uint64_t x648; uint64_t x647 = _mulx_u64(x614, 0xffffffffffffffffL, &x648);
+ { uint64_t x651; uint64_t x650 = _mulx_u64(x614, 0xb0ffffffffffffffL, &x651);
+ { uint64_t x653; uint8_t x654 = _addcarryx_u64(0x0, x636, x638, &x653);
+ { uint64_t x656; uint8_t x657 = _addcarryx_u64(x654, x639, x641, &x656);
+ { uint64_t x659; uint8_t x660 = _addcarryx_u64(x657, x642, x644, &x659);
+ { uint64_t x662; uint8_t x663 = _addcarryx_u64(x660, x645, x647, &x662);
+ { uint64_t x665; uint8_t x666 = _addcarryx_u64(x663, x648, x650, &x665);
+ { uint64_t x668; uint8_t _ = _addcarryx_u64(0x0, x666, x651, &x668);
+ { uint64_t _; uint8_t x672 = _addcarryx_u64(0x0, x614, x635, &_);
+ { uint64_t x674; uint8_t x675 = _addcarryx_u64(x672, x617, x653, &x674);
+ { uint64_t x677; uint8_t x678 = _addcarryx_u64(x675, x620, x656, &x677);
+ { uint64_t x680; uint8_t x681 = _addcarryx_u64(x678, x623, x659, &x680);
+ { uint64_t x683; uint8_t x684 = _addcarryx_u64(x681, x626, x662, &x683);
+ { uint64_t x686; uint8_t x687 = _addcarryx_u64(x684, x629, x665, &x686);
+ { uint64_t x689; uint8_t x690 = _addcarryx_u64(x687, x632, x668, &x689);
+ { uint8_t x691 = (x690 + x633);
+ { uint64_t x693; uint8_t x694 = _subborrow_u64(0x0, x674, 0xffffffffffffffffL, &x693);
+ { uint64_t x696; uint8_t x697 = _subborrow_u64(x694, x677, 0xffffffffffffffffL, &x696);
+ { uint64_t x699; uint8_t x700 = _subborrow_u64(x697, x680, 0xffffffffffffffffL, &x699);
+ { uint64_t x702; uint8_t x703 = _subborrow_u64(x700, x683, 0xffffffffffffffffL, &x702);
+ { uint64_t x705; uint8_t x706 = _subborrow_u64(x703, x686, 0xffffffffffffffffL, &x705);
+ { uint64_t x708; uint8_t x709 = _subborrow_u64(x706, x689, 0xb0ffffffffffffffL, &x708);
+ { uint64_t _; uint8_t x712 = _subborrow_u64(x709, x691, 0x0, &_);
+ { uint64_t x713 = cmovznz64(x712, x708, x689);
+ { uint64_t x714 = cmovznz64(x712, x705, x686);
+ { uint64_t x715 = cmovznz64(x712, x702, x683);
+ { uint64_t x716 = cmovznz64(x712, x699, x680);
+ { uint64_t x717 = cmovznz64(x712, x696, x677);
+ { uint64_t x718 = cmovznz64(x712, x693, x674);
+ out[0] = x718;
+ out[1] = x717;
+ out[2] = x716;
+ out[3] = x715;
+ out[4] = x714;
+ out[5] = x713;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femulDisplay.log b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femulDisplay.log
new file mode 100644
index 000000000..f6fad76a0
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/femulDisplay.log
@@ -0,0 +1,246 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint64_t x26 = mulx_u64(x5, x15);
+ uint64_t x28, uint64_t x29 = mulx_u64(x5, x17);
+ uint64_t x31, uint64_t x32 = mulx_u64(x5, x19);
+ uint64_t x34, uint64_t x35 = mulx_u64(x5, x21);
+ uint64_t x37, uint64_t x38 = mulx_u64(x5, x23);
+ uint64_t x40, uint64_t x41 = mulx_u64(x5, x22);
+ uint64_t x43, uint8_t x44 = addcarryx_u64(0x0, x26, x28);
+ uint64_t x46, uint8_t x47 = addcarryx_u64(x44, x29, x31);
+ uint64_t x49, uint8_t x50 = addcarryx_u64(x47, x32, x34);
+ uint64_t x52, uint8_t x53 = addcarryx_u64(x50, x35, x37);
+ uint64_t x55, uint8_t x56 = addcarryx_u64(x53, x38, x40);
+ uint64_t x58, uint8_t _ = addcarryx_u64(0x0, x56, x41);
+ uint64_t x61, uint64_t x62 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x64, uint64_t x65 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x67, uint64_t x68 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x70, uint64_t x71 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x73, uint64_t x74 = mulx_u64(x25, 0xffffffffffffffffL);
+ uint64_t x76, uint64_t x77 = mulx_u64(x25, 0xb0ffffffffffffffL);
+ uint64_t x79, uint8_t x80 = addcarryx_u64(0x0, x62, x64);
+ uint64_t x82, uint8_t x83 = addcarryx_u64(x80, x65, x67);
+ uint64_t x85, uint8_t x86 = addcarryx_u64(x83, x68, x70);
+ uint64_t x88, uint8_t x89 = addcarryx_u64(x86, x71, x73);
+ uint64_t x91, uint8_t x92 = addcarryx_u64(x89, x74, x76);
+ uint64_t x94, uint8_t _ = addcarryx_u64(0x0, x92, x77);
+ uint64_t _, uint8_t x98 = addcarryx_u64(0x0, x25, x61);
+ uint64_t x100, uint8_t x101 = addcarryx_u64(x98, x43, x79);
+ uint64_t x103, uint8_t x104 = addcarryx_u64(x101, x46, x82);
+ uint64_t x106, uint8_t x107 = addcarryx_u64(x104, x49, x85);
+ uint64_t x109, uint8_t x110 = addcarryx_u64(x107, x52, x88);
+ uint64_t x112, uint8_t x113 = addcarryx_u64(x110, x55, x91);
+ uint64_t x115, uint8_t x116 = addcarryx_u64(x113, x58, x94);
+ uint64_t x118, uint64_t x119 = mulx_u64(x7, x15);
+ uint64_t x121, uint64_t x122 = mulx_u64(x7, x17);
+ uint64_t x124, uint64_t x125 = mulx_u64(x7, x19);
+ uint64_t x127, uint64_t x128 = mulx_u64(x7, x21);
+ uint64_t x130, uint64_t x131 = mulx_u64(x7, x23);
+ uint64_t x133, uint64_t x134 = mulx_u64(x7, x22);
+ uint64_t x136, uint8_t x137 = addcarryx_u64(0x0, x119, x121);
+ uint64_t x139, uint8_t x140 = addcarryx_u64(x137, x122, x124);
+ uint64_t x142, uint8_t x143 = addcarryx_u64(x140, x125, x127);
+ uint64_t x145, uint8_t x146 = addcarryx_u64(x143, x128, x130);
+ uint64_t x148, uint8_t x149 = addcarryx_u64(x146, x131, x133);
+ uint64_t x151, uint8_t _ = addcarryx_u64(0x0, x149, x134);
+ uint64_t x154, uint8_t x155 = addcarryx_u64(0x0, x100, x118);
+ uint64_t x157, uint8_t x158 = addcarryx_u64(x155, x103, x136);
+ uint64_t x160, uint8_t x161 = addcarryx_u64(x158, x106, x139);
+ uint64_t x163, uint8_t x164 = addcarryx_u64(x161, x109, x142);
+ uint64_t x166, uint8_t x167 = addcarryx_u64(x164, x112, x145);
+ uint64_t x169, uint8_t x170 = addcarryx_u64(x167, x115, x148);
+ uint64_t x172, uint8_t x173 = addcarryx_u64(x170, x116, x151);
+ uint64_t x175, uint64_t x176 = mulx_u64(x154, 0xffffffffffffffffL);
+ uint64_t x178, uint64_t x179 = mulx_u64(x154, 0xffffffffffffffffL);
+ uint64_t x181, uint64_t x182 = mulx_u64(x154, 0xffffffffffffffffL);
+ uint64_t x184, uint64_t x185 = mulx_u64(x154, 0xffffffffffffffffL);
+ uint64_t x187, uint64_t x188 = mulx_u64(x154, 0xffffffffffffffffL);
+ uint64_t x190, uint64_t x191 = mulx_u64(x154, 0xb0ffffffffffffffL);
+ uint64_t x193, uint8_t x194 = addcarryx_u64(0x0, x176, x178);
+ uint64_t x196, uint8_t x197 = addcarryx_u64(x194, x179, x181);
+ uint64_t x199, uint8_t x200 = addcarryx_u64(x197, x182, x184);
+ uint64_t x202, uint8_t x203 = addcarryx_u64(x200, x185, x187);
+ uint64_t x205, uint8_t x206 = addcarryx_u64(x203, x188, x190);
+ uint64_t x208, uint8_t _ = addcarryx_u64(0x0, x206, x191);
+ uint64_t _, uint8_t x212 = addcarryx_u64(0x0, x154, x175);
+ uint64_t x214, uint8_t x215 = addcarryx_u64(x212, x157, x193);
+ uint64_t x217, uint8_t x218 = addcarryx_u64(x215, x160, x196);
+ uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x163, x199);
+ uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x166, x202);
+ uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x169, x205);
+ uint64_t x229, uint8_t x230 = addcarryx_u64(x227, x172, x208);
+ uint8_t x231 = (x230 + x173);
+ uint64_t x233, uint64_t x234 = mulx_u64(x9, x15);
+ uint64_t x236, uint64_t x237 = mulx_u64(x9, x17);
+ uint64_t x239, uint64_t x240 = mulx_u64(x9, x19);
+ uint64_t x242, uint64_t x243 = mulx_u64(x9, x21);
+ uint64_t x245, uint64_t x246 = mulx_u64(x9, x23);
+ uint64_t x248, uint64_t x249 = mulx_u64(x9, x22);
+ uint64_t x251, uint8_t x252 = addcarryx_u64(0x0, x234, x236);
+ uint64_t x254, uint8_t x255 = addcarryx_u64(x252, x237, x239);
+ uint64_t x257, uint8_t x258 = addcarryx_u64(x255, x240, x242);
+ uint64_t x260, uint8_t x261 = addcarryx_u64(x258, x243, x245);
+ uint64_t x263, uint8_t x264 = addcarryx_u64(x261, x246, x248);
+ uint64_t x266, uint8_t _ = addcarryx_u64(0x0, x264, x249);
+ uint64_t x269, uint8_t x270 = addcarryx_u64(0x0, x214, x233);
+ uint64_t x272, uint8_t x273 = addcarryx_u64(x270, x217, x251);
+ uint64_t x275, uint8_t x276 = addcarryx_u64(x273, x220, x254);
+ uint64_t x278, uint8_t x279 = addcarryx_u64(x276, x223, x257);
+ uint64_t x281, uint8_t x282 = addcarryx_u64(x279, x226, x260);
+ uint64_t x284, uint8_t x285 = addcarryx_u64(x282, x229, x263);
+ uint64_t x287, uint8_t x288 = addcarryx_u64(x285, x231, x266);
+ uint64_t x290, uint64_t x291 = mulx_u64(x269, 0xffffffffffffffffL);
+ uint64_t x293, uint64_t x294 = mulx_u64(x269, 0xffffffffffffffffL);
+ uint64_t x296, uint64_t x297 = mulx_u64(x269, 0xffffffffffffffffL);
+ uint64_t x299, uint64_t x300 = mulx_u64(x269, 0xffffffffffffffffL);
+ uint64_t x302, uint64_t x303 = mulx_u64(x269, 0xffffffffffffffffL);
+ uint64_t x305, uint64_t x306 = mulx_u64(x269, 0xb0ffffffffffffffL);
+ uint64_t x308, uint8_t x309 = addcarryx_u64(0x0, x291, x293);
+ uint64_t x311, uint8_t x312 = addcarryx_u64(x309, x294, x296);
+ uint64_t x314, uint8_t x315 = addcarryx_u64(x312, x297, x299);
+ uint64_t x317, uint8_t x318 = addcarryx_u64(x315, x300, x302);
+ uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x303, x305);
+ uint64_t x323, uint8_t _ = addcarryx_u64(0x0, x321, x306);
+ uint64_t _, uint8_t x327 = addcarryx_u64(0x0, x269, x290);
+ uint64_t x329, uint8_t x330 = addcarryx_u64(x327, x272, x308);
+ uint64_t x332, uint8_t x333 = addcarryx_u64(x330, x275, x311);
+ uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x278, x314);
+ uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x281, x317);
+ uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x284, x320);
+ uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x287, x323);
+ uint8_t x346 = (x345 + x288);
+ uint64_t x348, uint64_t x349 = mulx_u64(x11, x15);
+ uint64_t x351, uint64_t x352 = mulx_u64(x11, x17);
+ uint64_t x354, uint64_t x355 = mulx_u64(x11, x19);
+ uint64_t x357, uint64_t x358 = mulx_u64(x11, x21);
+ uint64_t x360, uint64_t x361 = mulx_u64(x11, x23);
+ uint64_t x363, uint64_t x364 = mulx_u64(x11, x22);
+ uint64_t x366, uint8_t x367 = addcarryx_u64(0x0, x349, x351);
+ uint64_t x369, uint8_t x370 = addcarryx_u64(x367, x352, x354);
+ uint64_t x372, uint8_t x373 = addcarryx_u64(x370, x355, x357);
+ uint64_t x375, uint8_t x376 = addcarryx_u64(x373, x358, x360);
+ uint64_t x378, uint8_t x379 = addcarryx_u64(x376, x361, x363);
+ uint64_t x381, uint8_t _ = addcarryx_u64(0x0, x379, x364);
+ uint64_t x384, uint8_t x385 = addcarryx_u64(0x0, x329, x348);
+ uint64_t x387, uint8_t x388 = addcarryx_u64(x385, x332, x366);
+ uint64_t x390, uint8_t x391 = addcarryx_u64(x388, x335, x369);
+ uint64_t x393, uint8_t x394 = addcarryx_u64(x391, x338, x372);
+ uint64_t x396, uint8_t x397 = addcarryx_u64(x394, x341, x375);
+ uint64_t x399, uint8_t x400 = addcarryx_u64(x397, x344, x378);
+ uint64_t x402, uint8_t x403 = addcarryx_u64(x400, x346, x381);
+ uint64_t x405, uint64_t x406 = mulx_u64(x384, 0xffffffffffffffffL);
+ uint64_t x408, uint64_t x409 = mulx_u64(x384, 0xffffffffffffffffL);
+ uint64_t x411, uint64_t x412 = mulx_u64(x384, 0xffffffffffffffffL);
+ uint64_t x414, uint64_t x415 = mulx_u64(x384, 0xffffffffffffffffL);
+ uint64_t x417, uint64_t x418 = mulx_u64(x384, 0xffffffffffffffffL);
+ uint64_t x420, uint64_t x421 = mulx_u64(x384, 0xb0ffffffffffffffL);
+ uint64_t x423, uint8_t x424 = addcarryx_u64(0x0, x406, x408);
+ uint64_t x426, uint8_t x427 = addcarryx_u64(x424, x409, x411);
+ uint64_t x429, uint8_t x430 = addcarryx_u64(x427, x412, x414);
+ uint64_t x432, uint8_t x433 = addcarryx_u64(x430, x415, x417);
+ uint64_t x435, uint8_t x436 = addcarryx_u64(x433, x418, x420);
+ uint64_t x438, uint8_t _ = addcarryx_u64(0x0, x436, x421);
+ uint64_t _, uint8_t x442 = addcarryx_u64(0x0, x384, x405);
+ uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x387, x423);
+ uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x390, x426);
+ uint64_t x450, uint8_t x451 = addcarryx_u64(x448, x393, x429);
+ uint64_t x453, uint8_t x454 = addcarryx_u64(x451, x396, x432);
+ uint64_t x456, uint8_t x457 = addcarryx_u64(x454, x399, x435);
+ uint64_t x459, uint8_t x460 = addcarryx_u64(x457, x402, x438);
+ uint8_t x461 = (x460 + x403);
+ uint64_t x463, uint64_t x464 = mulx_u64(x13, x15);
+ uint64_t x466, uint64_t x467 = mulx_u64(x13, x17);
+ uint64_t x469, uint64_t x470 = mulx_u64(x13, x19);
+ uint64_t x472, uint64_t x473 = mulx_u64(x13, x21);
+ uint64_t x475, uint64_t x476 = mulx_u64(x13, x23);
+ uint64_t x478, uint64_t x479 = mulx_u64(x13, x22);
+ uint64_t x481, uint8_t x482 = addcarryx_u64(0x0, x464, x466);
+ uint64_t x484, uint8_t x485 = addcarryx_u64(x482, x467, x469);
+ uint64_t x487, uint8_t x488 = addcarryx_u64(x485, x470, x472);
+ uint64_t x490, uint8_t x491 = addcarryx_u64(x488, x473, x475);
+ uint64_t x493, uint8_t x494 = addcarryx_u64(x491, x476, x478);
+ uint64_t x496, uint8_t _ = addcarryx_u64(0x0, x494, x479);
+ uint64_t x499, uint8_t x500 = addcarryx_u64(0x0, x444, x463);
+ uint64_t x502, uint8_t x503 = addcarryx_u64(x500, x447, x481);
+ uint64_t x505, uint8_t x506 = addcarryx_u64(x503, x450, x484);
+ uint64_t x508, uint8_t x509 = addcarryx_u64(x506, x453, x487);
+ uint64_t x511, uint8_t x512 = addcarryx_u64(x509, x456, x490);
+ uint64_t x514, uint8_t x515 = addcarryx_u64(x512, x459, x493);
+ uint64_t x517, uint8_t x518 = addcarryx_u64(x515, x461, x496);
+ uint64_t x520, uint64_t x521 = mulx_u64(x499, 0xffffffffffffffffL);
+ uint64_t x523, uint64_t x524 = mulx_u64(x499, 0xffffffffffffffffL);
+ uint64_t x526, uint64_t x527 = mulx_u64(x499, 0xffffffffffffffffL);
+ uint64_t x529, uint64_t x530 = mulx_u64(x499, 0xffffffffffffffffL);
+ uint64_t x532, uint64_t x533 = mulx_u64(x499, 0xffffffffffffffffL);
+ uint64_t x535, uint64_t x536 = mulx_u64(x499, 0xb0ffffffffffffffL);
+ uint64_t x538, uint8_t x539 = addcarryx_u64(0x0, x521, x523);
+ uint64_t x541, uint8_t x542 = addcarryx_u64(x539, x524, x526);
+ uint64_t x544, uint8_t x545 = addcarryx_u64(x542, x527, x529);
+ uint64_t x547, uint8_t x548 = addcarryx_u64(x545, x530, x532);
+ uint64_t x550, uint8_t x551 = addcarryx_u64(x548, x533, x535);
+ uint64_t x553, uint8_t _ = addcarryx_u64(0x0, x551, x536);
+ uint64_t _, uint8_t x557 = addcarryx_u64(0x0, x499, x520);
+ uint64_t x559, uint8_t x560 = addcarryx_u64(x557, x502, x538);
+ uint64_t x562, uint8_t x563 = addcarryx_u64(x560, x505, x541);
+ uint64_t x565, uint8_t x566 = addcarryx_u64(x563, x508, x544);
+ uint64_t x568, uint8_t x569 = addcarryx_u64(x566, x511, x547);
+ uint64_t x571, uint8_t x572 = addcarryx_u64(x569, x514, x550);
+ uint64_t x574, uint8_t x575 = addcarryx_u64(x572, x517, x553);
+ uint8_t x576 = (x575 + x518);
+ uint64_t x578, uint64_t x579 = mulx_u64(x12, x15);
+ uint64_t x581, uint64_t x582 = mulx_u64(x12, x17);
+ uint64_t x584, uint64_t x585 = mulx_u64(x12, x19);
+ uint64_t x587, uint64_t x588 = mulx_u64(x12, x21);
+ uint64_t x590, uint64_t x591 = mulx_u64(x12, x23);
+ uint64_t x593, uint64_t x594 = mulx_u64(x12, x22);
+ uint64_t x596, uint8_t x597 = addcarryx_u64(0x0, x579, x581);
+ uint64_t x599, uint8_t x600 = addcarryx_u64(x597, x582, x584);
+ uint64_t x602, uint8_t x603 = addcarryx_u64(x600, x585, x587);
+ uint64_t x605, uint8_t x606 = addcarryx_u64(x603, x588, x590);
+ uint64_t x608, uint8_t x609 = addcarryx_u64(x606, x591, x593);
+ uint64_t x611, uint8_t _ = addcarryx_u64(0x0, x609, x594);
+ uint64_t x614, uint8_t x615 = addcarryx_u64(0x0, x559, x578);
+ uint64_t x617, uint8_t x618 = addcarryx_u64(x615, x562, x596);
+ uint64_t x620, uint8_t x621 = addcarryx_u64(x618, x565, x599);
+ uint64_t x623, uint8_t x624 = addcarryx_u64(x621, x568, x602);
+ uint64_t x626, uint8_t x627 = addcarryx_u64(x624, x571, x605);
+ uint64_t x629, uint8_t x630 = addcarryx_u64(x627, x574, x608);
+ uint64_t x632, uint8_t x633 = addcarryx_u64(x630, x576, x611);
+ uint64_t x635, uint64_t x636 = mulx_u64(x614, 0xffffffffffffffffL);
+ uint64_t x638, uint64_t x639 = mulx_u64(x614, 0xffffffffffffffffL);
+ uint64_t x641, uint64_t x642 = mulx_u64(x614, 0xffffffffffffffffL);
+ uint64_t x644, uint64_t x645 = mulx_u64(x614, 0xffffffffffffffffL);
+ uint64_t x647, uint64_t x648 = mulx_u64(x614, 0xffffffffffffffffL);
+ uint64_t x650, uint64_t x651 = mulx_u64(x614, 0xb0ffffffffffffffL);
+ uint64_t x653, uint8_t x654 = addcarryx_u64(0x0, x636, x638);
+ uint64_t x656, uint8_t x657 = addcarryx_u64(x654, x639, x641);
+ uint64_t x659, uint8_t x660 = addcarryx_u64(x657, x642, x644);
+ uint64_t x662, uint8_t x663 = addcarryx_u64(x660, x645, x647);
+ uint64_t x665, uint8_t x666 = addcarryx_u64(x663, x648, x650);
+ uint64_t x668, uint8_t _ = addcarryx_u64(0x0, x666, x651);
+ uint64_t _, uint8_t x672 = addcarryx_u64(0x0, x614, x635);
+ uint64_t x674, uint8_t x675 = addcarryx_u64(x672, x617, x653);
+ uint64_t x677, uint8_t x678 = addcarryx_u64(x675, x620, x656);
+ uint64_t x680, uint8_t x681 = addcarryx_u64(x678, x623, x659);
+ uint64_t x683, uint8_t x684 = addcarryx_u64(x681, x626, x662);
+ uint64_t x686, uint8_t x687 = addcarryx_u64(x684, x629, x665);
+ uint64_t x689, uint8_t x690 = addcarryx_u64(x687, x632, x668);
+ uint8_t x691 = (x690 + x633);
+ uint64_t x693, uint8_t x694 = subborrow_u64(0x0, x674, 0xffffffffffffffffL);
+ uint64_t x696, uint8_t x697 = subborrow_u64(x694, x677, 0xffffffffffffffffL);
+ uint64_t x699, uint8_t x700 = subborrow_u64(x697, x680, 0xffffffffffffffffL);
+ uint64_t x702, uint8_t x703 = subborrow_u64(x700, x683, 0xffffffffffffffffL);
+ uint64_t x705, uint8_t x706 = subborrow_u64(x703, x686, 0xffffffffffffffffL);
+ uint64_t x708, uint8_t x709 = subborrow_u64(x706, x689, 0xb0ffffffffffffffL);
+ uint64_t _, uint8_t x712 = subborrow_u64(x709, x691, 0x0);
+ uint64_t x713 = cmovznz64(x712, x708, x689);
+ uint64_t x714 = cmovznz64(x712, x705, x686);
+ uint64_t x715 = cmovznz64(x712, x702, x683);
+ uint64_t x716 = cmovznz64(x712, x699, x680);
+ uint64_t x717 = cmovznz64(x712, x696, x677);
+ uint64_t x718 = cmovznz64(x712, x693, x674);
+ return (x713, x714, x715, x716, x717, x718))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenz.c b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenz.c
new file mode 100644
index 000000000..c93f74257
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenz.c
@@ -0,0 +1,15 @@
+static void fenz(ReturnType uint64_t out[1], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x11 = (x10 | x9);
+ { uint64_t x12 = (x8 | x11);
+ { uint64_t x13 = (x6 | x12);
+ { uint64_t x14 = (x4 | x13);
+ { uint64_t x15 = (x2 | x14);
+ out[0] = x15;
+ }}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenzDisplay.log b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenzDisplay.log
new file mode 100644
index 000000000..f39f1d91b
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fenzDisplay.log
@@ -0,0 +1,12 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x11 = (x10 | x9);
+ uint64_t x12 = (x8 | x11);
+ uint64_t x13 = (x6 | x12);
+ uint64_t x14 = (x4 | x13);
+ uint64_t x15 = (x2 | x14);
+ return x15)
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType uint64_t
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feopp.c b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feopp.c
new file mode 100644
index 000000000..1e2fad524
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feopp.c
@@ -0,0 +1,34 @@
+static void feopp(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12; uint8_t x13 = _subborrow_u64(0x0, 0x0, x2, &x12);
+ { uint64_t x15; uint8_t x16 = _subborrow_u64(x13, 0x0, x4, &x15);
+ { uint64_t x18; uint8_t x19 = _subborrow_u64(x16, 0x0, x6, &x18);
+ { uint64_t x21; uint8_t x22 = _subborrow_u64(x19, 0x0, x8, &x21);
+ { uint64_t x24; uint8_t x25 = _subborrow_u64(x22, 0x0, x10, &x24);
+ { uint64_t x27; uint8_t x28 = _subborrow_u64(x25, 0x0, x9, &x27);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x32; uint8_t x33 = _addcarryx_u64(0x0, x12, x30, &x32);
+ { uint64_t x34 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x36; uint8_t x37 = _addcarryx_u64(x33, x15, x34, &x36);
+ { uint64_t x38 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x40; uint8_t x41 = _addcarryx_u64(x37, x18, x38, &x40);
+ { uint64_t x42 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x44; uint8_t x45 = _addcarryx_u64(x41, x21, x42, &x44);
+ { uint64_t x46 = (x29 & 0xffffffffffffffffL);
+ { uint64_t x48; uint8_t x49 = _addcarryx_u64(x45, x24, x46, &x48);
+ { uint64_t x50 = (x29 & 0xb0ffffffffffffffL);
+ { uint64_t x52; uint8_t _ = _addcarryx_u64(x49, x27, x50, &x52);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feoppDisplay.log b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feoppDisplay.log
new file mode 100644
index 000000000..72e96d79d
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/feoppDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = subborrow_u64(0x0, 0x0, x2);
+ uint64_t x15, uint8_t x16 = subborrow_u64(x13, 0x0, x4);
+ uint64_t x18, uint8_t x19 = subborrow_u64(x16, 0x0, x6);
+ uint64_t x21, uint8_t x22 = subborrow_u64(x19, 0x0, x8);
+ uint64_t x24, uint8_t x25 = subborrow_u64(x22, 0x0, x10);
+ uint64_t x27, uint8_t x28 = subborrow_u64(x25, 0x0, x9);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0xffffffffffffffffL);
+ uint64_t x32, uint8_t x33 = addcarryx_u64(0x0, x12, x30);
+ uint64_t x34 = (x29 & 0xffffffffffffffffL);
+ uint64_t x36, uint8_t x37 = addcarryx_u64(x33, x15, x34);
+ uint64_t x38 = (x29 & 0xffffffffffffffffL);
+ uint64_t x40, uint8_t x41 = addcarryx_u64(x37, x18, x38);
+ uint64_t x42 = (x29 & 0xffffffffffffffffL);
+ uint64_t x44, uint8_t x45 = addcarryx_u64(x41, x21, x42);
+ uint64_t x46 = (x29 & 0xffffffffffffffffL);
+ uint64_t x48, uint8_t x49 = addcarryx_u64(x45, x24, x46);
+ uint64_t x50 = (x29 & 0xb0ffffffffffffffL);
+ uint64_t x52, uint8_t _ = addcarryx_u64(x49, x27, x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesub.c b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesub.c
new file mode 100644
index 000000000..4a8b7c7dd
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesub.c
@@ -0,0 +1,40 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint64_t x25; uint8_t x26 = _subborrow_u64(0x0, x5, x15, &x25);
+ { uint64_t x28; uint8_t x29 = _subborrow_u64(x26, x7, x17, &x28);
+ { uint64_t x31; uint8_t x32 = _subborrow_u64(x29, x9, x19, &x31);
+ { uint64_t x34; uint8_t x35 = _subborrow_u64(x32, x11, x21, &x34);
+ { uint64_t x37; uint8_t x38 = _subborrow_u64(x35, x13, x23, &x37);
+ { uint64_t x40; uint8_t x41 = _subborrow_u64(x38, x12, x22, &x40);
+ { uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
+ { uint64_t x43 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x45; uint8_t x46 = _addcarryx_u64(0x0, x25, x43, &x45);
+ { uint64_t x47 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x49; uint8_t x50 = _addcarryx_u64(x46, x28, x47, &x49);
+ { uint64_t x51 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x53; uint8_t x54 = _addcarryx_u64(x50, x31, x51, &x53);
+ { uint64_t x55 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x57; uint8_t x58 = _addcarryx_u64(x54, x34, x55, &x57);
+ { uint64_t x59 = (x42 & 0xffffffffffffffffL);
+ { uint64_t x61; uint8_t x62 = _addcarryx_u64(x58, x37, x59, &x61);
+ { uint64_t x63 = (x42 & 0xb0ffffffffffffffL);
+ { uint64_t x65; uint8_t _ = _addcarryx_u64(x62, x40, x63, &x65);
+ out[0] = x45;
+ out[1] = x49;
+ out[2] = x53;
+ out[3] = x57;
+ out[4] = x61;
+ out[5] = x65;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesubDisplay.log b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..4d416958a
--- /dev/null
+++ b/src/Specific/montgomery64_2e384m79x2e376m1_6limbs/fesubDisplay.log
@@ -0,0 +1,26 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x25, uint8_t x26 = subborrow_u64(0x0, x5, x15);
+ uint64_t x28, uint8_t x29 = subborrow_u64(x26, x7, x17);
+ uint64_t x31, uint8_t x32 = subborrow_u64(x29, x9, x19);
+ uint64_t x34, uint8_t x35 = subborrow_u64(x32, x11, x21);
+ uint64_t x37, uint8_t x38 = subborrow_u64(x35, x13, x23);
+ uint64_t x40, uint8_t x41 = subborrow_u64(x38, x12, x22);
+ uint64_t x42 = cmovznz64(x41, 0x0, 0xffffffffffffffffL);
+ uint64_t x43 = (x42 & 0xffffffffffffffffL);
+ uint64_t x45, uint8_t x46 = addcarryx_u64(0x0, x25, x43);
+ uint64_t x47 = (x42 & 0xffffffffffffffffL);
+ uint64_t x49, uint8_t x50 = addcarryx_u64(x46, x28, x47);
+ uint64_t x51 = (x42 & 0xffffffffffffffffL);
+ uint64_t x53, uint8_t x54 = addcarryx_u64(x50, x31, x51);
+ uint64_t x55 = (x42 & 0xffffffffffffffffL);
+ uint64_t x57, uint8_t x58 = addcarryx_u64(x54, x34, x55);
+ uint64_t x59 = (x42 & 0xffffffffffffffffL);
+ uint64_t x61, uint8_t x62 = addcarryx_u64(x58, x37, x59);
+ uint64_t x63 = (x42 & 0xb0ffffffffffffffL);
+ uint64_t x65, uint8_t _ = addcarryx_u64(x62, x40, x63);
+ (Return x65, Return x61, Return x57, Return x53, Return x49, Return x45))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas32_2e189m25_7limbs/feadd.c b/src/Specific/solinas32_2e189m25_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e189m25_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e189m25_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25_7limbs/femul.c b/src/Specific/solinas32_2e189m25_7limbs/femul.c
new file mode 100644
index 000000000..9da02e886
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x19 * ((uint64_t)x14 * x26)));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x19 * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x19 * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ { ℤ x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) +ℤ (0x19 *ℤ (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ { ℤ x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) +ℤ (0x19 *ℤ (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
+ { ℤ x34 = (((uint64_t)x5 * x17) +ℤ (0x19 *ℤ (((uint64_t)x7 * x26) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x14 * x19))))))));
+ { uint64_t x35 = (x34 >> 0x1b);
+ { uint32_t x36 = (x34 & 0x7ffffff);
+ { ℤ x37 = (x35 +ℤ x33);
+ { uint64_t x38 = (x37 >> 0x1b);
+ { uint32_t x39 = (x37 & 0x7ffffff);
+ { ℤ x40 = (x38 +ℤ x32);
+ { uint64_t x41 = (x40 >> 0x1b);
+ { uint32_t x42 = (x40 & 0x7ffffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint64_t x44 = (x43 >> 0x1b);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint64_t x47 = (x46 >> 0x1b);
+ { uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint64_t x50 = (x49 >> 0x1b);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint64_t x53 = (x52 >> 0x1b);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ { uint64_t x55 = (x36 + (0x19 * x53));
+ { uint32_t x56 = (uint32_t) (x55 >> 0x1b);
+ { uint32_t x57 = ((uint32_t)x55 & 0x7ffffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x1b);
+ { uint32_t x60 = (x58 & 0x7ffffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e189m25_7limbs/femulDisplay.log b/src/Specific/solinas32_2e189m25_7limbs/femulDisplay.log
new file mode 100644
index 000000000..6f1d5362e
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + (((uint64_t)x7 * x27) + (((uint64_t)x9 * x25) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (((uint64_t)x15 * x19) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + (((uint64_t)x7 * x25) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x15 * x17)))))) + (0x19 * ((uint64_t)x14 * x26)));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((uint64_t)x13 * x17))))) + (0x19 * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + ((uint64_t)x11 * x17)))) + (0x19 * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ ℤ x32 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + ((uint64_t)x9 * x17))) +ℤ (0x19 *ℤ (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ ℤ x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) +ℤ (0x19 *ℤ (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
+ ℤ x34 = (((uint64_t)x5 * x17) +ℤ (0x19 *ℤ (((uint64_t)x7 * x26) + (((uint64_t)x9 * x27) + (((uint64_t)x11 * x25) + (((uint64_t)x13 * x23) + (((uint64_t)x15 * x21) + ((uint64_t)x14 * x19))))))));
+ uint64_t x35 = (x34 >> 0x1b);
+ uint32_t x36 = (x34 & 0x7ffffff);
+ ℤ x37 = (x35 +ℤ x33);
+ uint64_t x38 = (x37 >> 0x1b);
+ uint32_t x39 = (x37 & 0x7ffffff);
+ ℤ x40 = (x38 +ℤ x32);
+ uint64_t x41 = (x40 >> 0x1b);
+ uint32_t x42 = (x40 & 0x7ffffff);
+ uint64_t x43 = (x41 + x31);
+ uint64_t x44 = (x43 >> 0x1b);
+ uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
+ uint64_t x46 = (x44 + x30);
+ uint64_t x47 = (x46 >> 0x1b);
+ uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
+ uint64_t x49 = (x47 + x29);
+ uint64_t x50 = (x49 >> 0x1b);
+ uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
+ uint64_t x52 = (x50 + x28);
+ uint64_t x53 = (x52 >> 0x1b);
+ uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ uint64_t x55 = (x36 + (0x19 * x53));
+ uint32_t x56 = (uint32_t) (x55 >> 0x1b);
+ uint32_t x57 = ((uint32_t)x55 & 0x7ffffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x1b);
+ uint32_t x60 = (x58 & 0x7ffffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25_7limbs/fesquare.c b/src/Specific/solinas32_2e189m25_7limbs/fesquare.c
new file mode 100644
index 000000000..2d8ae4b5a
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x19 * ((uint64_t)x11 * x11)));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x19 * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ { ℤ x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ (0x19 *ℤ (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ { ℤ x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x19 *ℤ (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
+ { ℤ x19 = (((uint64_t)x2 * x2) +ℤ (0x19 *ℤ (((uint64_t)x4 * x11) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x11 * x4))))))));
+ { uint64_t x20 = (x19 >> 0x1b);
+ { uint32_t x21 = (x19 & 0x7ffffff);
+ { ℤ x22 = (x20 +ℤ x18);
+ { uint64_t x23 = (x22 >> 0x1b);
+ { uint32_t x24 = (x22 & 0x7ffffff);
+ { ℤ x25 = (x23 +ℤ x17);
+ { uint64_t x26 = (x25 >> 0x1b);
+ { uint32_t x27 = (x25 & 0x7ffffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint64_t x29 = (x28 >> 0x1b);
+ { uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint64_t x32 = (x31 >> 0x1b);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint64_t x35 = (x34 >> 0x1b);
+ { uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint64_t x38 = (x37 >> 0x1b);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
+ { uint64_t x40 = (x21 + (0x19 * x38));
+ { uint32_t x41 = (uint32_t) (x40 >> 0x1b);
+ { uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x1b);
+ { uint32_t x45 = (x43 & 0x7ffffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e189m25_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e189m25_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..efc8e6c28
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + (((uint64_t)x4 * x12) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + (((uint64_t)x12 * x4) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0x19 * ((uint64_t)x11 * x11)));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x19 * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x19 * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ ℤ x17 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) +ℤ (0x19 *ℤ (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ ℤ x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) +ℤ (0x19 *ℤ (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
+ ℤ x19 = (((uint64_t)x2 * x2) +ℤ (0x19 *ℤ (((uint64_t)x4 * x11) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + ((uint64_t)x11 * x4))))))));
+ uint64_t x20 = (x19 >> 0x1b);
+ uint32_t x21 = (x19 & 0x7ffffff);
+ ℤ x22 = (x20 +ℤ x18);
+ uint64_t x23 = (x22 >> 0x1b);
+ uint32_t x24 = (x22 & 0x7ffffff);
+ ℤ x25 = (x23 +ℤ x17);
+ uint64_t x26 = (x25 >> 0x1b);
+ uint32_t x27 = (x25 & 0x7ffffff);
+ uint64_t x28 = (x26 + x16);
+ uint64_t x29 = (x28 >> 0x1b);
+ uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
+ uint64_t x31 = (x29 + x15);
+ uint64_t x32 = (x31 >> 0x1b);
+ uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
+ uint64_t x34 = (x32 + x14);
+ uint64_t x35 = (x34 >> 0x1b);
+ uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
+ uint64_t x37 = (x35 + x13);
+ uint64_t x38 = (x37 >> 0x1b);
+ uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
+ uint64_t x40 = (x21 + (0x19 * x38));
+ uint32_t x41 = (uint32_t) (x40 >> 0x1b);
+ uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x1b);
+ uint32_t x45 = (x43 & 0x7ffffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25_7limbs/fesub.c b/src/Specific/solinas32_2e189m25_7limbs/fesub.c
new file mode 100644
index 000000000..c8d4d9289
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((0xfffffce + x5) - x17);
+ out[1] = ((0xffffffe + x7) - x19);
+ out[2] = ((0xffffffe + x9) - x21);
+ out[3] = ((0xffffffe + x11) - x23);
+ out[4] = ((0xffffffe + x13) - x25);
+ out[5] = ((0xffffffe + x15) - x27);
+ out[6] = ((0xffffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e189m25_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e189m25_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..74fbc0216
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0xffffffe + x14) - x26), ((0xffffffe + x15) - x27), ((0xffffffe + x13) - x25), ((0xffffffe + x11) - x23), ((0xffffffe + x9) - x21), ((0xffffffe + x7) - x19), ((0xfffffce + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e189m25_7limbs/freeze.c b/src/Specific/solinas32_2e189m25_7limbs/freeze.c
new file mode 100644
index 000000000..861a4917d
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffe7);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & 0x7ffffe7);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0x7ffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0x7ffffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0x7ffffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0x7ffffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0x7ffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0x7ffffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e189m25_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e189m25_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..8094a8368
--- /dev/null
+++ b/src/Specific/solinas32_2e189m25_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffe7);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & 0x7ffffe7);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0x7ffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0x7ffffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0x7ffffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0x7ffffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0x7ffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0x7ffffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11_7limbs/feadd.c b/src/Specific/solinas32_2e190m11_7limbs/feadd.c
new file mode 100644
index 000000000..5288d0bef
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e190m11_7limbs/feaddDisplay.log b/src/Specific/solinas32_2e190m11_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..d22997dcb
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11_7limbs/femul.c b/src/Specific/solinas32_2e190m11_7limbs/femul.c
new file mode 100644
index 000000000..ed25ed8f1
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ { uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((0x2 * ((uint64_t)x13 * x21)) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
+ { uint64_t x29 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + ((uint64_t)x15 * x17)))))) + (0xb * ((uint64_t)x14 * x26)));
+ { uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0xb * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ { uint64_t x31 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((uint64_t)x11 * x17)))) + (0xb * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ { uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0xb * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ { uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0xb * (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
+ { ℤ x34 = (((uint64_t)x5 * x17) +ℤ (0xb *ℤ ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ { uint64_t x35 = (x34 >> 0x1c);
+ { uint32_t x36 = (x34 & 0xfffffff);
+ { uint64_t x37 = (x35 + x33);
+ { uint64_t x38 = (x37 >> 0x1b);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
+ { uint64_t x40 = (x38 + x32);
+ { uint64_t x41 = (x40 >> 0x1b);
+ { uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
+ { uint64_t x43 = (x41 + x31);
+ { uint64_t x44 = (x43 >> 0x1b);
+ { uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
+ { uint64_t x46 = (x44 + x30);
+ { uint64_t x47 = (x46 >> 0x1b);
+ { uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
+ { uint64_t x49 = (x47 + x29);
+ { uint64_t x50 = (x49 >> 0x1b);
+ { uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
+ { uint64_t x52 = (x50 + x28);
+ { uint64_t x53 = (x52 >> 0x1b);
+ { uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ { uint64_t x55 = (x36 + (0xb * x53));
+ { uint32_t x56 = (uint32_t) (x55 >> 0x1c);
+ { uint32_t x57 = ((uint32_t)x55 & 0xfffffff);
+ { uint32_t x58 = (x56 + x39);
+ { uint32_t x59 = (x58 >> 0x1b);
+ { uint32_t x60 = (x58 & 0x7ffffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e190m11_7limbs/femulDisplay.log b/src/Specific/solinas32_2e190m11_7limbs/femulDisplay.log
new file mode 100644
index 000000000..8e4dfcb20
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint64_t x28 = (((uint64_t)x5 * x26) + ((0x2 * ((uint64_t)x7 * x27)) + ((0x2 * ((uint64_t)x9 * x25)) + ((0x2 * ((uint64_t)x11 * x23)) + ((0x2 * ((uint64_t)x13 * x21)) + ((0x2 * ((uint64_t)x15 * x19)) + ((uint64_t)x14 * x17)))))));
+ uint64_t x29 = ((((uint64_t)x5 * x27) + ((0x2 * ((uint64_t)x7 * x25)) + ((0x2 * ((uint64_t)x9 * x23)) + ((0x2 * ((uint64_t)x11 * x21)) + ((0x2 * ((uint64_t)x13 * x19)) + ((uint64_t)x15 * x17)))))) + (0xb * ((uint64_t)x14 * x26)));
+ uint64_t x30 = ((((uint64_t)x5 * x25) + ((0x2 * ((uint64_t)x7 * x23)) + ((0x2 * ((uint64_t)x9 * x21)) + ((0x2 * ((uint64_t)x11 * x19)) + ((uint64_t)x13 * x17))))) + (0xb * (((uint64_t)x15 * x26) + ((uint64_t)x14 * x27))));
+ uint64_t x31 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + ((0x2 * ((uint64_t)x9 * x19)) + ((uint64_t)x11 * x17)))) + (0xb * (((uint64_t)x13 * x26) + (((uint64_t)x15 * x27) + ((uint64_t)x14 * x25)))));
+ uint64_t x32 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((uint64_t)x9 * x17))) + (0xb * (((uint64_t)x11 * x26) + (((uint64_t)x13 * x27) + (((uint64_t)x15 * x25) + ((uint64_t)x14 * x23))))));
+ uint64_t x33 = ((((uint64_t)x5 * x19) + ((uint64_t)x7 * x17)) + (0xb * (((uint64_t)x9 * x26) + (((uint64_t)x11 * x27) + (((uint64_t)x13 * x25) + (((uint64_t)x15 * x23) + ((uint64_t)x14 * x21)))))));
+ ℤ x34 = (((uint64_t)x5 * x17) +ℤ (0xb *ℤ ((0x2 * ((uint64_t)x7 * x26)) + ((0x2 * ((uint64_t)x9 * x27)) + ((0x2 * ((uint64_t)x11 * x25)) + ((0x2 * ((uint64_t)x13 * x23)) + ((0x2 * ((uint64_t)x15 * x21)) + (0x2 * ((uint64_t)x14 * x19)))))))));
+ uint64_t x35 = (x34 >> 0x1c);
+ uint32_t x36 = (x34 & 0xfffffff);
+ uint64_t x37 = (x35 + x33);
+ uint64_t x38 = (x37 >> 0x1b);
+ uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
+ uint64_t x40 = (x38 + x32);
+ uint64_t x41 = (x40 >> 0x1b);
+ uint32_t x42 = ((uint32_t)x40 & 0x7ffffff);
+ uint64_t x43 = (x41 + x31);
+ uint64_t x44 = (x43 >> 0x1b);
+ uint32_t x45 = ((uint32_t)x43 & 0x7ffffff);
+ uint64_t x46 = (x44 + x30);
+ uint64_t x47 = (x46 >> 0x1b);
+ uint32_t x48 = ((uint32_t)x46 & 0x7ffffff);
+ uint64_t x49 = (x47 + x29);
+ uint64_t x50 = (x49 >> 0x1b);
+ uint32_t x51 = ((uint32_t)x49 & 0x7ffffff);
+ uint64_t x52 = (x50 + x28);
+ uint64_t x53 = (x52 >> 0x1b);
+ uint32_t x54 = ((uint32_t)x52 & 0x7ffffff);
+ uint64_t x55 = (x36 + (0xb * x53));
+ uint32_t x56 = (uint32_t) (x55 >> 0x1c);
+ uint32_t x57 = ((uint32_t)x55 & 0xfffffff);
+ uint32_t x58 = (x56 + x39);
+ uint32_t x59 = (x58 >> 0x1b);
+ uint32_t x60 = (x58 & 0x7ffffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11_7limbs/fesquare.c b/src/Specific/solinas32_2e190m11_7limbs/fesquare.c
new file mode 100644
index 000000000..ece920735
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
+ { uint64_t x14 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xb * ((uint64_t)x11 * x11)));
+ { uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xb * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ { uint64_t x16 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xb * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ { uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xb * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ { uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xb * (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
+ { ℤ x19 = (((uint64_t)x2 * x2) +ℤ (0xb *ℤ ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ { uint64_t x20 = (x19 >> 0x1c);
+ { uint32_t x21 = (x19 & 0xfffffff);
+ { uint64_t x22 = (x20 + x18);
+ { uint64_t x23 = (x22 >> 0x1b);
+ { uint32_t x24 = ((uint32_t)x22 & 0x7ffffff);
+ { uint64_t x25 = (x23 + x17);
+ { uint64_t x26 = (x25 >> 0x1b);
+ { uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
+ { uint64_t x28 = (x26 + x16);
+ { uint64_t x29 = (x28 >> 0x1b);
+ { uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
+ { uint64_t x31 = (x29 + x15);
+ { uint64_t x32 = (x31 >> 0x1b);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
+ { uint64_t x34 = (x32 + x14);
+ { uint64_t x35 = (x34 >> 0x1b);
+ { uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
+ { uint64_t x37 = (x35 + x13);
+ { uint64_t x38 = (x37 >> 0x1b);
+ { uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
+ { uint64_t x40 = (x21 + (0xb * x38));
+ { uint32_t x41 = (uint32_t) (x40 >> 0x1c);
+ { uint32_t x42 = ((uint32_t)x40 & 0xfffffff);
+ { uint32_t x43 = (x41 + x24);
+ { uint32_t x44 = (x43 >> 0x1b);
+ { uint32_t x45 = (x43 & 0x7ffffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e190m11_7limbs/fesquareDisplay.log b/src/Specific/solinas32_2e190m11_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..f6685bd3a
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x13 = (((uint64_t)x2 * x11) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + ((0x2 * ((uint64_t)x8 * x8)) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x11 * x2)))))));
+ uint64_t x14 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + ((0x2 * ((uint64_t)x6 * x8)) + ((0x2 * ((uint64_t)x8 * x6)) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0xb * ((uint64_t)x11 * x11)));
+ uint64_t x15 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xb * (((uint64_t)x12 * x11) + ((uint64_t)x11 * x12))));
+ uint64_t x16 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xb * (((uint64_t)x10 * x11) + (((uint64_t)x12 * x12) + ((uint64_t)x11 * x10)))));
+ uint64_t x17 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xb * (((uint64_t)x8 * x11) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + ((uint64_t)x11 * x8))))));
+ uint64_t x18 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xb * (((uint64_t)x6 * x11) + (((uint64_t)x8 * x12) + (((uint64_t)x10 * x10) + (((uint64_t)x12 * x8) + ((uint64_t)x11 * x6)))))));
+ ℤ x19 = (((uint64_t)x2 * x2) +ℤ (0xb *ℤ ((0x2 * ((uint64_t)x4 * x11)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + (0x2 * ((uint64_t)x11 * x4)))))))));
+ uint64_t x20 = (x19 >> 0x1c);
+ uint32_t x21 = (x19 & 0xfffffff);
+ uint64_t x22 = (x20 + x18);
+ uint64_t x23 = (x22 >> 0x1b);
+ uint32_t x24 = ((uint32_t)x22 & 0x7ffffff);
+ uint64_t x25 = (x23 + x17);
+ uint64_t x26 = (x25 >> 0x1b);
+ uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
+ uint64_t x28 = (x26 + x16);
+ uint64_t x29 = (x28 >> 0x1b);
+ uint32_t x30 = ((uint32_t)x28 & 0x7ffffff);
+ uint64_t x31 = (x29 + x15);
+ uint64_t x32 = (x31 >> 0x1b);
+ uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
+ uint64_t x34 = (x32 + x14);
+ uint64_t x35 = (x34 >> 0x1b);
+ uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
+ uint64_t x37 = (x35 + x13);
+ uint64_t x38 = (x37 >> 0x1b);
+ uint32_t x39 = ((uint32_t)x37 & 0x7ffffff);
+ uint64_t x40 = (x21 + (0xb * x38));
+ uint32_t x41 = (uint32_t) (x40 >> 0x1c);
+ uint32_t x42 = ((uint32_t)x40 & 0xfffffff);
+ uint32_t x43 = (x41 + x24);
+ uint32_t x44 = (x43 >> 0x1b);
+ uint32_t x45 = (x43 & 0x7ffffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11_7limbs/fesub.c b/src/Specific/solinas32_2e190m11_7limbs/fesub.c
new file mode 100644
index 000000000..ff043a07f
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint32_t out[7], const uint32_t in1[7], const uint32_t in2[7]) {
+ { const uint32_t x14 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x26 = in2[6];
+ { const uint32_t x27 = in2[5];
+ { const uint32_t x25 = in2[4];
+ { const uint32_t x23 = in2[3];
+ { const uint32_t x21 = in2[2];
+ { const uint32_t x19 = in2[1];
+ { const uint32_t x17 = in2[0];
+ out[0] = ((0x1fffffea + x5) - x17);
+ out[1] = ((0xffffffe + x7) - x19);
+ out[2] = ((0xffffffe + x9) - x21);
+ out[3] = ((0xffffffe + x11) - x23);
+ out[4] = ((0xffffffe + x13) - x25);
+ out[5] = ((0xffffffe + x15) - x27);
+ out[6] = ((0xffffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e190m11_7limbs/fesubDisplay.log b/src/Specific/solinas32_2e190m11_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..e7a7f3328
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0xffffffe + x14) - x26), ((0xffffffe + x15) - x27), ((0xffffffe + x13) - x25), ((0xffffffe + x11) - x23), ((0xffffffe + x9) - x21), ((0xffffffe + x7) - x19), ((0x1fffffea + x5) - x17)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e190m11_7limbs/freeze.c b/src/Specific/solinas32_2e190m11_7limbs/freeze.c
new file mode 100644
index 000000000..6e4e52017
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint32_t out[7], const uint32_t in1[7]) {
+ { const uint32_t x11 = in1[6];
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff5);
+ { uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffff);
+ { uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffff);
+ { uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffff);
+ { uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffff);
+ { uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffff);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffff);
+ { uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ { uint32_t x35 = (x34 & 0xffffff5);
+ { uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint32_t x39 = (x34 & 0x7ffffff);
+ { uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint32_t x43 = (x34 & 0x7ffffff);
+ { uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint32_t x47 = (x34 & 0x7ffffff);
+ { uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint32_t x51 = (x34 & 0x7ffffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint32_t x55 = (x34 & 0x7ffffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint32_t x59 = (x34 & 0x7ffffff);
+ { uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e190m11_7limbs/freezeDisplay.log b/src/Specific/solinas32_2e190m11_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..1e9673e6c
--- /dev/null
+++ b/src/Specific/solinas32_2e190m11_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff5);
+ uint32_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffff);
+ uint32_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffff);
+ uint32_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffff);
+ uint32_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffff);
+ uint32_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffff);
+ uint32_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffff);
+ uint32_t x34 = cmovznz32(x33, 0x0, 0xffffffff);
+ uint32_t x35 = (x34 & 0xffffff5);
+ uint32_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint32_t x39 = (x34 & 0x7ffffff);
+ uint32_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint32_t x43 = (x34 & 0x7ffffff);
+ uint32_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint32_t x47 = (x34 & 0x7ffffff);
+ uint32_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint32_t x51 = (x34 & 0x7ffffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint32_t x55 = (x34 & 0x7ffffff);
+ uint32_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint32_t x59 = (x34 & 0x7ffffff);
+ uint32_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/feadd.c b/src/Specific/solinas64_2e322m2e161m1_7limbs/feadd.c
new file mode 100644
index 000000000..9acf97578
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x26 = in2[6];
+ { const uint64_t x27 = in2[5];
+ { const uint64_t x25 = in2[4];
+ { const uint64_t x23 = in2[3];
+ { const uint64_t x21 = in2[2];
+ { const uint64_t x19 = in2[1];
+ { const uint64_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/feaddDisplay.log b/src/Specific/solinas64_2e322m2e161m1_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..6320440fc
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/fesub.c b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesub.c
new file mode 100644
index 000000000..2c7591fdf
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x26 = in2[6];
+ { const uint64_t x27 = in2[5];
+ { const uint64_t x25 = in2[4];
+ { const uint64_t x23 = in2[3];
+ { const uint64_t x21 = in2[2];
+ { const uint64_t x19 = in2[1];
+ { const uint64_t x17 = in2[0];
+ out[0] = ((0x7ffffffffffe + x5) - x17);
+ out[1] = ((0x7ffffffffffe + x7) - x19);
+ out[2] = ((0x7ffffffffffe + x9) - x21);
+ out[3] = ((0x7ffffefffffe + x11) - x23);
+ out[4] = ((0x7ffffffffffe + x13) - x25);
+ out[5] = ((0x7ffffffffffe + x15) - x27);
+ out[6] = ((0x7ffffffffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..9d6ff5060
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0x7ffffffffffe + x14) - x26), ((0x7ffffffffffe + x15) - x27), ((0x7ffffffffffe + x13) - x25), ((0x7ffffefffffe + x11) - x23), ((0x7ffffffffffe + x9) - x21), ((0x7ffffffffffe + x7) - x19), ((0x7ffffffffffe + x5) - x17)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/freeze.c b/src/Specific/solinas64_2e322m2e161m1_7limbs/freeze.c
new file mode 100644
index 000000000..f9314590d
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint64_t out[7], const uint64_t in1[7]) {
+ { const uint64_t x11 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffff);
+ { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffffffffff);
+ { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffff);
+ { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffff7fffff);
+ { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffffffffff);
+ { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffffffffff);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffff);
+ { uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
+ { uint64_t x35 = (x34 & 0x3fffffffffff);
+ { uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint64_t x39 = (x34 & 0x3fffffffffff);
+ { uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint64_t x43 = (x34 & 0x3fffffffffff);
+ { uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint64_t x47 = (x34 & 0x3fffff7fffff);
+ { uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint64_t x51 = (x34 & 0x3fffffffffff);
+ { uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint64_t x55 = (x34 & 0x3fffffffffff);
+ { uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint64_t x59 = (x34 & 0x3fffffffffff);
+ { uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e322m2e161m1_7limbs/freezeDisplay.log b/src/Specific/solinas64_2e322m2e161m1_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..08f806634
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffff);
+ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffffffffff);
+ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffff);
+ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffff7fffff);
+ uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffffffffff);
+ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffffffffff);
+ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffff);
+ uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
+ uint64_t x35 = (x34 & 0x3fffffffffff);
+ uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint64_t x39 = (x34 & 0x3fffffffffff);
+ uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint64_t x43 = (x34 & 0x3fffffffffff);
+ uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint64_t x47 = (x34 & 0x3fffff7fffff);
+ uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint64_t x51 = (x34 & 0x3fffffffffff);
+ uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint64_t x55 = (x34 & 0x3fffffffffff);
+ uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint64_t x59 = (x34 & 0x3fffffffffff);
+ uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e379m19_7limbs/feadd.c b/src/Specific/solinas64_2e379m19_7limbs/feadd.c
new file mode 100644
index 000000000..9acf97578
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x26 = in2[6];
+ { const uint64_t x27 = in2[5];
+ { const uint64_t x25 = in2[4];
+ { const uint64_t x23 = in2[3];
+ { const uint64_t x21 = in2[2];
+ { const uint64_t x19 = in2[1];
+ { const uint64_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e379m19_7limbs/feaddDisplay.log b/src/Specific/solinas64_2e379m19_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..6320440fc
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e379m19_7limbs/femul.c b/src/Specific/solinas64_2e379m19_7limbs/femul.c
new file mode 100644
index 000000000..13915c820
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x26 = in2[6];
+ { const uint64_t x27 = in2[5];
+ { const uint64_t x25 = in2[4];
+ { const uint64_t x23 = in2[3];
+ { const uint64_t x21 = in2[2];
+ { const uint64_t x19 = in2[1];
+ { const uint64_t x17 = in2[0];
+ { uint128_t x28 = (((uint128_t)x5 * x26) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + ((0x2 * ((uint128_t)x15 * x19)) + ((uint128_t)x14 * x17)))))));
+ { uint128_t x29 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((0x2 * ((uint128_t)x13 * x19)) + ((uint128_t)x15 * x17)))))) + (0x13 * ((uint128_t)x14 * x26)));
+ { uint128_t x30 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((0x2 * ((uint128_t)x11 * x19)) + ((uint128_t)x13 * x17))))) + (0x13 * (((uint128_t)x15 * x26) + ((uint128_t)x14 * x27))));
+ { uint128_t x31 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((0x2 * ((uint128_t)x9 * x19)) + ((uint128_t)x11 * x17)))) + (0x13 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
+ { uint128_t x32 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((uint128_t)x9 * x17))) + (0x13 * (((uint128_t)x11 * x26) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x14 * x23))))));
+ { uint128_t x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) + (0x13 * (((uint128_t)x9 * x26) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x14 * x21)))))));
+ { uint128_t x34 = (((uint128_t)x5 * x17) + (0x13 * ((0x2 * ((uint128_t)x7 * x26)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + (0x2 * ((uint128_t)x14 * x19)))))))));
+ { uint128_t x35 = (x34 >> 0x37);
+ { uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffffff);
+ { uint128_t x37 = (x35 + x33);
+ { uint128_t x38 = (x37 >> 0x36);
+ { uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
+ { uint128_t x40 = (x38 + x32);
+ { uint64_t x41 = (uint64_t) (x40 >> 0x36);
+ { uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffffff);
+ { uint128_t x43 = (x41 + x31);
+ { uint64_t x44 = (uint64_t) (x43 >> 0x36);
+ { uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffffff);
+ { uint128_t x46 = (x44 + x30);
+ { uint64_t x47 = (uint64_t) (x46 >> 0x36);
+ { uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffffff);
+ { uint128_t x49 = (x47 + x29);
+ { uint64_t x50 = (uint64_t) (x49 >> 0x36);
+ { uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffffff);
+ { uint128_t x52 = (x50 + x28);
+ { uint64_t x53 = (uint64_t) (x52 >> 0x36);
+ { uint64_t x54 = ((uint64_t)x52 & 0x3fffffffffffff);
+ { uint128_t x55 = (x36 + ((uint128_t)0x13 * x53));
+ { uint64_t x56 = (uint64_t) (x55 >> 0x37);
+ { uint64_t x57 = ((uint64_t)x55 & 0x7fffffffffffff);
+ { uint64_t x58 = (x56 + x39);
+ { uint64_t x59 = (x58 >> 0x36);
+ { uint64_t x60 = (x58 & 0x3fffffffffffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e379m19_7limbs/femulDisplay.log b/src/Specific/solinas64_2e379m19_7limbs/femulDisplay.log
new file mode 100644
index 000000000..dabe48b5c
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint128_t x28 = (((uint128_t)x5 * x26) + ((0x2 * ((uint128_t)x7 * x27)) + ((0x2 * ((uint128_t)x9 * x25)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + ((0x2 * ((uint128_t)x15 * x19)) + ((uint128_t)x14 * x17)))))));
+ uint128_t x29 = ((((uint128_t)x5 * x27) + ((0x2 * ((uint128_t)x7 * x25)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((0x2 * ((uint128_t)x13 * x19)) + ((uint128_t)x15 * x17)))))) + (0x13 * ((uint128_t)x14 * x26)));
+ uint128_t x30 = ((((uint128_t)x5 * x25) + ((0x2 * ((uint128_t)x7 * x23)) + ((0x2 * ((uint128_t)x9 * x21)) + ((0x2 * ((uint128_t)x11 * x19)) + ((uint128_t)x13 * x17))))) + (0x13 * (((uint128_t)x15 * x26) + ((uint128_t)x14 * x27))));
+ uint128_t x31 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + ((0x2 * ((uint128_t)x9 * x19)) + ((uint128_t)x11 * x17)))) + (0x13 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
+ uint128_t x32 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((uint128_t)x9 * x17))) + (0x13 * (((uint128_t)x11 * x26) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x14 * x23))))));
+ uint128_t x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) + (0x13 * (((uint128_t)x9 * x26) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x14 * x21)))))));
+ uint128_t x34 = (((uint128_t)x5 * x17) + (0x13 * ((0x2 * ((uint128_t)x7 * x26)) + ((0x2 * ((uint128_t)x9 * x27)) + ((0x2 * ((uint128_t)x11 * x25)) + ((0x2 * ((uint128_t)x13 * x23)) + ((0x2 * ((uint128_t)x15 * x21)) + (0x2 * ((uint128_t)x14 * x19)))))))));
+ uint128_t x35 = (x34 >> 0x37);
+ uint64_t x36 = ((uint64_t)x34 & 0x7fffffffffffff);
+ uint128_t x37 = (x35 + x33);
+ uint128_t x38 = (x37 >> 0x36);
+ uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
+ uint128_t x40 = (x38 + x32);
+ uint64_t x41 = (uint64_t) (x40 >> 0x36);
+ uint64_t x42 = ((uint64_t)x40 & 0x3fffffffffffff);
+ uint128_t x43 = (x41 + x31);
+ uint64_t x44 = (uint64_t) (x43 >> 0x36);
+ uint64_t x45 = ((uint64_t)x43 & 0x3fffffffffffff);
+ uint128_t x46 = (x44 + x30);
+ uint64_t x47 = (uint64_t) (x46 >> 0x36);
+ uint64_t x48 = ((uint64_t)x46 & 0x3fffffffffffff);
+ uint128_t x49 = (x47 + x29);
+ uint64_t x50 = (uint64_t) (x49 >> 0x36);
+ uint64_t x51 = ((uint64_t)x49 & 0x3fffffffffffff);
+ uint128_t x52 = (x50 + x28);
+ uint64_t x53 = (uint64_t) (x52 >> 0x36);
+ uint64_t x54 = ((uint64_t)x52 & 0x3fffffffffffff);
+ uint128_t x55 = (x36 + ((uint128_t)0x13 * x53));
+ uint64_t x56 = (uint64_t) (x55 >> 0x37);
+ uint64_t x57 = ((uint64_t)x55 & 0x7fffffffffffff);
+ uint64_t x58 = (x56 + x39);
+ uint64_t x59 = (x58 >> 0x36);
+ uint64_t x60 = (x58 & 0x3fffffffffffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e379m19_7limbs/fesquare.c b/src/Specific/solinas64_2e379m19_7limbs/fesquare.c
new file mode 100644
index 000000000..e2ddf49ac
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint64_t out[7], const uint64_t in1[7]) {
+ { const uint64_t x11 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x13 = (((uint128_t)x2 * x11) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x11 * x2)))))));
+ { uint128_t x14 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x13 * ((uint128_t)x11 * x11)));
+ { uint128_t x15 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x13 * (((uint128_t)x12 * x11) + ((uint128_t)x11 * x12))));
+ { uint128_t x16 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
+ { uint128_t x17 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * (((uint128_t)x8 * x11) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((uint128_t)x11 * x8))))));
+ { uint128_t x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x11) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((uint128_t)x11 * x6)))))));
+ { uint128_t x19 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x11)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + (0x2 * ((uint128_t)x11 * x4)))))))));
+ { uint128_t x20 = (x19 >> 0x37);
+ { uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffffff);
+ { uint128_t x22 = (x20 + x18);
+ { uint128_t x23 = (x22 >> 0x36);
+ { uint64_t x24 = ((uint64_t)x22 & 0x3fffffffffffff);
+ { uint128_t x25 = (x23 + x17);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x36);
+ { uint64_t x27 = ((uint64_t)x25 & 0x3fffffffffffff);
+ { uint128_t x28 = (x26 + x16);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x36);
+ { uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
+ { uint128_t x31 = (x29 + x15);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x36);
+ { uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff);
+ { uint128_t x34 = (x32 + x14);
+ { uint64_t x35 = (uint64_t) (x34 >> 0x36);
+ { uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffffff);
+ { uint128_t x37 = (x35 + x13);
+ { uint64_t x38 = (uint64_t) (x37 >> 0x36);
+ { uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
+ { uint128_t x40 = (x21 + ((uint128_t)0x13 * x38));
+ { uint64_t x41 = (uint64_t) (x40 >> 0x37);
+ { uint64_t x42 = ((uint64_t)x40 & 0x7fffffffffffff);
+ { uint64_t x43 = (x41 + x24);
+ { uint64_t x44 = (x43 >> 0x36);
+ { uint64_t x45 = (x43 & 0x3fffffffffffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e379m19_7limbs/fesquareDisplay.log b/src/Specific/solinas64_2e379m19_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..90ba6043f
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x13 = (((uint128_t)x2 * x11) + ((0x2 * ((uint128_t)x4 * x12)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + ((0x2 * ((uint128_t)x12 * x4)) + ((uint128_t)x11 * x2)))))));
+ uint128_t x14 = ((((uint128_t)x2 * x12) + ((0x2 * ((uint128_t)x4 * x10)) + ((0x2 * ((uint128_t)x6 * x8)) + ((0x2 * ((uint128_t)x8 * x6)) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x12 * x2)))))) + (0x13 * ((uint128_t)x11 * x11)));
+ uint128_t x15 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + ((0x2 * ((uint128_t)x6 * x6)) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x13 * (((uint128_t)x12 * x11) + ((uint128_t)x11 * x12))));
+ uint128_t x16 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
+ uint128_t x17 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * (((uint128_t)x8 * x11) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((uint128_t)x11 * x8))))));
+ uint128_t x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x11) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((uint128_t)x11 * x6)))))));
+ uint128_t x19 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x11)) + ((0x2 * ((uint128_t)x6 * x12)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + ((0x2 * ((uint128_t)x12 * x6)) + (0x2 * ((uint128_t)x11 * x4)))))))));
+ uint128_t x20 = (x19 >> 0x37);
+ uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffffff);
+ uint128_t x22 = (x20 + x18);
+ uint128_t x23 = (x22 >> 0x36);
+ uint64_t x24 = ((uint64_t)x22 & 0x3fffffffffffff);
+ uint128_t x25 = (x23 + x17);
+ uint64_t x26 = (uint64_t) (x25 >> 0x36);
+ uint64_t x27 = ((uint64_t)x25 & 0x3fffffffffffff);
+ uint128_t x28 = (x26 + x16);
+ uint64_t x29 = (uint64_t) (x28 >> 0x36);
+ uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
+ uint128_t x31 = (x29 + x15);
+ uint64_t x32 = (uint64_t) (x31 >> 0x36);
+ uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff);
+ uint128_t x34 = (x32 + x14);
+ uint64_t x35 = (uint64_t) (x34 >> 0x36);
+ uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffffff);
+ uint128_t x37 = (x35 + x13);
+ uint64_t x38 = (uint64_t) (x37 >> 0x36);
+ uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
+ uint128_t x40 = (x21 + ((uint128_t)0x13 * x38));
+ uint64_t x41 = (uint64_t) (x40 >> 0x37);
+ uint64_t x42 = ((uint64_t)x40 & 0x7fffffffffffff);
+ uint64_t x43 = (x41 + x24);
+ uint64_t x44 = (x43 >> 0x36);
+ uint64_t x45 = (x43 & 0x3fffffffffffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e379m19_7limbs/fesub.c b/src/Specific/solinas64_2e379m19_7limbs/fesub.c
new file mode 100644
index 000000000..e888ad3f0
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x26 = in2[6];
+ { const uint64_t x27 = in2[5];
+ { const uint64_t x25 = in2[4];
+ { const uint64_t x23 = in2[3];
+ { const uint64_t x21 = in2[2];
+ { const uint64_t x19 = in2[1];
+ { const uint64_t x17 = in2[0];
+ out[0] = ((0xffffffffffffda + x5) - x17);
+ out[1] = ((0x7ffffffffffffe + x7) - x19);
+ out[2] = ((0x7ffffffffffffe + x9) - x21);
+ out[3] = ((0x7ffffffffffffe + x11) - x23);
+ out[4] = ((0x7ffffffffffffe + x13) - x25);
+ out[5] = ((0x7ffffffffffffe + x15) - x27);
+ out[6] = ((0x7ffffffffffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e379m19_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e379m19_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..30992c3d8
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0x7ffffffffffffe + x14) - x26), ((0x7ffffffffffffe + x15) - x27), ((0x7ffffffffffffe + x13) - x25), ((0x7ffffffffffffe + x11) - x23), ((0x7ffffffffffffe + x9) - x21), ((0x7ffffffffffffe + x7) - x19), ((0xffffffffffffda + x5) - x17)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e379m19_7limbs/freeze.c b/src/Specific/solinas64_2e379m19_7limbs/freeze.c
new file mode 100644
index 000000000..f1a2abbfb
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint64_t out[7], const uint64_t in1[7]) {
+ { const uint64_t x11 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffed);
+ { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffffffffffff);
+ { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffffff);
+ { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffffffffffff);
+ { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffffffffffff);
+ { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffffffffffff);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
+ { uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
+ { uint64_t x35 = (x34 & 0x7fffffffffffed);
+ { uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint64_t x39 = (x34 & 0x3fffffffffffff);
+ { uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint64_t x43 = (x34 & 0x3fffffffffffff);
+ { uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint64_t x47 = (x34 & 0x3fffffffffffff);
+ { uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint64_t x51 = (x34 & 0x3fffffffffffff);
+ { uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint64_t x55 = (x34 & 0x3fffffffffffff);
+ { uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint64_t x59 = (x34 & 0x3fffffffffffff);
+ { uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e379m19_7limbs/freezeDisplay.log b/src/Specific/solinas64_2e379m19_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..bd8d59c3b
--- /dev/null
+++ b/src/Specific/solinas64_2e379m19_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffed);
+ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x3fffffffffffff);
+ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x3fffffffffffff);
+ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x3fffffffffffff);
+ uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x3fffffffffffff);
+ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x3fffffffffffff);
+ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x3fffffffffffff);
+ uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
+ uint64_t x35 = (x34 & 0x7fffffffffffed);
+ uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 55 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint64_t x39 = (x34 & 0x3fffffffffffff);
+ uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint64_t x43 = (x34 & 0x3fffffffffffff);
+ uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint64_t x47 = (x34 & 0x3fffffffffffff);
+ uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint64_t x51 = (x34 & 0x3fffffffffffff);
+ uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint64_t x55 = (x34 & 0x3fffffffffffff);
+ uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint64_t x59 = (x34 & 0x3fffffffffffff);
+ uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e413m21_7limbs/feadd.c b/src/Specific/solinas64_2e413m21_7limbs/feadd.c
new file mode 100644
index 000000000..9acf97578
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/feadd.c
@@ -0,0 +1,24 @@
+static void feadd(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x26 = in2[6];
+ { const uint64_t x27 = in2[5];
+ { const uint64_t x25 = in2[4];
+ { const uint64_t x23 = in2[3];
+ { const uint64_t x21 = in2[2];
+ { const uint64_t x19 = in2[1];
+ { const uint64_t x17 = in2[0];
+ out[0] = (x5 + x17);
+ out[1] = (x7 + x19);
+ out[2] = (x9 + x21);
+ out[3] = (x11 + x23);
+ out[4] = (x13 + x25);
+ out[5] = (x15 + x27);
+ out[6] = (x14 + x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e413m21_7limbs/feaddDisplay.log b/src/Specific/solinas64_2e413m21_7limbs/feaddDisplay.log
new file mode 100644
index 000000000..6320440fc
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ ((x14 + x26), (x15 + x27), (x13 + x25), (x11 + x23), (x9 + x21), (x7 + x19), (x5 + x17)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e413m21_7limbs/femul.c b/src/Specific/solinas64_2e413m21_7limbs/femul.c
new file mode 100644
index 000000000..6fbb37ad9
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/femul.c
@@ -0,0 +1,57 @@
+static void femul(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x26 = in2[6];
+ { const uint64_t x27 = in2[5];
+ { const uint64_t x25 = in2[4];
+ { const uint64_t x23 = in2[3];
+ { const uint64_t x21 = in2[2];
+ { const uint64_t x19 = in2[1];
+ { const uint64_t x17 = in2[0];
+ { uint128_t x28 = (((uint128_t)x5 * x26) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (((uint128_t)x15 * x19) + ((uint128_t)x14 * x17)))))));
+ { uint128_t x29 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x15 * x17)))))) + (0x15 * ((uint128_t)x14 * x26)));
+ { uint128_t x30 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + ((uint128_t)x13 * x17))))) + (0x15 * (((uint128_t)x15 * x26) + ((uint128_t)x14 * x27))));
+ { uint128_t x31 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + ((uint128_t)x11 * x17)))) + (0x15 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
+ { uint128_t x32 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + ((uint128_t)x9 * x17))) + (0x15 * (((uint128_t)x11 * x26) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x14 * x23))))));
+ { ℤ x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) +ℤ (0x15 *ℤ (((uint128_t)x9 * x26) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x14 * x21)))))));
+ { ℤ x34 = (((uint128_t)x5 * x17) +ℤ (0x15 *ℤ (((uint128_t)x7 * x26) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + (((uint128_t)x15 * x21) + ((uint128_t)x14 * x19))))))));
+ { uint128_t x35 = (x34 >> 0x3b);
+ { uint64_t x36 = (x34 & 0x7ffffffffffffff);
+ { ℤ x37 = (x35 +ℤ x33);
+ { uint128_t x38 = (x37 >> 0x3b);
+ { uint64_t x39 = (x37 & 0x7ffffffffffffff);
+ { uint128_t x40 = (x38 + x32);
+ { uint128_t x41 = (x40 >> 0x3b);
+ { uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffffff);
+ { uint128_t x43 = (x41 + x31);
+ { uint128_t x44 = (x43 >> 0x3b);
+ { uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffffffff);
+ { uint128_t x46 = (x44 + x30);
+ { uint128_t x47 = (x46 >> 0x3b);
+ { uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffffff);
+ { uint128_t x49 = (x47 + x29);
+ { uint128_t x50 = (x49 >> 0x3b);
+ { uint64_t x51 = ((uint64_t)x49 & 0x7ffffffffffffff);
+ { uint128_t x52 = (x50 + x28);
+ { uint128_t x53 = (x52 >> 0x3b);
+ { uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffffff);
+ { uint128_t x55 = (x36 + (0x15 * x53));
+ { uint64_t x56 = (uint64_t) (x55 >> 0x3b);
+ { uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffffff);
+ { uint64_t x58 = (x56 + x39);
+ { uint64_t x59 = (x58 >> 0x3b);
+ { uint64_t x60 = (x58 & 0x7ffffffffffffff);
+ out[0] = x57;
+ out[1] = x60;
+ out[2] = (x59 + x42);
+ out[3] = x45;
+ out[4] = x48;
+ out[5] = x51;
+ out[6] = x54;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e413m21_7limbs/femulDisplay.log b/src/Specific/solinas64_2e413m21_7limbs/femulDisplay.log
new file mode 100644
index 000000000..79be934ac
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/femulDisplay.log
@@ -0,0 +1,40 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ uint128_t x28 = (((uint128_t)x5 * x26) + (((uint128_t)x7 * x27) + (((uint128_t)x9 * x25) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (((uint128_t)x15 * x19) + ((uint128_t)x14 * x17)))))));
+ uint128_t x29 = ((((uint128_t)x5 * x27) + (((uint128_t)x7 * x25) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x15 * x17)))))) + (0x15 * ((uint128_t)x14 * x26)));
+ uint128_t x30 = ((((uint128_t)x5 * x25) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + ((uint128_t)x13 * x17))))) + (0x15 * (((uint128_t)x15 * x26) + ((uint128_t)x14 * x27))));
+ uint128_t x31 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + ((uint128_t)x11 * x17)))) + (0x15 * (((uint128_t)x13 * x26) + (((uint128_t)x15 * x27) + ((uint128_t)x14 * x25)))));
+ uint128_t x32 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + ((uint128_t)x9 * x17))) + (0x15 * (((uint128_t)x11 * x26) + (((uint128_t)x13 * x27) + (((uint128_t)x15 * x25) + ((uint128_t)x14 * x23))))));
+ ℤ x33 = ((((uint128_t)x5 * x19) + ((uint128_t)x7 * x17)) +ℤ (0x15 *ℤ (((uint128_t)x9 * x26) + (((uint128_t)x11 * x27) + (((uint128_t)x13 * x25) + (((uint128_t)x15 * x23) + ((uint128_t)x14 * x21)))))));
+ ℤ x34 = (((uint128_t)x5 * x17) +ℤ (0x15 *ℤ (((uint128_t)x7 * x26) + (((uint128_t)x9 * x27) + (((uint128_t)x11 * x25) + (((uint128_t)x13 * x23) + (((uint128_t)x15 * x21) + ((uint128_t)x14 * x19))))))));
+ uint128_t x35 = (x34 >> 0x3b);
+ uint64_t x36 = (x34 & 0x7ffffffffffffff);
+ ℤ x37 = (x35 +ℤ x33);
+ uint128_t x38 = (x37 >> 0x3b);
+ uint64_t x39 = (x37 & 0x7ffffffffffffff);
+ uint128_t x40 = (x38 + x32);
+ uint128_t x41 = (x40 >> 0x3b);
+ uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffffff);
+ uint128_t x43 = (x41 + x31);
+ uint128_t x44 = (x43 >> 0x3b);
+ uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffffffff);
+ uint128_t x46 = (x44 + x30);
+ uint128_t x47 = (x46 >> 0x3b);
+ uint64_t x48 = ((uint64_t)x46 & 0x7ffffffffffffff);
+ uint128_t x49 = (x47 + x29);
+ uint128_t x50 = (x49 >> 0x3b);
+ uint64_t x51 = ((uint64_t)x49 & 0x7ffffffffffffff);
+ uint128_t x52 = (x50 + x28);
+ uint128_t x53 = (x52 >> 0x3b);
+ uint64_t x54 = ((uint64_t)x52 & 0x7ffffffffffffff);
+ uint128_t x55 = (x36 + (0x15 * x53));
+ uint64_t x56 = (uint64_t) (x55 >> 0x3b);
+ uint64_t x57 = ((uint64_t)x55 & 0x7ffffffffffffff);
+ uint64_t x58 = (x56 + x39);
+ uint64_t x59 = (x58 >> 0x3b);
+ uint64_t x60 = (x58 & 0x7ffffffffffffff);
+ return (Return x54, Return x51, Return x48, Return x45, (x59 + x42), Return x60, Return x57))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e413m21_7limbs/fesquare.c b/src/Specific/solinas64_2e413m21_7limbs/fesquare.c
new file mode 100644
index 000000000..c3e0d7d32
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/fesquare.c
@@ -0,0 +1,50 @@
+static void fesquare(uint64_t out[7], const uint64_t in1[7]) {
+ { const uint64_t x11 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x13 = (((uint128_t)x2 * x11) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x11 * x2)))))));
+ { uint128_t x14 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x15 * ((uint128_t)x11 * x11)));
+ { uint128_t x15 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x15 * (((uint128_t)x12 * x11) + ((uint128_t)x11 * x12))));
+ { uint128_t x16 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x15 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
+ { uint128_t x17 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x15 * (((uint128_t)x8 * x11) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((uint128_t)x11 * x8))))));
+ { ℤ x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) +ℤ (0x15 *ℤ (((uint128_t)x6 * x11) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((uint128_t)x11 * x6)))))));
+ { ℤ x19 = (((uint128_t)x2 * x2) +ℤ (0x15 *ℤ (((uint128_t)x4 * x11) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + ((uint128_t)x11 * x4))))))));
+ { uint128_t x20 = (x19 >> 0x3b);
+ { uint64_t x21 = (x19 & 0x7ffffffffffffff);
+ { ℤ x22 = (x20 +ℤ x18);
+ { uint128_t x23 = (x22 >> 0x3b);
+ { uint64_t x24 = (x22 & 0x7ffffffffffffff);
+ { uint128_t x25 = (x23 + x17);
+ { uint128_t x26 = (x25 >> 0x3b);
+ { uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffffff);
+ { uint128_t x28 = (x26 + x16);
+ { uint128_t x29 = (x28 >> 0x3b);
+ { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffffff);
+ { uint128_t x31 = (x29 + x15);
+ { uint128_t x32 = (x31 >> 0x3b);
+ { uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffffff);
+ { uint128_t x34 = (x32 + x14);
+ { uint128_t x35 = (x34 >> 0x3b);
+ { uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffffff);
+ { uint128_t x37 = (x35 + x13);
+ { uint128_t x38 = (x37 >> 0x3b);
+ { uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffffffff);
+ { uint128_t x40 = (x21 + (0x15 * x38));
+ { uint64_t x41 = (uint64_t) (x40 >> 0x3b);
+ { uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffffff);
+ { uint64_t x43 = (x41 + x24);
+ { uint64_t x44 = (x43 >> 0x3b);
+ { uint64_t x45 = (x43 & 0x7ffffffffffffff);
+ out[0] = x42;
+ out[1] = x45;
+ out[2] = (x44 + x27);
+ out[3] = x30;
+ out[4] = x33;
+ out[5] = x36;
+ out[6] = x39;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e413m21_7limbs/fesquareDisplay.log b/src/Specific/solinas64_2e413m21_7limbs/fesquareDisplay.log
new file mode 100644
index 000000000..a76b27178
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/fesquareDisplay.log
@@ -0,0 +1,40 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint128_t x13 = (((uint128_t)x2 * x11) + (((uint128_t)x4 * x12) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + (((uint128_t)x12 * x4) + ((uint128_t)x11 * x2)))))));
+ uint128_t x14 = ((((uint128_t)x2 * x12) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x12 * x2)))))) + (0x15 * ((uint128_t)x11 * x11)));
+ uint128_t x15 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x15 * (((uint128_t)x12 * x11) + ((uint128_t)x11 * x12))));
+ uint128_t x16 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x15 * (((uint128_t)x10 * x11) + (((uint128_t)x12 * x12) + ((uint128_t)x11 * x10)))));
+ uint128_t x17 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x15 * (((uint128_t)x8 * x11) + (((uint128_t)x10 * x12) + (((uint128_t)x12 * x10) + ((uint128_t)x11 * x8))))));
+ ℤ x18 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) +ℤ (0x15 *ℤ (((uint128_t)x6 * x11) + (((uint128_t)x8 * x12) + (((uint128_t)x10 * x10) + (((uint128_t)x12 * x8) + ((uint128_t)x11 * x6)))))));
+ ℤ x19 = (((uint128_t)x2 * x2) +ℤ (0x15 *ℤ (((uint128_t)x4 * x11) + (((uint128_t)x6 * x12) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (((uint128_t)x12 * x6) + ((uint128_t)x11 * x4))))))));
+ uint128_t x20 = (x19 >> 0x3b);
+ uint64_t x21 = (x19 & 0x7ffffffffffffff);
+ ℤ x22 = (x20 +ℤ x18);
+ uint128_t x23 = (x22 >> 0x3b);
+ uint64_t x24 = (x22 & 0x7ffffffffffffff);
+ uint128_t x25 = (x23 + x17);
+ uint128_t x26 = (x25 >> 0x3b);
+ uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffffffff);
+ uint128_t x28 = (x26 + x16);
+ uint128_t x29 = (x28 >> 0x3b);
+ uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffffffff);
+ uint128_t x31 = (x29 + x15);
+ uint128_t x32 = (x31 >> 0x3b);
+ uint64_t x33 = ((uint64_t)x31 & 0x7ffffffffffffff);
+ uint128_t x34 = (x32 + x14);
+ uint128_t x35 = (x34 >> 0x3b);
+ uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffffffff);
+ uint128_t x37 = (x35 + x13);
+ uint128_t x38 = (x37 >> 0x3b);
+ uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffffffff);
+ uint128_t x40 = (x21 + (0x15 * x38));
+ uint64_t x41 = (uint64_t) (x40 >> 0x3b);
+ uint64_t x42 = ((uint64_t)x40 & 0x7ffffffffffffff);
+ uint64_t x43 = (x41 + x24);
+ uint64_t x44 = (x43 >> 0x3b);
+ uint64_t x45 = (x43 & 0x7ffffffffffffff);
+ return (Return x39, Return x36, Return x33, Return x30, (x44 + x27), Return x45, Return x42))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e413m21_7limbs/fesub.c b/src/Specific/solinas64_2e413m21_7limbs/fesub.c
new file mode 100644
index 000000000..b548e713b
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/fesub.c
@@ -0,0 +1,24 @@
+static void fesub(uint64_t out[7], const uint64_t in1[7], const uint64_t in2[7]) {
+ { const uint64_t x14 = in1[6];
+ { const uint64_t x15 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x26 = in2[6];
+ { const uint64_t x27 = in2[5];
+ { const uint64_t x25 = in2[4];
+ { const uint64_t x23 = in2[3];
+ { const uint64_t x21 = in2[2];
+ { const uint64_t x19 = in2[1];
+ { const uint64_t x17 = in2[0];
+ out[0] = ((0xfffffffffffffd6 + x5) - x17);
+ out[1] = ((0xffffffffffffffe + x7) - x19);
+ out[2] = ((0xffffffffffffffe + x9) - x21);
+ out[3] = ((0xffffffffffffffe + x11) - x23);
+ out[4] = ((0xffffffffffffffe + x13) - x25);
+ out[5] = ((0xffffffffffffffe + x15) - x27);
+ out[6] = ((0xffffffffffffffe + x14) - x26);
+ }}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e413m21_7limbs/fesubDisplay.log b/src/Specific/solinas64_2e413m21_7limbs/fesubDisplay.log
new file mode 100644
index 000000000..ebf049655
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x14, x15, x13, x11, x9, x7, x5, (x26, x27, x25, x23, x21, x19, x17))%core,
+ (((0xffffffffffffffe + x14) - x26), ((0xffffffffffffffe + x15) - x27), ((0xffffffffffffffe + x13) - x25), ((0xffffffffffffffe + x11) - x23), ((0xffffffffffffffe + x9) - x21), ((0xffffffffffffffe + x7) - x19), ((0xfffffffffffffd6 + x5) - x17)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e413m21_7limbs/freeze.c b/src/Specific/solinas64_2e413m21_7limbs/freeze.c
new file mode 100644
index 000000000..8d63463bc
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/freeze.c
@@ -0,0 +1,39 @@
+static void freeze(uint64_t out[7], const uint64_t in1[7]) {
+ { const uint64_t x11 = in1[6];
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffffeb);
+ { uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffffffffffff);
+ { uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffffffffffff);
+ { uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffffffffffff);
+ { uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffffffffffff);
+ { uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffffffffffff);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffffffffffff);
+ { uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
+ { uint64_t x35 = (x34 & 0x7ffffffffffffeb);
+ { uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ { uint64_t x39 = (x34 & 0x7ffffffffffffff);
+ { uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ { uint64_t x43 = (x34 & 0x7ffffffffffffff);
+ { uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ { uint64_t x47 = (x34 & 0x7ffffffffffffff);
+ { uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ { uint64_t x51 = (x34 & 0x7ffffffffffffff);
+ { uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ { uint64_t x55 = (x34 & 0x7ffffffffffffff);
+ { uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ { uint64_t x59 = (x34 & 0x7ffffffffffffff);
+ { uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ out[0] = x37;
+ out[1] = x41;
+ out[2] = x45;
+ out[3] = x49;
+ out[4] = x53;
+ out[5] = x57;
+ out[6] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e413m21_7limbs/freezeDisplay.log b/src/Specific/solinas64_2e413m21_7limbs/freezeDisplay.log
new file mode 100644
index 000000000..e69dc348c
--- /dev/null
+++ b/src/Specific/solinas64_2e413m21_7limbs/freezeDisplay.log
@@ -0,0 +1,29 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x11, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffffffeb);
+ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x4, 0x7ffffffffffffff);
+ uint64_t x20, uint8_t x21 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x6, 0x7ffffffffffffff);
+ uint64_t x23, uint8_t x24 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x21, Return x8, 0x7ffffffffffffff);
+ uint64_t x26, uint8_t x27 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x24, Return x10, 0x7ffffffffffffff);
+ uint64_t x29, uint8_t x30 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x27, Return x12, 0x7ffffffffffffff);
+ uint64_t x32, uint8_t x33 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x30, Return x11, 0x7ffffffffffffff);
+ uint64_t x34 = cmovznz64(x33, 0x0, 0xffffffffffffffffL);
+ uint64_t x35 = (x34 & 0x7ffffffffffffeb);
+ uint64_t x37, uint8_t x38 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x14, Return x35);
+ uint64_t x39 = (x34 & 0x7ffffffffffffff);
+ uint64_t x41, uint8_t x42 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x38, Return x17, Return x39);
+ uint64_t x43 = (x34 & 0x7ffffffffffffff);
+ uint64_t x45, uint8_t x46 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x42, Return x20, Return x43);
+ uint64_t x47 = (x34 & 0x7ffffffffffffff);
+ uint64_t x49, uint8_t x50 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x46, Return x23, Return x47);
+ uint64_t x51 = (x34 & 0x7ffffffffffffff);
+ uint64_t x53, uint8_t x54 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x50, Return x26, Return x51);
+ uint64_t x55 = (x34 & 0x7ffffffffffffff);
+ uint64_t x57, uint8_t x58 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x54, Return x29, Return x55);
+ uint64_t x59 = (x34 & 0x7ffffffffffffff);
+ uint64_t x61, uint8_t _ = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x58, Return x32, Return x59);
+ (Return x61, Return x57, Return x53, Return x49, Return x45, Return x41, Return x37))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)