aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/femul.c266
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/femul.c266
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/femul.c266
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e171m19_6limbs/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/femul.c266
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/femulDisplay.log252
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e174m17_6limbs/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/fesub.c40
-rw-r--r--src/Specific/montgomery32_2e174m3_6limbs/fesubDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/feopp.c34
-rw-r--r--src/Specific/montgomery32_2e189m25_6limbs/feoppDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e190m11_6limbs/fenzDisplay.log12
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/femul.c155
-rw-r--r--src/Specific/solinas32_2e495m31_21limbs/femulDisplay.log96
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/femul.c141
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/femulDisplay.log88
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/fesquare.c122
-rw-r--r--src/Specific/solinas32_2e521m1_19limbs/fesquareDisplay.log88
56 files changed, 3917 insertions, 0 deletions
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/femul.c b/src/Specific/montgomery32_2e165m25_6limbs/femul.c
new file mode 100644
index 000000000..42401356b
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/femul.c
@@ -0,0 +1,266 @@
+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 _; uint32_t x61 = _mulx_u32(x25, 0xc28f5c29, &_);
+ { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xffffffe7, &x65);
+ { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
+ { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
+ { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
+ { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
+ { uint8_t x80; uint32_t x79 = _mulx_u32_out_u8(x61, 0x1f, &x80);
+ { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, 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 x95 = _addcarryx_u32(x92, x77, x79, &x94);
+ { uint8_t x96 = (x95 + x80);
+ { uint32_t _; uint8_t x99 = _addcarryx_u32(0x0, x25, x64, &_);
+ { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x43, x82, &x101);
+ { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x46, x85, &x104);
+ { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x49, x88, &x107);
+ { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x52, x91, &x110);
+ { uint32_t x113; uint8_t x114 = _addcarryx_u32(x111, x55, x94, &x113);
+ { uint32_t x116; uint8_t x117 = _addcarryx_u32(x114, x58, x96, &x116);
+ { uint32_t x120; uint32_t x119 = _mulx_u32(x7, x15, &x120);
+ { uint32_t x123; uint32_t x122 = _mulx_u32(x7, x17, &x123);
+ { uint32_t x126; uint32_t x125 = _mulx_u32(x7, x19, &x126);
+ { uint32_t x129; uint32_t x128 = _mulx_u32(x7, x21, &x129);
+ { uint32_t x132; uint32_t x131 = _mulx_u32(x7, x23, &x132);
+ { uint32_t x135; uint32_t x134 = _mulx_u32(x7, x22, &x135);
+ { uint32_t x137; uint8_t x138 = _addcarryx_u32(0x0, x120, x122, &x137);
+ { uint32_t x140; uint8_t x141 = _addcarryx_u32(x138, x123, x125, &x140);
+ { uint32_t x143; uint8_t x144 = _addcarryx_u32(x141, x126, x128, &x143);
+ { uint32_t x146; uint8_t x147 = _addcarryx_u32(x144, x129, x131, &x146);
+ { uint32_t x149; uint8_t x150 = _addcarryx_u32(x147, x132, x134, &x149);
+ { uint32_t x152; uint8_t _ = _addcarryx_u32(0x0, x150, x135, &x152);
+ { uint32_t x155; uint8_t x156 = _addcarryx_u32(0x0, x101, x119, &x155);
+ { uint32_t x158; uint8_t x159 = _addcarryx_u32(x156, x104, x137, &x158);
+ { uint32_t x161; uint8_t x162 = _addcarryx_u32(x159, x107, x140, &x161);
+ { uint32_t x164; uint8_t x165 = _addcarryx_u32(x162, x110, x143, &x164);
+ { uint32_t x167; uint8_t x168 = _addcarryx_u32(x165, x113, x146, &x167);
+ { uint32_t x170; uint8_t x171 = _addcarryx_u32(x168, x116, x149, &x170);
+ { uint32_t x173; uint8_t x174 = _addcarryx_u32(x171, x117, x152, &x173);
+ { uint32_t _; uint32_t x176 = _mulx_u32(x155, 0xc28f5c29, &_);
+ { uint32_t x180; uint32_t x179 = _mulx_u32(x176, 0xffffffe7, &x180);
+ { uint32_t x183; uint32_t x182 = _mulx_u32(x176, 0xffffffff, &x183);
+ { uint32_t x186; uint32_t x185 = _mulx_u32(x176, 0xffffffff, &x186);
+ { uint32_t x189; uint32_t x188 = _mulx_u32(x176, 0xffffffff, &x189);
+ { uint32_t x192; uint32_t x191 = _mulx_u32(x176, 0xffffffff, &x192);
+ { uint8_t x195; uint32_t x194 = _mulx_u32_out_u8(x176, 0x1f, &x195);
+ { uint32_t x197; uint8_t x198 = _addcarryx_u32(0x0, x180, x182, &x197);
+ { uint32_t x200; uint8_t x201 = _addcarryx_u32(x198, x183, x185, &x200);
+ { uint32_t x203; uint8_t x204 = _addcarryx_u32(x201, x186, x188, &x203);
+ { uint32_t x206; uint8_t x207 = _addcarryx_u32(x204, x189, x191, &x206);
+ { uint32_t x209; uint8_t x210 = _addcarryx_u32(x207, x192, x194, &x209);
+ { uint8_t x211 = (x210 + x195);
+ { uint32_t _; uint8_t x214 = _addcarryx_u32(0x0, x155, x179, &_);
+ { uint32_t x216; uint8_t x217 = _addcarryx_u32(x214, x158, x197, &x216);
+ { uint32_t x219; uint8_t x220 = _addcarryx_u32(x217, x161, x200, &x219);
+ { uint32_t x222; uint8_t x223 = _addcarryx_u32(x220, x164, x203, &x222);
+ { uint32_t x225; uint8_t x226 = _addcarryx_u32(x223, x167, x206, &x225);
+ { uint32_t x228; uint8_t x229 = _addcarryx_u32(x226, x170, x209, &x228);
+ { uint32_t x231; uint8_t x232 = _addcarryx_u32(x229, x173, x211, &x231);
+ { uint8_t x233 = (x232 + x174);
+ { uint32_t x236; uint32_t x235 = _mulx_u32(x9, x15, &x236);
+ { uint32_t x239; uint32_t x238 = _mulx_u32(x9, x17, &x239);
+ { uint32_t x242; uint32_t x241 = _mulx_u32(x9, x19, &x242);
+ { uint32_t x245; uint32_t x244 = _mulx_u32(x9, x21, &x245);
+ { uint32_t x248; uint32_t x247 = _mulx_u32(x9, x23, &x248);
+ { uint32_t x251; uint32_t x250 = _mulx_u32(x9, x22, &x251);
+ { uint32_t x253; uint8_t x254 = _addcarryx_u32(0x0, x236, x238, &x253);
+ { uint32_t x256; uint8_t x257 = _addcarryx_u32(x254, x239, x241, &x256);
+ { uint32_t x259; uint8_t x260 = _addcarryx_u32(x257, x242, x244, &x259);
+ { uint32_t x262; uint8_t x263 = _addcarryx_u32(x260, x245, x247, &x262);
+ { uint32_t x265; uint8_t x266 = _addcarryx_u32(x263, x248, x250, &x265);
+ { uint32_t x268; uint8_t _ = _addcarryx_u32(0x0, x266, x251, &x268);
+ { uint32_t x271; uint8_t x272 = _addcarryx_u32(0x0, x216, x235, &x271);
+ { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x219, x253, &x274);
+ { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x222, x256, &x277);
+ { uint32_t x280; uint8_t x281 = _addcarryx_u32(x278, x225, x259, &x280);
+ { uint32_t x283; uint8_t x284 = _addcarryx_u32(x281, x228, x262, &x283);
+ { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x231, x265, &x286);
+ { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x233, x268, &x289);
+ { uint32_t _; uint32_t x292 = _mulx_u32(x271, 0xc28f5c29, &_);
+ { uint32_t x296; uint32_t x295 = _mulx_u32(x292, 0xffffffe7, &x296);
+ { uint32_t x299; uint32_t x298 = _mulx_u32(x292, 0xffffffff, &x299);
+ { uint32_t x302; uint32_t x301 = _mulx_u32(x292, 0xffffffff, &x302);
+ { uint32_t x305; uint32_t x304 = _mulx_u32(x292, 0xffffffff, &x305);
+ { uint32_t x308; uint32_t x307 = _mulx_u32(x292, 0xffffffff, &x308);
+ { uint8_t x311; uint32_t x310 = _mulx_u32_out_u8(x292, 0x1f, &x311);
+ { uint32_t x313; uint8_t x314 = _addcarryx_u32(0x0, x296, x298, &x313);
+ { uint32_t x316; uint8_t x317 = _addcarryx_u32(x314, x299, x301, &x316);
+ { uint32_t x319; uint8_t x320 = _addcarryx_u32(x317, x302, x304, &x319);
+ { uint32_t x322; uint8_t x323 = _addcarryx_u32(x320, x305, x307, &x322);
+ { uint32_t x325; uint8_t x326 = _addcarryx_u32(x323, x308, x310, &x325);
+ { uint8_t x327 = (x326 + x311);
+ { uint32_t _; uint8_t x330 = _addcarryx_u32(0x0, x271, x295, &_);
+ { uint32_t x332; uint8_t x333 = _addcarryx_u32(x330, x274, x313, &x332);
+ { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x277, x316, &x335);
+ { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x280, x319, &x338);
+ { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x283, x322, &x341);
+ { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x286, x325, &x344);
+ { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x289, x327, &x347);
+ { uint8_t x349 = (x348 + x290);
+ { uint32_t x352; uint32_t x351 = _mulx_u32(x11, x15, &x352);
+ { uint32_t x355; uint32_t x354 = _mulx_u32(x11, x17, &x355);
+ { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x19, &x358);
+ { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x21, &x361);
+ { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x23, &x364);
+ { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x22, &x367);
+ { uint32_t x369; uint8_t x370 = _addcarryx_u32(0x0, 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 x382 = _addcarryx_u32(x379, x364, x366, &x381);
+ { uint32_t x384; uint8_t _ = _addcarryx_u32(0x0, x382, x367, &x384);
+ { uint32_t x387; uint8_t x388 = _addcarryx_u32(0x0, x332, x351, &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, x347, x381, &x402);
+ { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x349, x384, &x405);
+ { uint32_t _; uint32_t x408 = _mulx_u32(x387, 0xc28f5c29, &_);
+ { uint32_t x412; uint32_t x411 = _mulx_u32(x408, 0xffffffe7, &x412);
+ { uint32_t x415; uint32_t x414 = _mulx_u32(x408, 0xffffffff, &x415);
+ { uint32_t x418; uint32_t x417 = _mulx_u32(x408, 0xffffffff, &x418);
+ { uint32_t x421; uint32_t x420 = _mulx_u32(x408, 0xffffffff, &x421);
+ { uint32_t x424; uint32_t x423 = _mulx_u32(x408, 0xffffffff, &x424);
+ { uint8_t x427; uint32_t x426 = _mulx_u32_out_u8(x408, 0x1f, &x427);
+ { uint32_t x429; uint8_t x430 = _addcarryx_u32(0x0, 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 x439 = _addcarryx_u32(x436, x421, x423, &x438);
+ { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
+ { uint8_t x443 = (x442 + x427);
+ { uint32_t _; uint8_t x446 = _addcarryx_u32(0x0, x387, x411, &_);
+ { uint32_t x448; uint8_t x449 = _addcarryx_u32(x446, x390, x429, &x448);
+ { uint32_t x451; uint8_t x452 = _addcarryx_u32(x449, x393, x432, &x451);
+ { uint32_t x454; uint8_t x455 = _addcarryx_u32(x452, x396, x435, &x454);
+ { uint32_t x457; uint8_t x458 = _addcarryx_u32(x455, x399, x438, &x457);
+ { uint32_t x460; uint8_t x461 = _addcarryx_u32(x458, x402, x441, &x460);
+ { uint32_t x463; uint8_t x464 = _addcarryx_u32(x461, x405, x443, &x463);
+ { uint8_t x465 = (x464 + x406);
+ { uint32_t x468; uint32_t x467 = _mulx_u32(x13, x15, &x468);
+ { uint32_t x471; uint32_t x470 = _mulx_u32(x13, x17, &x471);
+ { uint32_t x474; uint32_t x473 = _mulx_u32(x13, x19, &x474);
+ { uint32_t x477; uint32_t x476 = _mulx_u32(x13, x21, &x477);
+ { uint32_t x480; uint32_t x479 = _mulx_u32(x13, x23, &x480);
+ { uint32_t x483; uint32_t x482 = _mulx_u32(x13, x22, &x483);
+ { uint32_t x485; uint8_t x486 = _addcarryx_u32(0x0, x468, x470, &x485);
+ { uint32_t x488; uint8_t x489 = _addcarryx_u32(x486, x471, x473, &x488);
+ { uint32_t x491; uint8_t x492 = _addcarryx_u32(x489, x474, x476, &x491);
+ { uint32_t x494; uint8_t x495 = _addcarryx_u32(x492, x477, x479, &x494);
+ { uint32_t x497; uint8_t x498 = _addcarryx_u32(x495, x480, x482, &x497);
+ { uint32_t x500; uint8_t _ = _addcarryx_u32(0x0, x498, x483, &x500);
+ { uint32_t x503; uint8_t x504 = _addcarryx_u32(0x0, x448, x467, &x503);
+ { uint32_t x506; uint8_t x507 = _addcarryx_u32(x504, x451, x485, &x506);
+ { uint32_t x509; uint8_t x510 = _addcarryx_u32(x507, x454, x488, &x509);
+ { uint32_t x512; uint8_t x513 = _addcarryx_u32(x510, x457, x491, &x512);
+ { uint32_t x515; uint8_t x516 = _addcarryx_u32(x513, x460, x494, &x515);
+ { uint32_t x518; uint8_t x519 = _addcarryx_u32(x516, x463, x497, &x518);
+ { uint32_t x521; uint8_t x522 = _addcarryx_u32(x519, x465, x500, &x521);
+ { uint32_t _; uint32_t x524 = _mulx_u32(x503, 0xc28f5c29, &_);
+ { uint32_t x528; uint32_t x527 = _mulx_u32(x524, 0xffffffe7, &x528);
+ { uint32_t x531; uint32_t x530 = _mulx_u32(x524, 0xffffffff, &x531);
+ { uint32_t x534; uint32_t x533 = _mulx_u32(x524, 0xffffffff, &x534);
+ { uint32_t x537; uint32_t x536 = _mulx_u32(x524, 0xffffffff, &x537);
+ { uint32_t x540; uint32_t x539 = _mulx_u32(x524, 0xffffffff, &x540);
+ { uint8_t x543; uint32_t x542 = _mulx_u32_out_u8(x524, 0x1f, &x543);
+ { uint32_t x545; uint8_t x546 = _addcarryx_u32(0x0, x528, x530, &x545);
+ { uint32_t x548; uint8_t x549 = _addcarryx_u32(x546, x531, x533, &x548);
+ { uint32_t x551; uint8_t x552 = _addcarryx_u32(x549, x534, x536, &x551);
+ { uint32_t x554; uint8_t x555 = _addcarryx_u32(x552, x537, x539, &x554);
+ { uint32_t x557; uint8_t x558 = _addcarryx_u32(x555, x540, x542, &x557);
+ { uint8_t x559 = (x558 + x543);
+ { uint32_t _; uint8_t x562 = _addcarryx_u32(0x0, x503, x527, &_);
+ { uint32_t x564; uint8_t x565 = _addcarryx_u32(x562, x506, x545, &x564);
+ { uint32_t x567; uint8_t x568 = _addcarryx_u32(x565, x509, x548, &x567);
+ { uint32_t x570; uint8_t x571 = _addcarryx_u32(x568, x512, x551, &x570);
+ { uint32_t x573; uint8_t x574 = _addcarryx_u32(x571, x515, x554, &x573);
+ { uint32_t x576; uint8_t x577 = _addcarryx_u32(x574, x518, x557, &x576);
+ { uint32_t x579; uint8_t x580 = _addcarryx_u32(x577, x521, x559, &x579);
+ { uint8_t x581 = (x580 + x522);
+ { uint32_t x584; uint32_t x583 = _mulx_u32(x12, x15, &x584);
+ { uint32_t x587; uint32_t x586 = _mulx_u32(x12, x17, &x587);
+ { uint32_t x590; uint32_t x589 = _mulx_u32(x12, x19, &x590);
+ { uint32_t x593; uint32_t x592 = _mulx_u32(x12, x21, &x593);
+ { uint32_t x596; uint32_t x595 = _mulx_u32(x12, x23, &x596);
+ { uint32_t x599; uint32_t x598 = _mulx_u32(x12, x22, &x599);
+ { uint32_t x601; uint8_t x602 = _addcarryx_u32(0x0, x584, x586, &x601);
+ { uint32_t x604; uint8_t x605 = _addcarryx_u32(x602, x587, x589, &x604);
+ { uint32_t x607; uint8_t x608 = _addcarryx_u32(x605, x590, x592, &x607);
+ { uint32_t x610; uint8_t x611 = _addcarryx_u32(x608, x593, x595, &x610);
+ { uint32_t x613; uint8_t x614 = _addcarryx_u32(x611, x596, x598, &x613);
+ { uint32_t x616; uint8_t _ = _addcarryx_u32(0x0, x614, x599, &x616);
+ { uint32_t x619; uint8_t x620 = _addcarryx_u32(0x0, x564, x583, &x619);
+ { uint32_t x622; uint8_t x623 = _addcarryx_u32(x620, x567, x601, &x622);
+ { uint32_t x625; uint8_t x626 = _addcarryx_u32(x623, x570, x604, &x625);
+ { uint32_t x628; uint8_t x629 = _addcarryx_u32(x626, x573, x607, &x628);
+ { uint32_t x631; uint8_t x632 = _addcarryx_u32(x629, x576, x610, &x631);
+ { uint32_t x634; uint8_t x635 = _addcarryx_u32(x632, x579, x613, &x634);
+ { uint32_t x637; uint8_t x638 = _addcarryx_u32(x635, x581, x616, &x637);
+ { uint32_t _; uint32_t x640 = _mulx_u32(x619, 0xc28f5c29, &_);
+ { uint32_t x644; uint32_t x643 = _mulx_u32(x640, 0xffffffe7, &x644);
+ { uint32_t x647; uint32_t x646 = _mulx_u32(x640, 0xffffffff, &x647);
+ { uint32_t x650; uint32_t x649 = _mulx_u32(x640, 0xffffffff, &x650);
+ { uint32_t x653; uint32_t x652 = _mulx_u32(x640, 0xffffffff, &x653);
+ { uint32_t x656; uint32_t x655 = _mulx_u32(x640, 0xffffffff, &x656);
+ { uint8_t x659; uint32_t x658 = _mulx_u32_out_u8(x640, 0x1f, &x659);
+ { uint32_t x661; uint8_t x662 = _addcarryx_u32(0x0, x644, x646, &x661);
+ { uint32_t x664; uint8_t x665 = _addcarryx_u32(x662, x647, x649, &x664);
+ { uint32_t x667; uint8_t x668 = _addcarryx_u32(x665, x650, x652, &x667);
+ { uint32_t x670; uint8_t x671 = _addcarryx_u32(x668, x653, x655, &x670);
+ { uint32_t x673; uint8_t x674 = _addcarryx_u32(x671, x656, x658, &x673);
+ { uint8_t x675 = (x674 + x659);
+ { uint32_t _; uint8_t x678 = _addcarryx_u32(0x0, x619, x643, &_);
+ { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x622, x661, &x680);
+ { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x625, x664, &x683);
+ { uint32_t x686; uint8_t x687 = _addcarryx_u32(x684, x628, x667, &x686);
+ { uint32_t x689; uint8_t x690 = _addcarryx_u32(x687, x631, x670, &x689);
+ { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x634, x673, &x692);
+ { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x637, x675, &x695);
+ { uint8_t x697 = (x696 + x638);
+ { uint32_t x699; uint8_t x700 = _subborrow_u32(0x0, x680, 0xffffffe7, &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 x711; uint8_t x712 = _subborrow_u32(x709, x692, 0xffffffff, &x711);
+ { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0x1f, &x714);
+ { uint32_t _; uint8_t x718 = _subborrow_u32(x715, x697, 0x0, &_);
+ { uint32_t x719 = cmovznz32(x718, x714, x695);
+ { uint32_t x720 = cmovznz32(x718, x711, x692);
+ { uint32_t x721 = cmovznz32(x718, x708, x689);
+ { uint32_t x722 = cmovznz32(x718, x705, x686);
+ { uint32_t x723 = cmovznz32(x718, x702, x683);
+ { uint32_t x724 = cmovznz32(x718, x699, x680);
+ out[0] = x724;
+ out[1] = x723;
+ out[2] = x722;
+ out[3] = x721;
+ out[4] = x720;
+ out[5] = x719;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/femulDisplay.log b/src/Specific/montgomery32_2e165m25_6limbs/femulDisplay.log
new file mode 100644
index 000000000..76e90e61d
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/femulDisplay.log
@@ -0,0 +1,252 @@
+λ 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 _ = mulx_u32(x25, 0xc28f5c29);
+ uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xffffffe7);
+ uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
+ uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
+ uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
+ uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
+ uint32_t x79, uint8_t x80 = mulx_u32_out_u8(x61, 0x1f);
+ uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, 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 x95 = addcarryx_u32(x92, x77, x79);
+ uint8_t x96 = (x95 + x80);
+ uint32_t _, uint8_t x99 = addcarryx_u32(0x0, x25, x64);
+ uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x43, x82);
+ uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x46, x85);
+ uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x49, x88);
+ uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x52, x91);
+ uint32_t x113, uint8_t x114 = addcarryx_u32(x111, x55, x94);
+ uint32_t x116, uint8_t x117 = addcarryx_u32(x114, x58, x96);
+ uint32_t x119, uint32_t x120 = mulx_u32(x7, x15);
+ uint32_t x122, uint32_t x123 = mulx_u32(x7, x17);
+ uint32_t x125, uint32_t x126 = mulx_u32(x7, x19);
+ uint32_t x128, uint32_t x129 = mulx_u32(x7, x21);
+ uint32_t x131, uint32_t x132 = mulx_u32(x7, x23);
+ uint32_t x134, uint32_t x135 = mulx_u32(x7, x22);
+ uint32_t x137, uint8_t x138 = addcarryx_u32(0x0, x120, x122);
+ uint32_t x140, uint8_t x141 = addcarryx_u32(x138, x123, x125);
+ uint32_t x143, uint8_t x144 = addcarryx_u32(x141, x126, x128);
+ uint32_t x146, uint8_t x147 = addcarryx_u32(x144, x129, x131);
+ uint32_t x149, uint8_t x150 = addcarryx_u32(x147, x132, x134);
+ uint32_t x152, uint8_t _ = addcarryx_u32(0x0, x150, x135);
+ uint32_t x155, uint8_t x156 = addcarryx_u32(0x0, x101, x119);
+ uint32_t x158, uint8_t x159 = addcarryx_u32(x156, x104, x137);
+ uint32_t x161, uint8_t x162 = addcarryx_u32(x159, x107, x140);
+ uint32_t x164, uint8_t x165 = addcarryx_u32(x162, x110, x143);
+ uint32_t x167, uint8_t x168 = addcarryx_u32(x165, x113, x146);
+ uint32_t x170, uint8_t x171 = addcarryx_u32(x168, x116, x149);
+ uint32_t x173, uint8_t x174 = addcarryx_u32(x171, x117, x152);
+ uint32_t x176, uint32_t _ = mulx_u32(x155, 0xc28f5c29);
+ uint32_t x179, uint32_t x180 = mulx_u32(x176, 0xffffffe7);
+ uint32_t x182, uint32_t x183 = mulx_u32(x176, 0xffffffff);
+ uint32_t x185, uint32_t x186 = mulx_u32(x176, 0xffffffff);
+ uint32_t x188, uint32_t x189 = mulx_u32(x176, 0xffffffff);
+ uint32_t x191, uint32_t x192 = mulx_u32(x176, 0xffffffff);
+ uint32_t x194, uint8_t x195 = mulx_u32_out_u8(x176, 0x1f);
+ uint32_t x197, uint8_t x198 = addcarryx_u32(0x0, x180, x182);
+ uint32_t x200, uint8_t x201 = addcarryx_u32(x198, x183, x185);
+ uint32_t x203, uint8_t x204 = addcarryx_u32(x201, x186, x188);
+ uint32_t x206, uint8_t x207 = addcarryx_u32(x204, x189, x191);
+ uint32_t x209, uint8_t x210 = addcarryx_u32(x207, x192, x194);
+ uint8_t x211 = (x210 + x195);
+ uint32_t _, uint8_t x214 = addcarryx_u32(0x0, x155, x179);
+ uint32_t x216, uint8_t x217 = addcarryx_u32(x214, x158, x197);
+ uint32_t x219, uint8_t x220 = addcarryx_u32(x217, x161, x200);
+ uint32_t x222, uint8_t x223 = addcarryx_u32(x220, x164, x203);
+ uint32_t x225, uint8_t x226 = addcarryx_u32(x223, x167, x206);
+ uint32_t x228, uint8_t x229 = addcarryx_u32(x226, x170, x209);
+ uint32_t x231, uint8_t x232 = addcarryx_u32(x229, x173, x211);
+ uint8_t x233 = (x232 + x174);
+ uint32_t x235, uint32_t x236 = mulx_u32(x9, x15);
+ uint32_t x238, uint32_t x239 = mulx_u32(x9, x17);
+ uint32_t x241, uint32_t x242 = mulx_u32(x9, x19);
+ uint32_t x244, uint32_t x245 = mulx_u32(x9, x21);
+ uint32_t x247, uint32_t x248 = mulx_u32(x9, x23);
+ uint32_t x250, uint32_t x251 = mulx_u32(x9, x22);
+ uint32_t x253, uint8_t x254 = addcarryx_u32(0x0, x236, x238);
+ uint32_t x256, uint8_t x257 = addcarryx_u32(x254, x239, x241);
+ uint32_t x259, uint8_t x260 = addcarryx_u32(x257, x242, x244);
+ uint32_t x262, uint8_t x263 = addcarryx_u32(x260, x245, x247);
+ uint32_t x265, uint8_t x266 = addcarryx_u32(x263, x248, x250);
+ uint32_t x268, uint8_t _ = addcarryx_u32(0x0, x266, x251);
+ uint32_t x271, uint8_t x272 = addcarryx_u32(0x0, x216, x235);
+ uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x219, x253);
+ uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x222, x256);
+ uint32_t x280, uint8_t x281 = addcarryx_u32(x278, x225, x259);
+ uint32_t x283, uint8_t x284 = addcarryx_u32(x281, x228, x262);
+ uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x231, x265);
+ uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x233, x268);
+ uint32_t x292, uint32_t _ = mulx_u32(x271, 0xc28f5c29);
+ uint32_t x295, uint32_t x296 = mulx_u32(x292, 0xffffffe7);
+ uint32_t x298, uint32_t x299 = mulx_u32(x292, 0xffffffff);
+ uint32_t x301, uint32_t x302 = mulx_u32(x292, 0xffffffff);
+ uint32_t x304, uint32_t x305 = mulx_u32(x292, 0xffffffff);
+ uint32_t x307, uint32_t x308 = mulx_u32(x292, 0xffffffff);
+ uint32_t x310, uint8_t x311 = mulx_u32_out_u8(x292, 0x1f);
+ uint32_t x313, uint8_t x314 = addcarryx_u32(0x0, x296, x298);
+ uint32_t x316, uint8_t x317 = addcarryx_u32(x314, x299, x301);
+ uint32_t x319, uint8_t x320 = addcarryx_u32(x317, x302, x304);
+ uint32_t x322, uint8_t x323 = addcarryx_u32(x320, x305, x307);
+ uint32_t x325, uint8_t x326 = addcarryx_u32(x323, x308, x310);
+ uint8_t x327 = (x326 + x311);
+ uint32_t _, uint8_t x330 = addcarryx_u32(0x0, x271, x295);
+ uint32_t x332, uint8_t x333 = addcarryx_u32(x330, x274, x313);
+ uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x277, x316);
+ uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x280, x319);
+ uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x283, x322);
+ uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x286, x325);
+ uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x289, x327);
+ uint8_t x349 = (x348 + x290);
+ uint32_t x351, uint32_t x352 = mulx_u32(x11, x15);
+ uint32_t x354, uint32_t x355 = mulx_u32(x11, x17);
+ uint32_t x357, uint32_t x358 = mulx_u32(x11, x19);
+ uint32_t x360, uint32_t x361 = mulx_u32(x11, x21);
+ uint32_t x363, uint32_t x364 = mulx_u32(x11, x23);
+ uint32_t x366, uint32_t x367 = mulx_u32(x11, x22);
+ uint32_t x369, uint8_t x370 = addcarryx_u32(0x0, 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 x382 = addcarryx_u32(x379, x364, x366);
+ uint32_t x384, uint8_t _ = addcarryx_u32(0x0, x382, x367);
+ uint32_t x387, uint8_t x388 = addcarryx_u32(0x0, x332, x351);
+ 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, x347, x381);
+ uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x349, x384);
+ uint32_t x408, uint32_t _ = mulx_u32(x387, 0xc28f5c29);
+ uint32_t x411, uint32_t x412 = mulx_u32(x408, 0xffffffe7);
+ uint32_t x414, uint32_t x415 = mulx_u32(x408, 0xffffffff);
+ uint32_t x417, uint32_t x418 = mulx_u32(x408, 0xffffffff);
+ uint32_t x420, uint32_t x421 = mulx_u32(x408, 0xffffffff);
+ uint32_t x423, uint32_t x424 = mulx_u32(x408, 0xffffffff);
+ uint32_t x426, uint8_t x427 = mulx_u32_out_u8(x408, 0x1f);
+ uint32_t x429, uint8_t x430 = addcarryx_u32(0x0, 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 x439 = addcarryx_u32(x436, x421, x423);
+ uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
+ uint8_t x443 = (x442 + x427);
+ uint32_t _, uint8_t x446 = addcarryx_u32(0x0, x387, x411);
+ uint32_t x448, uint8_t x449 = addcarryx_u32(x446, x390, x429);
+ uint32_t x451, uint8_t x452 = addcarryx_u32(x449, x393, x432);
+ uint32_t x454, uint8_t x455 = addcarryx_u32(x452, x396, x435);
+ uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x399, x438);
+ uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x402, x441);
+ uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x405, x443);
+ uint8_t x465 = (x464 + x406);
+ uint32_t x467, uint32_t x468 = mulx_u32(x13, x15);
+ uint32_t x470, uint32_t x471 = mulx_u32(x13, x17);
+ uint32_t x473, uint32_t x474 = mulx_u32(x13, x19);
+ uint32_t x476, uint32_t x477 = mulx_u32(x13, x21);
+ uint32_t x479, uint32_t x480 = mulx_u32(x13, x23);
+ uint32_t x482, uint32_t x483 = mulx_u32(x13, x22);
+ uint32_t x485, uint8_t x486 = addcarryx_u32(0x0, x468, x470);
+ uint32_t x488, uint8_t x489 = addcarryx_u32(x486, x471, x473);
+ uint32_t x491, uint8_t x492 = addcarryx_u32(x489, x474, x476);
+ uint32_t x494, uint8_t x495 = addcarryx_u32(x492, x477, x479);
+ uint32_t x497, uint8_t x498 = addcarryx_u32(x495, x480, x482);
+ uint32_t x500, uint8_t _ = addcarryx_u32(0x0, x498, x483);
+ uint32_t x503, uint8_t x504 = addcarryx_u32(0x0, x448, x467);
+ uint32_t x506, uint8_t x507 = addcarryx_u32(x504, x451, x485);
+ uint32_t x509, uint8_t x510 = addcarryx_u32(x507, x454, x488);
+ uint32_t x512, uint8_t x513 = addcarryx_u32(x510, x457, x491);
+ uint32_t x515, uint8_t x516 = addcarryx_u32(x513, x460, x494);
+ uint32_t x518, uint8_t x519 = addcarryx_u32(x516, x463, x497);
+ uint32_t x521, uint8_t x522 = addcarryx_u32(x519, x465, x500);
+ uint32_t x524, uint32_t _ = mulx_u32(x503, 0xc28f5c29);
+ uint32_t x527, uint32_t x528 = mulx_u32(x524, 0xffffffe7);
+ uint32_t x530, uint32_t x531 = mulx_u32(x524, 0xffffffff);
+ uint32_t x533, uint32_t x534 = mulx_u32(x524, 0xffffffff);
+ uint32_t x536, uint32_t x537 = mulx_u32(x524, 0xffffffff);
+ uint32_t x539, uint32_t x540 = mulx_u32(x524, 0xffffffff);
+ uint32_t x542, uint8_t x543 = mulx_u32_out_u8(x524, 0x1f);
+ uint32_t x545, uint8_t x546 = addcarryx_u32(0x0, x528, x530);
+ uint32_t x548, uint8_t x549 = addcarryx_u32(x546, x531, x533);
+ uint32_t x551, uint8_t x552 = addcarryx_u32(x549, x534, x536);
+ uint32_t x554, uint8_t x555 = addcarryx_u32(x552, x537, x539);
+ uint32_t x557, uint8_t x558 = addcarryx_u32(x555, x540, x542);
+ uint8_t x559 = (x558 + x543);
+ uint32_t _, uint8_t x562 = addcarryx_u32(0x0, x503, x527);
+ uint32_t x564, uint8_t x565 = addcarryx_u32(x562, x506, x545);
+ uint32_t x567, uint8_t x568 = addcarryx_u32(x565, x509, x548);
+ uint32_t x570, uint8_t x571 = addcarryx_u32(x568, x512, x551);
+ uint32_t x573, uint8_t x574 = addcarryx_u32(x571, x515, x554);
+ uint32_t x576, uint8_t x577 = addcarryx_u32(x574, x518, x557);
+ uint32_t x579, uint8_t x580 = addcarryx_u32(x577, x521, x559);
+ uint8_t x581 = (x580 + x522);
+ uint32_t x583, uint32_t x584 = mulx_u32(x12, x15);
+ uint32_t x586, uint32_t x587 = mulx_u32(x12, x17);
+ uint32_t x589, uint32_t x590 = mulx_u32(x12, x19);
+ uint32_t x592, uint32_t x593 = mulx_u32(x12, x21);
+ uint32_t x595, uint32_t x596 = mulx_u32(x12, x23);
+ uint32_t x598, uint32_t x599 = mulx_u32(x12, x22);
+ uint32_t x601, uint8_t x602 = addcarryx_u32(0x0, x584, x586);
+ uint32_t x604, uint8_t x605 = addcarryx_u32(x602, x587, x589);
+ uint32_t x607, uint8_t x608 = addcarryx_u32(x605, x590, x592);
+ uint32_t x610, uint8_t x611 = addcarryx_u32(x608, x593, x595);
+ uint32_t x613, uint8_t x614 = addcarryx_u32(x611, x596, x598);
+ uint32_t x616, uint8_t _ = addcarryx_u32(0x0, x614, x599);
+ uint32_t x619, uint8_t x620 = addcarryx_u32(0x0, x564, x583);
+ uint32_t x622, uint8_t x623 = addcarryx_u32(x620, x567, x601);
+ uint32_t x625, uint8_t x626 = addcarryx_u32(x623, x570, x604);
+ uint32_t x628, uint8_t x629 = addcarryx_u32(x626, x573, x607);
+ uint32_t x631, uint8_t x632 = addcarryx_u32(x629, x576, x610);
+ uint32_t x634, uint8_t x635 = addcarryx_u32(x632, x579, x613);
+ uint32_t x637, uint8_t x638 = addcarryx_u32(x635, x581, x616);
+ uint32_t x640, uint32_t _ = mulx_u32(x619, 0xc28f5c29);
+ uint32_t x643, uint32_t x644 = mulx_u32(x640, 0xffffffe7);
+ uint32_t x646, uint32_t x647 = mulx_u32(x640, 0xffffffff);
+ uint32_t x649, uint32_t x650 = mulx_u32(x640, 0xffffffff);
+ uint32_t x652, uint32_t x653 = mulx_u32(x640, 0xffffffff);
+ uint32_t x655, uint32_t x656 = mulx_u32(x640, 0xffffffff);
+ uint32_t x658, uint8_t x659 = mulx_u32_out_u8(x640, 0x1f);
+ uint32_t x661, uint8_t x662 = addcarryx_u32(0x0, x644, x646);
+ uint32_t x664, uint8_t x665 = addcarryx_u32(x662, x647, x649);
+ uint32_t x667, uint8_t x668 = addcarryx_u32(x665, x650, x652);
+ uint32_t x670, uint8_t x671 = addcarryx_u32(x668, x653, x655);
+ uint32_t x673, uint8_t x674 = addcarryx_u32(x671, x656, x658);
+ uint8_t x675 = (x674 + x659);
+ uint32_t _, uint8_t x678 = addcarryx_u32(0x0, x619, x643);
+ uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x622, x661);
+ uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x625, x664);
+ uint32_t x686, uint8_t x687 = addcarryx_u32(x684, x628, x667);
+ uint32_t x689, uint8_t x690 = addcarryx_u32(x687, x631, x670);
+ uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x634, x673);
+ uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x637, x675);
+ uint8_t x697 = (x696 + x638);
+ uint32_t x699, uint8_t x700 = subborrow_u32(0x0, x680, 0xffffffe7);
+ 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 x711, uint8_t x712 = subborrow_u32(x709, x692, 0xffffffff);
+ uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0x1f);
+ uint32_t _, uint8_t x718 = subborrow_u32(x715, x697, 0x0);
+ uint32_t x719 = cmovznz32(x718, x714, x695);
+ uint32_t x720 = cmovznz32(x718, x711, x692);
+ uint32_t x721 = cmovznz32(x718, x708, x689);
+ uint32_t x722 = cmovznz32(x718, x705, x686);
+ uint32_t x723 = cmovznz32(x718, x702, x683);
+ uint32_t x724 = cmovznz32(x718, x699, x680);
+ return (x719, x720, x721, x722, x723, x724))
+(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_2e165m25_6limbs/feopp.c b/src/Specific/montgomery32_2e165m25_6limbs/feopp.c
new file mode 100644
index 000000000..e8e2767ae
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_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 & 0xffffffe7);
+ { 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 & 0xffffffff);
+ { 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);
+ { uint8_t x50 = ((uint8_t)x29 & 0x1f);
+ { 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_2e165m25_6limbs/feoppDisplay.log b/src/Specific/montgomery32_2e165m25_6limbs/feoppDisplay.log
new file mode 100644
index 000000000..df49ff1ff
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_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 & 0xffffffe7);
+ 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 & 0xffffffff);
+ 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);
+ uint8_t x50 = ((uint8_t)x29 & 0x1f);
+ 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_2e165m25_6limbs/fesub.c b/src/Specific/montgomery32_2e165m25_6limbs/fesub.c
new file mode 100644
index 000000000..2f1872aba
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_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 & 0xffffffe7);
+ { 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 & 0xffffffff);
+ { 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);
+ { uint8_t x63 = ((uint8_t)x42 & 0x1f);
+ { 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_2e165m25_6limbs/fesubDisplay.log b/src/Specific/montgomery32_2e165m25_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..c64a7d5aa
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_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 & 0xffffffe7);
+ 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 & 0xffffffff);
+ 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);
+ uint8_t x63 = ((uint8_t)x42 & 0x1f);
+ 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_2e166m5_6limbs/femul.c b/src/Specific/montgomery32_2e166m5_6limbs/femul.c
new file mode 100644
index 000000000..b834472fd
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/femul.c
@@ -0,0 +1,266 @@
+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 _; uint32_t x61 = _mulx_u32(x25, 0xcccccccd, &_);
+ { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xfffffffb, &x65);
+ { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
+ { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
+ { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
+ { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
+ { uint8_t x80; uint32_t x79 = _mulx_u32_out_u8(x61, 0x3f, &x80);
+ { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, 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 x95 = _addcarryx_u32(x92, x77, x79, &x94);
+ { uint8_t x96 = (x95 + x80);
+ { uint32_t _; uint8_t x99 = _addcarryx_u32(0x0, x25, x64, &_);
+ { uint32_t x101; uint8_t x102 = _addcarryx_u32(x99, x43, x82, &x101);
+ { uint32_t x104; uint8_t x105 = _addcarryx_u32(x102, x46, x85, &x104);
+ { uint32_t x107; uint8_t x108 = _addcarryx_u32(x105, x49, x88, &x107);
+ { uint32_t x110; uint8_t x111 = _addcarryx_u32(x108, x52, x91, &x110);
+ { uint32_t x113; uint8_t x114 = _addcarryx_u32(x111, x55, x94, &x113);
+ { uint32_t x116; uint8_t x117 = _addcarryx_u32(x114, x58, x96, &x116);
+ { uint32_t x120; uint32_t x119 = _mulx_u32(x7, x15, &x120);
+ { uint32_t x123; uint32_t x122 = _mulx_u32(x7, x17, &x123);
+ { uint32_t x126; uint32_t x125 = _mulx_u32(x7, x19, &x126);
+ { uint32_t x129; uint32_t x128 = _mulx_u32(x7, x21, &x129);
+ { uint32_t x132; uint32_t x131 = _mulx_u32(x7, x23, &x132);
+ { uint32_t x135; uint32_t x134 = _mulx_u32(x7, x22, &x135);
+ { uint32_t x137; uint8_t x138 = _addcarryx_u32(0x0, x120, x122, &x137);
+ { uint32_t x140; uint8_t x141 = _addcarryx_u32(x138, x123, x125, &x140);
+ { uint32_t x143; uint8_t x144 = _addcarryx_u32(x141, x126, x128, &x143);
+ { uint32_t x146; uint8_t x147 = _addcarryx_u32(x144, x129, x131, &x146);
+ { uint32_t x149; uint8_t x150 = _addcarryx_u32(x147, x132, x134, &x149);
+ { uint32_t x152; uint8_t _ = _addcarryx_u32(0x0, x150, x135, &x152);
+ { uint32_t x155; uint8_t x156 = _addcarryx_u32(0x0, x101, x119, &x155);
+ { uint32_t x158; uint8_t x159 = _addcarryx_u32(x156, x104, x137, &x158);
+ { uint32_t x161; uint8_t x162 = _addcarryx_u32(x159, x107, x140, &x161);
+ { uint32_t x164; uint8_t x165 = _addcarryx_u32(x162, x110, x143, &x164);
+ { uint32_t x167; uint8_t x168 = _addcarryx_u32(x165, x113, x146, &x167);
+ { uint32_t x170; uint8_t x171 = _addcarryx_u32(x168, x116, x149, &x170);
+ { uint32_t x173; uint8_t x174 = _addcarryx_u32(x171, x117, x152, &x173);
+ { uint32_t _; uint32_t x176 = _mulx_u32(x155, 0xcccccccd, &_);
+ { uint32_t x180; uint32_t x179 = _mulx_u32(x176, 0xfffffffb, &x180);
+ { uint32_t x183; uint32_t x182 = _mulx_u32(x176, 0xffffffff, &x183);
+ { uint32_t x186; uint32_t x185 = _mulx_u32(x176, 0xffffffff, &x186);
+ { uint32_t x189; uint32_t x188 = _mulx_u32(x176, 0xffffffff, &x189);
+ { uint32_t x192; uint32_t x191 = _mulx_u32(x176, 0xffffffff, &x192);
+ { uint8_t x195; uint32_t x194 = _mulx_u32_out_u8(x176, 0x3f, &x195);
+ { uint32_t x197; uint8_t x198 = _addcarryx_u32(0x0, x180, x182, &x197);
+ { uint32_t x200; uint8_t x201 = _addcarryx_u32(x198, x183, x185, &x200);
+ { uint32_t x203; uint8_t x204 = _addcarryx_u32(x201, x186, x188, &x203);
+ { uint32_t x206; uint8_t x207 = _addcarryx_u32(x204, x189, x191, &x206);
+ { uint32_t x209; uint8_t x210 = _addcarryx_u32(x207, x192, x194, &x209);
+ { uint8_t x211 = (x210 + x195);
+ { uint32_t _; uint8_t x214 = _addcarryx_u32(0x0, x155, x179, &_);
+ { uint32_t x216; uint8_t x217 = _addcarryx_u32(x214, x158, x197, &x216);
+ { uint32_t x219; uint8_t x220 = _addcarryx_u32(x217, x161, x200, &x219);
+ { uint32_t x222; uint8_t x223 = _addcarryx_u32(x220, x164, x203, &x222);
+ { uint32_t x225; uint8_t x226 = _addcarryx_u32(x223, x167, x206, &x225);
+ { uint32_t x228; uint8_t x229 = _addcarryx_u32(x226, x170, x209, &x228);
+ { uint32_t x231; uint8_t x232 = _addcarryx_u32(x229, x173, x211, &x231);
+ { uint8_t x233 = (x232 + x174);
+ { uint32_t x236; uint32_t x235 = _mulx_u32(x9, x15, &x236);
+ { uint32_t x239; uint32_t x238 = _mulx_u32(x9, x17, &x239);
+ { uint32_t x242; uint32_t x241 = _mulx_u32(x9, x19, &x242);
+ { uint32_t x245; uint32_t x244 = _mulx_u32(x9, x21, &x245);
+ { uint32_t x248; uint32_t x247 = _mulx_u32(x9, x23, &x248);
+ { uint32_t x251; uint32_t x250 = _mulx_u32(x9, x22, &x251);
+ { uint32_t x253; uint8_t x254 = _addcarryx_u32(0x0, x236, x238, &x253);
+ { uint32_t x256; uint8_t x257 = _addcarryx_u32(x254, x239, x241, &x256);
+ { uint32_t x259; uint8_t x260 = _addcarryx_u32(x257, x242, x244, &x259);
+ { uint32_t x262; uint8_t x263 = _addcarryx_u32(x260, x245, x247, &x262);
+ { uint32_t x265; uint8_t x266 = _addcarryx_u32(x263, x248, x250, &x265);
+ { uint32_t x268; uint8_t _ = _addcarryx_u32(0x0, x266, x251, &x268);
+ { uint32_t x271; uint8_t x272 = _addcarryx_u32(0x0, x216, x235, &x271);
+ { uint32_t x274; uint8_t x275 = _addcarryx_u32(x272, x219, x253, &x274);
+ { uint32_t x277; uint8_t x278 = _addcarryx_u32(x275, x222, x256, &x277);
+ { uint32_t x280; uint8_t x281 = _addcarryx_u32(x278, x225, x259, &x280);
+ { uint32_t x283; uint8_t x284 = _addcarryx_u32(x281, x228, x262, &x283);
+ { uint32_t x286; uint8_t x287 = _addcarryx_u32(x284, x231, x265, &x286);
+ { uint32_t x289; uint8_t x290 = _addcarryx_u32(x287, x233, x268, &x289);
+ { uint32_t _; uint32_t x292 = _mulx_u32(x271, 0xcccccccd, &_);
+ { uint32_t x296; uint32_t x295 = _mulx_u32(x292, 0xfffffffb, &x296);
+ { uint32_t x299; uint32_t x298 = _mulx_u32(x292, 0xffffffff, &x299);
+ { uint32_t x302; uint32_t x301 = _mulx_u32(x292, 0xffffffff, &x302);
+ { uint32_t x305; uint32_t x304 = _mulx_u32(x292, 0xffffffff, &x305);
+ { uint32_t x308; uint32_t x307 = _mulx_u32(x292, 0xffffffff, &x308);
+ { uint8_t x311; uint32_t x310 = _mulx_u32_out_u8(x292, 0x3f, &x311);
+ { uint32_t x313; uint8_t x314 = _addcarryx_u32(0x0, x296, x298, &x313);
+ { uint32_t x316; uint8_t x317 = _addcarryx_u32(x314, x299, x301, &x316);
+ { uint32_t x319; uint8_t x320 = _addcarryx_u32(x317, x302, x304, &x319);
+ { uint32_t x322; uint8_t x323 = _addcarryx_u32(x320, x305, x307, &x322);
+ { uint32_t x325; uint8_t x326 = _addcarryx_u32(x323, x308, x310, &x325);
+ { uint8_t x327 = (x326 + x311);
+ { uint32_t _; uint8_t x330 = _addcarryx_u32(0x0, x271, x295, &_);
+ { uint32_t x332; uint8_t x333 = _addcarryx_u32(x330, x274, x313, &x332);
+ { uint32_t x335; uint8_t x336 = _addcarryx_u32(x333, x277, x316, &x335);
+ { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x280, x319, &x338);
+ { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x283, x322, &x341);
+ { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x286, x325, &x344);
+ { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x289, x327, &x347);
+ { uint8_t x349 = (x348 + x290);
+ { uint32_t x352; uint32_t x351 = _mulx_u32(x11, x15, &x352);
+ { uint32_t x355; uint32_t x354 = _mulx_u32(x11, x17, &x355);
+ { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x19, &x358);
+ { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x21, &x361);
+ { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x23, &x364);
+ { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x22, &x367);
+ { uint32_t x369; uint8_t x370 = _addcarryx_u32(0x0, 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 x382 = _addcarryx_u32(x379, x364, x366, &x381);
+ { uint32_t x384; uint8_t _ = _addcarryx_u32(0x0, x382, x367, &x384);
+ { uint32_t x387; uint8_t x388 = _addcarryx_u32(0x0, x332, x351, &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, x347, x381, &x402);
+ { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x349, x384, &x405);
+ { uint32_t _; uint32_t x408 = _mulx_u32(x387, 0xcccccccd, &_);
+ { uint32_t x412; uint32_t x411 = _mulx_u32(x408, 0xfffffffb, &x412);
+ { uint32_t x415; uint32_t x414 = _mulx_u32(x408, 0xffffffff, &x415);
+ { uint32_t x418; uint32_t x417 = _mulx_u32(x408, 0xffffffff, &x418);
+ { uint32_t x421; uint32_t x420 = _mulx_u32(x408, 0xffffffff, &x421);
+ { uint32_t x424; uint32_t x423 = _mulx_u32(x408, 0xffffffff, &x424);
+ { uint8_t x427; uint32_t x426 = _mulx_u32_out_u8(x408, 0x3f, &x427);
+ { uint32_t x429; uint8_t x430 = _addcarryx_u32(0x0, 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 x439 = _addcarryx_u32(x436, x421, x423, &x438);
+ { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
+ { uint8_t x443 = (x442 + x427);
+ { uint32_t _; uint8_t x446 = _addcarryx_u32(0x0, x387, x411, &_);
+ { uint32_t x448; uint8_t x449 = _addcarryx_u32(x446, x390, x429, &x448);
+ { uint32_t x451; uint8_t x452 = _addcarryx_u32(x449, x393, x432, &x451);
+ { uint32_t x454; uint8_t x455 = _addcarryx_u32(x452, x396, x435, &x454);
+ { uint32_t x457; uint8_t x458 = _addcarryx_u32(x455, x399, x438, &x457);
+ { uint32_t x460; uint8_t x461 = _addcarryx_u32(x458, x402, x441, &x460);
+ { uint32_t x463; uint8_t x464 = _addcarryx_u32(x461, x405, x443, &x463);
+ { uint8_t x465 = (x464 + x406);
+ { uint32_t x468; uint32_t x467 = _mulx_u32(x13, x15, &x468);
+ { uint32_t x471; uint32_t x470 = _mulx_u32(x13, x17, &x471);
+ { uint32_t x474; uint32_t x473 = _mulx_u32(x13, x19, &x474);
+ { uint32_t x477; uint32_t x476 = _mulx_u32(x13, x21, &x477);
+ { uint32_t x480; uint32_t x479 = _mulx_u32(x13, x23, &x480);
+ { uint32_t x483; uint32_t x482 = _mulx_u32(x13, x22, &x483);
+ { uint32_t x485; uint8_t x486 = _addcarryx_u32(0x0, x468, x470, &x485);
+ { uint32_t x488; uint8_t x489 = _addcarryx_u32(x486, x471, x473, &x488);
+ { uint32_t x491; uint8_t x492 = _addcarryx_u32(x489, x474, x476, &x491);
+ { uint32_t x494; uint8_t x495 = _addcarryx_u32(x492, x477, x479, &x494);
+ { uint32_t x497; uint8_t x498 = _addcarryx_u32(x495, x480, x482, &x497);
+ { uint32_t x500; uint8_t _ = _addcarryx_u32(0x0, x498, x483, &x500);
+ { uint32_t x503; uint8_t x504 = _addcarryx_u32(0x0, x448, x467, &x503);
+ { uint32_t x506; uint8_t x507 = _addcarryx_u32(x504, x451, x485, &x506);
+ { uint32_t x509; uint8_t x510 = _addcarryx_u32(x507, x454, x488, &x509);
+ { uint32_t x512; uint8_t x513 = _addcarryx_u32(x510, x457, x491, &x512);
+ { uint32_t x515; uint8_t x516 = _addcarryx_u32(x513, x460, x494, &x515);
+ { uint32_t x518; uint8_t x519 = _addcarryx_u32(x516, x463, x497, &x518);
+ { uint32_t x521; uint8_t x522 = _addcarryx_u32(x519, x465, x500, &x521);
+ { uint32_t _; uint32_t x524 = _mulx_u32(x503, 0xcccccccd, &_);
+ { uint32_t x528; uint32_t x527 = _mulx_u32(x524, 0xfffffffb, &x528);
+ { uint32_t x531; uint32_t x530 = _mulx_u32(x524, 0xffffffff, &x531);
+ { uint32_t x534; uint32_t x533 = _mulx_u32(x524, 0xffffffff, &x534);
+ { uint32_t x537; uint32_t x536 = _mulx_u32(x524, 0xffffffff, &x537);
+ { uint32_t x540; uint32_t x539 = _mulx_u32(x524, 0xffffffff, &x540);
+ { uint8_t x543; uint32_t x542 = _mulx_u32_out_u8(x524, 0x3f, &x543);
+ { uint32_t x545; uint8_t x546 = _addcarryx_u32(0x0, x528, x530, &x545);
+ { uint32_t x548; uint8_t x549 = _addcarryx_u32(x546, x531, x533, &x548);
+ { uint32_t x551; uint8_t x552 = _addcarryx_u32(x549, x534, x536, &x551);
+ { uint32_t x554; uint8_t x555 = _addcarryx_u32(x552, x537, x539, &x554);
+ { uint32_t x557; uint8_t x558 = _addcarryx_u32(x555, x540, x542, &x557);
+ { uint8_t x559 = (x558 + x543);
+ { uint32_t _; uint8_t x562 = _addcarryx_u32(0x0, x503, x527, &_);
+ { uint32_t x564; uint8_t x565 = _addcarryx_u32(x562, x506, x545, &x564);
+ { uint32_t x567; uint8_t x568 = _addcarryx_u32(x565, x509, x548, &x567);
+ { uint32_t x570; uint8_t x571 = _addcarryx_u32(x568, x512, x551, &x570);
+ { uint32_t x573; uint8_t x574 = _addcarryx_u32(x571, x515, x554, &x573);
+ { uint32_t x576; uint8_t x577 = _addcarryx_u32(x574, x518, x557, &x576);
+ { uint32_t x579; uint8_t x580 = _addcarryx_u32(x577, x521, x559, &x579);
+ { uint8_t x581 = (x580 + x522);
+ { uint32_t x584; uint32_t x583 = _mulx_u32(x12, x15, &x584);
+ { uint32_t x587; uint32_t x586 = _mulx_u32(x12, x17, &x587);
+ { uint32_t x590; uint32_t x589 = _mulx_u32(x12, x19, &x590);
+ { uint32_t x593; uint32_t x592 = _mulx_u32(x12, x21, &x593);
+ { uint32_t x596; uint32_t x595 = _mulx_u32(x12, x23, &x596);
+ { uint32_t x599; uint32_t x598 = _mulx_u32(x12, x22, &x599);
+ { uint32_t x601; uint8_t x602 = _addcarryx_u32(0x0, x584, x586, &x601);
+ { uint32_t x604; uint8_t x605 = _addcarryx_u32(x602, x587, x589, &x604);
+ { uint32_t x607; uint8_t x608 = _addcarryx_u32(x605, x590, x592, &x607);
+ { uint32_t x610; uint8_t x611 = _addcarryx_u32(x608, x593, x595, &x610);
+ { uint32_t x613; uint8_t x614 = _addcarryx_u32(x611, x596, x598, &x613);
+ { uint32_t x616; uint8_t _ = _addcarryx_u32(0x0, x614, x599, &x616);
+ { uint32_t x619; uint8_t x620 = _addcarryx_u32(0x0, x564, x583, &x619);
+ { uint32_t x622; uint8_t x623 = _addcarryx_u32(x620, x567, x601, &x622);
+ { uint32_t x625; uint8_t x626 = _addcarryx_u32(x623, x570, x604, &x625);
+ { uint32_t x628; uint8_t x629 = _addcarryx_u32(x626, x573, x607, &x628);
+ { uint32_t x631; uint8_t x632 = _addcarryx_u32(x629, x576, x610, &x631);
+ { uint32_t x634; uint8_t x635 = _addcarryx_u32(x632, x579, x613, &x634);
+ { uint32_t x637; uint8_t x638 = _addcarryx_u32(x635, x581, x616, &x637);
+ { uint32_t _; uint32_t x640 = _mulx_u32(x619, 0xcccccccd, &_);
+ { uint32_t x644; uint32_t x643 = _mulx_u32(x640, 0xfffffffb, &x644);
+ { uint32_t x647; uint32_t x646 = _mulx_u32(x640, 0xffffffff, &x647);
+ { uint32_t x650; uint32_t x649 = _mulx_u32(x640, 0xffffffff, &x650);
+ { uint32_t x653; uint32_t x652 = _mulx_u32(x640, 0xffffffff, &x653);
+ { uint32_t x656; uint32_t x655 = _mulx_u32(x640, 0xffffffff, &x656);
+ { uint8_t x659; uint32_t x658 = _mulx_u32_out_u8(x640, 0x3f, &x659);
+ { uint32_t x661; uint8_t x662 = _addcarryx_u32(0x0, x644, x646, &x661);
+ { uint32_t x664; uint8_t x665 = _addcarryx_u32(x662, x647, x649, &x664);
+ { uint32_t x667; uint8_t x668 = _addcarryx_u32(x665, x650, x652, &x667);
+ { uint32_t x670; uint8_t x671 = _addcarryx_u32(x668, x653, x655, &x670);
+ { uint32_t x673; uint8_t x674 = _addcarryx_u32(x671, x656, x658, &x673);
+ { uint8_t x675 = (x674 + x659);
+ { uint32_t _; uint8_t x678 = _addcarryx_u32(0x0, x619, x643, &_);
+ { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x622, x661, &x680);
+ { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x625, x664, &x683);
+ { uint32_t x686; uint8_t x687 = _addcarryx_u32(x684, x628, x667, &x686);
+ { uint32_t x689; uint8_t x690 = _addcarryx_u32(x687, x631, x670, &x689);
+ { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x634, x673, &x692);
+ { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x637, x675, &x695);
+ { uint8_t x697 = (x696 + x638);
+ { uint32_t x699; uint8_t x700 = _subborrow_u32(0x0, x680, 0xfffffffb, &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 x711; uint8_t x712 = _subborrow_u32(x709, x692, 0xffffffff, &x711);
+ { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0x3f, &x714);
+ { uint32_t _; uint8_t x718 = _subborrow_u32(x715, x697, 0x0, &_);
+ { uint32_t x719 = cmovznz32(x718, x714, x695);
+ { uint32_t x720 = cmovznz32(x718, x711, x692);
+ { uint32_t x721 = cmovznz32(x718, x708, x689);
+ { uint32_t x722 = cmovznz32(x718, x705, x686);
+ { uint32_t x723 = cmovznz32(x718, x702, x683);
+ { uint32_t x724 = cmovznz32(x718, x699, x680);
+ out[0] = x724;
+ out[1] = x723;
+ out[2] = x722;
+ out[3] = x721;
+ out[4] = x720;
+ out[5] = x719;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/femulDisplay.log b/src/Specific/montgomery32_2e166m5_6limbs/femulDisplay.log
new file mode 100644
index 000000000..7202f403c
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/femulDisplay.log
@@ -0,0 +1,252 @@
+λ 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 _ = mulx_u32(x25, 0xcccccccd);
+ uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xfffffffb);
+ uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
+ uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
+ uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
+ uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
+ uint32_t x79, uint8_t x80 = mulx_u32_out_u8(x61, 0x3f);
+ uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, 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 x95 = addcarryx_u32(x92, x77, x79);
+ uint8_t x96 = (x95 + x80);
+ uint32_t _, uint8_t x99 = addcarryx_u32(0x0, x25, x64);
+ uint32_t x101, uint8_t x102 = addcarryx_u32(x99, x43, x82);
+ uint32_t x104, uint8_t x105 = addcarryx_u32(x102, x46, x85);
+ uint32_t x107, uint8_t x108 = addcarryx_u32(x105, x49, x88);
+ uint32_t x110, uint8_t x111 = addcarryx_u32(x108, x52, x91);
+ uint32_t x113, uint8_t x114 = addcarryx_u32(x111, x55, x94);
+ uint32_t x116, uint8_t x117 = addcarryx_u32(x114, x58, x96);
+ uint32_t x119, uint32_t x120 = mulx_u32(x7, x15);
+ uint32_t x122, uint32_t x123 = mulx_u32(x7, x17);
+ uint32_t x125, uint32_t x126 = mulx_u32(x7, x19);
+ uint32_t x128, uint32_t x129 = mulx_u32(x7, x21);
+ uint32_t x131, uint32_t x132 = mulx_u32(x7, x23);
+ uint32_t x134, uint32_t x135 = mulx_u32(x7, x22);
+ uint32_t x137, uint8_t x138 = addcarryx_u32(0x0, x120, x122);
+ uint32_t x140, uint8_t x141 = addcarryx_u32(x138, x123, x125);
+ uint32_t x143, uint8_t x144 = addcarryx_u32(x141, x126, x128);
+ uint32_t x146, uint8_t x147 = addcarryx_u32(x144, x129, x131);
+ uint32_t x149, uint8_t x150 = addcarryx_u32(x147, x132, x134);
+ uint32_t x152, uint8_t _ = addcarryx_u32(0x0, x150, x135);
+ uint32_t x155, uint8_t x156 = addcarryx_u32(0x0, x101, x119);
+ uint32_t x158, uint8_t x159 = addcarryx_u32(x156, x104, x137);
+ uint32_t x161, uint8_t x162 = addcarryx_u32(x159, x107, x140);
+ uint32_t x164, uint8_t x165 = addcarryx_u32(x162, x110, x143);
+ uint32_t x167, uint8_t x168 = addcarryx_u32(x165, x113, x146);
+ uint32_t x170, uint8_t x171 = addcarryx_u32(x168, x116, x149);
+ uint32_t x173, uint8_t x174 = addcarryx_u32(x171, x117, x152);
+ uint32_t x176, uint32_t _ = mulx_u32(x155, 0xcccccccd);
+ uint32_t x179, uint32_t x180 = mulx_u32(x176, 0xfffffffb);
+ uint32_t x182, uint32_t x183 = mulx_u32(x176, 0xffffffff);
+ uint32_t x185, uint32_t x186 = mulx_u32(x176, 0xffffffff);
+ uint32_t x188, uint32_t x189 = mulx_u32(x176, 0xffffffff);
+ uint32_t x191, uint32_t x192 = mulx_u32(x176, 0xffffffff);
+ uint32_t x194, uint8_t x195 = mulx_u32_out_u8(x176, 0x3f);
+ uint32_t x197, uint8_t x198 = addcarryx_u32(0x0, x180, x182);
+ uint32_t x200, uint8_t x201 = addcarryx_u32(x198, x183, x185);
+ uint32_t x203, uint8_t x204 = addcarryx_u32(x201, x186, x188);
+ uint32_t x206, uint8_t x207 = addcarryx_u32(x204, x189, x191);
+ uint32_t x209, uint8_t x210 = addcarryx_u32(x207, x192, x194);
+ uint8_t x211 = (x210 + x195);
+ uint32_t _, uint8_t x214 = addcarryx_u32(0x0, x155, x179);
+ uint32_t x216, uint8_t x217 = addcarryx_u32(x214, x158, x197);
+ uint32_t x219, uint8_t x220 = addcarryx_u32(x217, x161, x200);
+ uint32_t x222, uint8_t x223 = addcarryx_u32(x220, x164, x203);
+ uint32_t x225, uint8_t x226 = addcarryx_u32(x223, x167, x206);
+ uint32_t x228, uint8_t x229 = addcarryx_u32(x226, x170, x209);
+ uint32_t x231, uint8_t x232 = addcarryx_u32(x229, x173, x211);
+ uint8_t x233 = (x232 + x174);
+ uint32_t x235, uint32_t x236 = mulx_u32(x9, x15);
+ uint32_t x238, uint32_t x239 = mulx_u32(x9, x17);
+ uint32_t x241, uint32_t x242 = mulx_u32(x9, x19);
+ uint32_t x244, uint32_t x245 = mulx_u32(x9, x21);
+ uint32_t x247, uint32_t x248 = mulx_u32(x9, x23);
+ uint32_t x250, uint32_t x251 = mulx_u32(x9, x22);
+ uint32_t x253, uint8_t x254 = addcarryx_u32(0x0, x236, x238);
+ uint32_t x256, uint8_t x257 = addcarryx_u32(x254, x239, x241);
+ uint32_t x259, uint8_t x260 = addcarryx_u32(x257, x242, x244);
+ uint32_t x262, uint8_t x263 = addcarryx_u32(x260, x245, x247);
+ uint32_t x265, uint8_t x266 = addcarryx_u32(x263, x248, x250);
+ uint32_t x268, uint8_t _ = addcarryx_u32(0x0, x266, x251);
+ uint32_t x271, uint8_t x272 = addcarryx_u32(0x0, x216, x235);
+ uint32_t x274, uint8_t x275 = addcarryx_u32(x272, x219, x253);
+ uint32_t x277, uint8_t x278 = addcarryx_u32(x275, x222, x256);
+ uint32_t x280, uint8_t x281 = addcarryx_u32(x278, x225, x259);
+ uint32_t x283, uint8_t x284 = addcarryx_u32(x281, x228, x262);
+ uint32_t x286, uint8_t x287 = addcarryx_u32(x284, x231, x265);
+ uint32_t x289, uint8_t x290 = addcarryx_u32(x287, x233, x268);
+ uint32_t x292, uint32_t _ = mulx_u32(x271, 0xcccccccd);
+ uint32_t x295, uint32_t x296 = mulx_u32(x292, 0xfffffffb);
+ uint32_t x298, uint32_t x299 = mulx_u32(x292, 0xffffffff);
+ uint32_t x301, uint32_t x302 = mulx_u32(x292, 0xffffffff);
+ uint32_t x304, uint32_t x305 = mulx_u32(x292, 0xffffffff);
+ uint32_t x307, uint32_t x308 = mulx_u32(x292, 0xffffffff);
+ uint32_t x310, uint8_t x311 = mulx_u32_out_u8(x292, 0x3f);
+ uint32_t x313, uint8_t x314 = addcarryx_u32(0x0, x296, x298);
+ uint32_t x316, uint8_t x317 = addcarryx_u32(x314, x299, x301);
+ uint32_t x319, uint8_t x320 = addcarryx_u32(x317, x302, x304);
+ uint32_t x322, uint8_t x323 = addcarryx_u32(x320, x305, x307);
+ uint32_t x325, uint8_t x326 = addcarryx_u32(x323, x308, x310);
+ uint8_t x327 = (x326 + x311);
+ uint32_t _, uint8_t x330 = addcarryx_u32(0x0, x271, x295);
+ uint32_t x332, uint8_t x333 = addcarryx_u32(x330, x274, x313);
+ uint32_t x335, uint8_t x336 = addcarryx_u32(x333, x277, x316);
+ uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x280, x319);
+ uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x283, x322);
+ uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x286, x325);
+ uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x289, x327);
+ uint8_t x349 = (x348 + x290);
+ uint32_t x351, uint32_t x352 = mulx_u32(x11, x15);
+ uint32_t x354, uint32_t x355 = mulx_u32(x11, x17);
+ uint32_t x357, uint32_t x358 = mulx_u32(x11, x19);
+ uint32_t x360, uint32_t x361 = mulx_u32(x11, x21);
+ uint32_t x363, uint32_t x364 = mulx_u32(x11, x23);
+ uint32_t x366, uint32_t x367 = mulx_u32(x11, x22);
+ uint32_t x369, uint8_t x370 = addcarryx_u32(0x0, 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 x382 = addcarryx_u32(x379, x364, x366);
+ uint32_t x384, uint8_t _ = addcarryx_u32(0x0, x382, x367);
+ uint32_t x387, uint8_t x388 = addcarryx_u32(0x0, x332, x351);
+ 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, x347, x381);
+ uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x349, x384);
+ uint32_t x408, uint32_t _ = mulx_u32(x387, 0xcccccccd);
+ uint32_t x411, uint32_t x412 = mulx_u32(x408, 0xfffffffb);
+ uint32_t x414, uint32_t x415 = mulx_u32(x408, 0xffffffff);
+ uint32_t x417, uint32_t x418 = mulx_u32(x408, 0xffffffff);
+ uint32_t x420, uint32_t x421 = mulx_u32(x408, 0xffffffff);
+ uint32_t x423, uint32_t x424 = mulx_u32(x408, 0xffffffff);
+ uint32_t x426, uint8_t x427 = mulx_u32_out_u8(x408, 0x3f);
+ uint32_t x429, uint8_t x430 = addcarryx_u32(0x0, 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 x439 = addcarryx_u32(x436, x421, x423);
+ uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
+ uint8_t x443 = (x442 + x427);
+ uint32_t _, uint8_t x446 = addcarryx_u32(0x0, x387, x411);
+ uint32_t x448, uint8_t x449 = addcarryx_u32(x446, x390, x429);
+ uint32_t x451, uint8_t x452 = addcarryx_u32(x449, x393, x432);
+ uint32_t x454, uint8_t x455 = addcarryx_u32(x452, x396, x435);
+ uint32_t x457, uint8_t x458 = addcarryx_u32(x455, x399, x438);
+ uint32_t x460, uint8_t x461 = addcarryx_u32(x458, x402, x441);
+ uint32_t x463, uint8_t x464 = addcarryx_u32(x461, x405, x443);
+ uint8_t x465 = (x464 + x406);
+ uint32_t x467, uint32_t x468 = mulx_u32(x13, x15);
+ uint32_t x470, uint32_t x471 = mulx_u32(x13, x17);
+ uint32_t x473, uint32_t x474 = mulx_u32(x13, x19);
+ uint32_t x476, uint32_t x477 = mulx_u32(x13, x21);
+ uint32_t x479, uint32_t x480 = mulx_u32(x13, x23);
+ uint32_t x482, uint32_t x483 = mulx_u32(x13, x22);
+ uint32_t x485, uint8_t x486 = addcarryx_u32(0x0, x468, x470);
+ uint32_t x488, uint8_t x489 = addcarryx_u32(x486, x471, x473);
+ uint32_t x491, uint8_t x492 = addcarryx_u32(x489, x474, x476);
+ uint32_t x494, uint8_t x495 = addcarryx_u32(x492, x477, x479);
+ uint32_t x497, uint8_t x498 = addcarryx_u32(x495, x480, x482);
+ uint32_t x500, uint8_t _ = addcarryx_u32(0x0, x498, x483);
+ uint32_t x503, uint8_t x504 = addcarryx_u32(0x0, x448, x467);
+ uint32_t x506, uint8_t x507 = addcarryx_u32(x504, x451, x485);
+ uint32_t x509, uint8_t x510 = addcarryx_u32(x507, x454, x488);
+ uint32_t x512, uint8_t x513 = addcarryx_u32(x510, x457, x491);
+ uint32_t x515, uint8_t x516 = addcarryx_u32(x513, x460, x494);
+ uint32_t x518, uint8_t x519 = addcarryx_u32(x516, x463, x497);
+ uint32_t x521, uint8_t x522 = addcarryx_u32(x519, x465, x500);
+ uint32_t x524, uint32_t _ = mulx_u32(x503, 0xcccccccd);
+ uint32_t x527, uint32_t x528 = mulx_u32(x524, 0xfffffffb);
+ uint32_t x530, uint32_t x531 = mulx_u32(x524, 0xffffffff);
+ uint32_t x533, uint32_t x534 = mulx_u32(x524, 0xffffffff);
+ uint32_t x536, uint32_t x537 = mulx_u32(x524, 0xffffffff);
+ uint32_t x539, uint32_t x540 = mulx_u32(x524, 0xffffffff);
+ uint32_t x542, uint8_t x543 = mulx_u32_out_u8(x524, 0x3f);
+ uint32_t x545, uint8_t x546 = addcarryx_u32(0x0, x528, x530);
+ uint32_t x548, uint8_t x549 = addcarryx_u32(x546, x531, x533);
+ uint32_t x551, uint8_t x552 = addcarryx_u32(x549, x534, x536);
+ uint32_t x554, uint8_t x555 = addcarryx_u32(x552, x537, x539);
+ uint32_t x557, uint8_t x558 = addcarryx_u32(x555, x540, x542);
+ uint8_t x559 = (x558 + x543);
+ uint32_t _, uint8_t x562 = addcarryx_u32(0x0, x503, x527);
+ uint32_t x564, uint8_t x565 = addcarryx_u32(x562, x506, x545);
+ uint32_t x567, uint8_t x568 = addcarryx_u32(x565, x509, x548);
+ uint32_t x570, uint8_t x571 = addcarryx_u32(x568, x512, x551);
+ uint32_t x573, uint8_t x574 = addcarryx_u32(x571, x515, x554);
+ uint32_t x576, uint8_t x577 = addcarryx_u32(x574, x518, x557);
+ uint32_t x579, uint8_t x580 = addcarryx_u32(x577, x521, x559);
+ uint8_t x581 = (x580 + x522);
+ uint32_t x583, uint32_t x584 = mulx_u32(x12, x15);
+ uint32_t x586, uint32_t x587 = mulx_u32(x12, x17);
+ uint32_t x589, uint32_t x590 = mulx_u32(x12, x19);
+ uint32_t x592, uint32_t x593 = mulx_u32(x12, x21);
+ uint32_t x595, uint32_t x596 = mulx_u32(x12, x23);
+ uint32_t x598, uint32_t x599 = mulx_u32(x12, x22);
+ uint32_t x601, uint8_t x602 = addcarryx_u32(0x0, x584, x586);
+ uint32_t x604, uint8_t x605 = addcarryx_u32(x602, x587, x589);
+ uint32_t x607, uint8_t x608 = addcarryx_u32(x605, x590, x592);
+ uint32_t x610, uint8_t x611 = addcarryx_u32(x608, x593, x595);
+ uint32_t x613, uint8_t x614 = addcarryx_u32(x611, x596, x598);
+ uint32_t x616, uint8_t _ = addcarryx_u32(0x0, x614, x599);
+ uint32_t x619, uint8_t x620 = addcarryx_u32(0x0, x564, x583);
+ uint32_t x622, uint8_t x623 = addcarryx_u32(x620, x567, x601);
+ uint32_t x625, uint8_t x626 = addcarryx_u32(x623, x570, x604);
+ uint32_t x628, uint8_t x629 = addcarryx_u32(x626, x573, x607);
+ uint32_t x631, uint8_t x632 = addcarryx_u32(x629, x576, x610);
+ uint32_t x634, uint8_t x635 = addcarryx_u32(x632, x579, x613);
+ uint32_t x637, uint8_t x638 = addcarryx_u32(x635, x581, x616);
+ uint32_t x640, uint32_t _ = mulx_u32(x619, 0xcccccccd);
+ uint32_t x643, uint32_t x644 = mulx_u32(x640, 0xfffffffb);
+ uint32_t x646, uint32_t x647 = mulx_u32(x640, 0xffffffff);
+ uint32_t x649, uint32_t x650 = mulx_u32(x640, 0xffffffff);
+ uint32_t x652, uint32_t x653 = mulx_u32(x640, 0xffffffff);
+ uint32_t x655, uint32_t x656 = mulx_u32(x640, 0xffffffff);
+ uint32_t x658, uint8_t x659 = mulx_u32_out_u8(x640, 0x3f);
+ uint32_t x661, uint8_t x662 = addcarryx_u32(0x0, x644, x646);
+ uint32_t x664, uint8_t x665 = addcarryx_u32(x662, x647, x649);
+ uint32_t x667, uint8_t x668 = addcarryx_u32(x665, x650, x652);
+ uint32_t x670, uint8_t x671 = addcarryx_u32(x668, x653, x655);
+ uint32_t x673, uint8_t x674 = addcarryx_u32(x671, x656, x658);
+ uint8_t x675 = (x674 + x659);
+ uint32_t _, uint8_t x678 = addcarryx_u32(0x0, x619, x643);
+ uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x622, x661);
+ uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x625, x664);
+ uint32_t x686, uint8_t x687 = addcarryx_u32(x684, x628, x667);
+ uint32_t x689, uint8_t x690 = addcarryx_u32(x687, x631, x670);
+ uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x634, x673);
+ uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x637, x675);
+ uint8_t x697 = (x696 + x638);
+ uint32_t x699, uint8_t x700 = subborrow_u32(0x0, x680, 0xfffffffb);
+ 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 x711, uint8_t x712 = subborrow_u32(x709, x692, 0xffffffff);
+ uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0x3f);
+ uint32_t _, uint8_t x718 = subborrow_u32(x715, x697, 0x0);
+ uint32_t x719 = cmovznz32(x718, x714, x695);
+ uint32_t x720 = cmovznz32(x718, x711, x692);
+ uint32_t x721 = cmovznz32(x718, x708, x689);
+ uint32_t x722 = cmovznz32(x718, x705, x686);
+ uint32_t x723 = cmovznz32(x718, x702, x683);
+ uint32_t x724 = cmovznz32(x718, x699, x680);
+ return (x719, x720, x721, x722, x723, x724))
+(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_2e166m5_6limbs/feopp.c b/src/Specific/montgomery32_2e166m5_6limbs/feopp.c
new file mode 100644
index 000000000..d9caf7596
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_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 & 0xfffffffb);
+ { 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 & 0xffffffff);
+ { 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);
+ { uint8_t x50 = ((uint8_t)x29 & 0x3f);
+ { 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_2e166m5_6limbs/feoppDisplay.log b/src/Specific/montgomery32_2e166m5_6limbs/feoppDisplay.log
new file mode 100644
index 000000000..8b39a6b4e
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_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 & 0xfffffffb);
+ 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 & 0xffffffff);
+ 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);
+ uint8_t x50 = ((uint8_t)x29 & 0x3f);
+ 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_2e166m5_6limbs/fesub.c b/src/Specific/montgomery32_2e166m5_6limbs/fesub.c
new file mode 100644
index 000000000..5ce4a0e74
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_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 & 0xfffffffb);
+ { 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 & 0xffffffff);
+ { 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);
+ { uint8_t x63 = ((uint8_t)x42 & 0x3f);
+ { 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_2e166m5_6limbs/fesubDisplay.log b/src/Specific/montgomery32_2e166m5_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..5b6f35fd1
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_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 & 0xfffffffb);
+ 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 & 0xffffffff);
+ 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);
+ uint8_t x63 = ((uint8_t)x42 & 0x3f);
+ 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_2e171m19_6limbs/feadd.c b/src/Specific/montgomery32_2e171m19_6limbs/feadd.c
new file mode 100644
index 000000000..85dcc582d
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/feadd.c
@@ -0,0 +1,40 @@
+static void feadd(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 = _addcarryx_u32(0x0, x5, x15, &x25);
+ { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
+ { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
+ { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
+ { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
+ { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
+ { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xffffffed, &x43);
+ { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
+ { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
+ { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
+ { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
+ { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x7ff, &x58);
+ { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
+ { uint32_t x63 = cmovznz32(x62, x58, x40);
+ { uint32_t x64 = cmovznz32(x62, x55, x37);
+ { uint32_t x65 = cmovznz32(x62, x52, x34);
+ { uint32_t x66 = cmovznz32(x62, x49, x31);
+ { uint32_t x67 = cmovznz32(x62, x46, x28);
+ { uint32_t x68 = cmovznz32(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/montgomery32_2e171m19_6limbs/feaddDisplay.log b/src/Specific/montgomery32_2e171m19_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..4a39a15c4
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/feaddDisplay.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 = addcarryx_u32(0x0, x5, x15);
+ uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
+ uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
+ uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
+ uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
+ uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
+ uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xffffffed);
+ uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
+ uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
+ uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
+ uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
+ uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x7ff);
+ uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
+ uint32_t x63 = cmovznz32(x62, x58, x40);
+ uint32_t x64 = cmovznz32(x62, x55, x37);
+ uint32_t x65 = cmovznz32(x62, x52, x34);
+ uint32_t x66 = cmovznz32(x62, x49, x31);
+ uint32_t x67 = cmovznz32(x62, x46, x28);
+ uint32_t x68 = cmovznz32(x62, x43, x25);
+ return (x63, x64, x65, x66, x67, x68))
+(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_2e171m19_6limbs/femul.c b/src/Specific/montgomery32_2e171m19_6limbs/femul.c
new file mode 100644
index 000000000..e41566974
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/femul.c
@@ -0,0 +1,266 @@
+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 _; uint32_t x61 = _mulx_u32(x25, 0x286bca1b, &_);
+ { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xffffffed, &x65);
+ { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
+ { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
+ { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
+ { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
+ { uint32_t x80; uint32_t x79 = _mulx_u32(x61, 0x7ff, &x80);
+ { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, 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 x95 = _addcarryx_u32(x92, x77, x79, &x94);
+ { uint32_t x97; uint8_t _ = _addcarryx_u32(0x0, x95, x80, &x97);
+ { uint32_t _; uint8_t x101 = _addcarryx_u32(0x0, x25, x64, &_);
+ { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x43, x82, &x103);
+ { uint32_t x106; uint8_t x107 = _addcarryx_u32(x104, x46, x85, &x106);
+ { uint32_t x109; uint8_t x110 = _addcarryx_u32(x107, x49, x88, &x109);
+ { uint32_t x112; uint8_t x113 = _addcarryx_u32(x110, x52, x91, &x112);
+ { uint32_t x115; uint8_t x116 = _addcarryx_u32(x113, x55, x94, &x115);
+ { uint32_t x118; uint8_t x119 = _addcarryx_u32(x116, x58, x97, &x118);
+ { uint32_t x122; uint32_t x121 = _mulx_u32(x7, x15, &x122);
+ { uint32_t x125; uint32_t x124 = _mulx_u32(x7, x17, &x125);
+ { uint32_t x128; uint32_t x127 = _mulx_u32(x7, x19, &x128);
+ { uint32_t x131; uint32_t x130 = _mulx_u32(x7, x21, &x131);
+ { uint32_t x134; uint32_t x133 = _mulx_u32(x7, x23, &x134);
+ { uint32_t x137; uint32_t x136 = _mulx_u32(x7, x22, &x137);
+ { uint32_t x139; uint8_t x140 = _addcarryx_u32(0x0, 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 x152 = _addcarryx_u32(x149, x134, x136, &x151);
+ { uint32_t x154; uint8_t _ = _addcarryx_u32(0x0, x152, x137, &x154);
+ { uint32_t x157; uint8_t x158 = _addcarryx_u32(0x0, x103, x121, &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, x118, x151, &x172);
+ { uint32_t x175; uint8_t x176 = _addcarryx_u32(x173, x119, x154, &x175);
+ { uint32_t _; uint32_t x178 = _mulx_u32(x157, 0x286bca1b, &_);
+ { uint32_t x182; uint32_t x181 = _mulx_u32(x178, 0xffffffed, &x182);
+ { uint32_t x185; uint32_t x184 = _mulx_u32(x178, 0xffffffff, &x185);
+ { uint32_t x188; uint32_t x187 = _mulx_u32(x178, 0xffffffff, &x188);
+ { uint32_t x191; uint32_t x190 = _mulx_u32(x178, 0xffffffff, &x191);
+ { uint32_t x194; uint32_t x193 = _mulx_u32(x178, 0xffffffff, &x194);
+ { uint32_t x197; uint32_t x196 = _mulx_u32(x178, 0x7ff, &x197);
+ { uint32_t x199; uint8_t x200 = _addcarryx_u32(0x0, 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 x209 = _addcarryx_u32(x206, x191, x193, &x208);
+ { uint32_t x211; uint8_t x212 = _addcarryx_u32(x209, x194, x196, &x211);
+ { uint32_t x214; uint8_t _ = _addcarryx_u32(0x0, x212, x197, &x214);
+ { uint32_t _; uint8_t x218 = _addcarryx_u32(0x0, x157, x181, &_);
+ { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x160, x199, &x220);
+ { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x163, x202, &x223);
+ { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x166, x205, &x226);
+ { uint32_t x229; uint8_t x230 = _addcarryx_u32(x227, x169, x208, &x229);
+ { uint32_t x232; uint8_t x233 = _addcarryx_u32(x230, x172, x211, &x232);
+ { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x175, x214, &x235);
+ { uint8_t x237 = (x236 + x176);
+ { uint32_t x240; uint32_t x239 = _mulx_u32(x9, x15, &x240);
+ { uint32_t x243; uint32_t x242 = _mulx_u32(x9, x17, &x243);
+ { uint32_t x246; uint32_t x245 = _mulx_u32(x9, x19, &x246);
+ { uint32_t x249; uint32_t x248 = _mulx_u32(x9, x21, &x249);
+ { uint32_t x252; uint32_t x251 = _mulx_u32(x9, x23, &x252);
+ { uint32_t x255; uint32_t x254 = _mulx_u32(x9, x22, &x255);
+ { uint32_t x257; uint8_t x258 = _addcarryx_u32(0x0, 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 x267 = _addcarryx_u32(x264, x249, x251, &x266);
+ { uint32_t x269; uint8_t x270 = _addcarryx_u32(x267, x252, x254, &x269);
+ { uint32_t x272; uint8_t _ = _addcarryx_u32(0x0, x270, x255, &x272);
+ { uint32_t x275; uint8_t x276 = _addcarryx_u32(0x0, x220, x239, &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, x232, x266, &x287);
+ { uint32_t x290; uint8_t x291 = _addcarryx_u32(x288, x235, x269, &x290);
+ { uint32_t x293; uint8_t x294 = _addcarryx_u32(x291, x237, x272, &x293);
+ { uint32_t _; uint32_t x296 = _mulx_u32(x275, 0x286bca1b, &_);
+ { uint32_t x300; uint32_t x299 = _mulx_u32(x296, 0xffffffed, &x300);
+ { uint32_t x303; uint32_t x302 = _mulx_u32(x296, 0xffffffff, &x303);
+ { uint32_t x306; uint32_t x305 = _mulx_u32(x296, 0xffffffff, &x306);
+ { uint32_t x309; uint32_t x308 = _mulx_u32(x296, 0xffffffff, &x309);
+ { uint32_t x312; uint32_t x311 = _mulx_u32(x296, 0xffffffff, &x312);
+ { uint32_t x315; uint32_t x314 = _mulx_u32(x296, 0x7ff, &x315);
+ { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x300, x302, &x317);
+ { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x303, x305, &x320);
+ { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x306, x308, &x323);
+ { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x309, x311, &x326);
+ { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x312, x314, &x329);
+ { uint32_t x332; uint8_t _ = _addcarryx_u32(0x0, x330, x315, &x332);
+ { uint32_t _; uint8_t x336 = _addcarryx_u32(0x0, x275, x299, &_);
+ { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x278, x317, &x338);
+ { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x281, x320, &x341);
+ { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x284, x323, &x344);
+ { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x287, x326, &x347);
+ { uint32_t x350; uint8_t x351 = _addcarryx_u32(x348, x290, x329, &x350);
+ { uint32_t x353; uint8_t x354 = _addcarryx_u32(x351, x293, x332, &x353);
+ { uint8_t x355 = (x354 + x294);
+ { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x15, &x358);
+ { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x17, &x361);
+ { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x19, &x364);
+ { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x21, &x367);
+ { uint32_t x370; uint32_t x369 = _mulx_u32(x11, x23, &x370);
+ { uint32_t x373; uint32_t x372 = _mulx_u32(x11, x22, &x373);
+ { uint32_t x375; uint8_t x376 = _addcarryx_u32(0x0, x358, x360, &x375);
+ { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
+ { uint32_t x381; uint8_t x382 = _addcarryx_u32(x379, x364, x366, &x381);
+ { uint32_t x384; uint8_t x385 = _addcarryx_u32(x382, x367, x369, &x384);
+ { uint32_t x387; uint8_t x388 = _addcarryx_u32(x385, x370, x372, &x387);
+ { uint32_t x390; uint8_t _ = _addcarryx_u32(0x0, x388, x373, &x390);
+ { uint32_t x393; uint8_t x394 = _addcarryx_u32(0x0, x338, x357, &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, x347, x381, &x402);
+ { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x350, x384, &x405);
+ { uint32_t x408; uint8_t x409 = _addcarryx_u32(x406, x353, x387, &x408);
+ { uint32_t x411; uint8_t x412 = _addcarryx_u32(x409, x355, x390, &x411);
+ { uint32_t _; uint32_t x414 = _mulx_u32(x393, 0x286bca1b, &_);
+ { uint32_t x418; uint32_t x417 = _mulx_u32(x414, 0xffffffed, &x418);
+ { uint32_t x421; uint32_t x420 = _mulx_u32(x414, 0xffffffff, &x421);
+ { uint32_t x424; uint32_t x423 = _mulx_u32(x414, 0xffffffff, &x424);
+ { uint32_t x427; uint32_t x426 = _mulx_u32(x414, 0xffffffff, &x427);
+ { uint32_t x430; uint32_t x429 = _mulx_u32(x414, 0xffffffff, &x430);
+ { uint32_t x433; uint32_t x432 = _mulx_u32(x414, 0x7ff, &x433);
+ { uint32_t x435; uint8_t x436 = _addcarryx_u32(0x0, x418, x420, &x435);
+ { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x421, x423, &x438);
+ { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
+ { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x427, x429, &x444);
+ { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x430, x432, &x447);
+ { uint32_t x450; uint8_t _ = _addcarryx_u32(0x0, x448, x433, &x450);
+ { uint32_t _; uint8_t x454 = _addcarryx_u32(0x0, x393, x417, &_);
+ { uint32_t x456; uint8_t x457 = _addcarryx_u32(x454, x396, x435, &x456);
+ { uint32_t x459; uint8_t x460 = _addcarryx_u32(x457, x399, x438, &x459);
+ { uint32_t x462; uint8_t x463 = _addcarryx_u32(x460, x402, x441, &x462);
+ { uint32_t x465; uint8_t x466 = _addcarryx_u32(x463, x405, x444, &x465);
+ { uint32_t x468; uint8_t x469 = _addcarryx_u32(x466, x408, x447, &x468);
+ { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x411, x450, &x471);
+ { uint8_t x473 = (x472 + x412);
+ { uint32_t x476; uint32_t x475 = _mulx_u32(x13, x15, &x476);
+ { uint32_t x479; uint32_t x478 = _mulx_u32(x13, x17, &x479);
+ { uint32_t x482; uint32_t x481 = _mulx_u32(x13, x19, &x482);
+ { uint32_t x485; uint32_t x484 = _mulx_u32(x13, x21, &x485);
+ { uint32_t x488; uint32_t x487 = _mulx_u32(x13, x23, &x488);
+ { uint32_t x491; uint32_t x490 = _mulx_u32(x13, x22, &x491);
+ { uint32_t x493; uint8_t x494 = _addcarryx_u32(0x0, x476, x478, &x493);
+ { uint32_t x496; uint8_t x497 = _addcarryx_u32(x494, x479, x481, &x496);
+ { uint32_t x499; uint8_t x500 = _addcarryx_u32(x497, x482, x484, &x499);
+ { uint32_t x502; uint8_t x503 = _addcarryx_u32(x500, x485, x487, &x502);
+ { uint32_t x505; uint8_t x506 = _addcarryx_u32(x503, x488, x490, &x505);
+ { uint32_t x508; uint8_t _ = _addcarryx_u32(0x0, x506, x491, &x508);
+ { uint32_t x511; uint8_t x512 = _addcarryx_u32(0x0, x456, x475, &x511);
+ { uint32_t x514; uint8_t x515 = _addcarryx_u32(x512, x459, x493, &x514);
+ { uint32_t x517; uint8_t x518 = _addcarryx_u32(x515, x462, x496, &x517);
+ { uint32_t x520; uint8_t x521 = _addcarryx_u32(x518, x465, x499, &x520);
+ { uint32_t x523; uint8_t x524 = _addcarryx_u32(x521, x468, x502, &x523);
+ { uint32_t x526; uint8_t x527 = _addcarryx_u32(x524, x471, x505, &x526);
+ { uint32_t x529; uint8_t x530 = _addcarryx_u32(x527, x473, x508, &x529);
+ { uint32_t _; uint32_t x532 = _mulx_u32(x511, 0x286bca1b, &_);
+ { uint32_t x536; uint32_t x535 = _mulx_u32(x532, 0xffffffed, &x536);
+ { uint32_t x539; uint32_t x538 = _mulx_u32(x532, 0xffffffff, &x539);
+ { uint32_t x542; uint32_t x541 = _mulx_u32(x532, 0xffffffff, &x542);
+ { uint32_t x545; uint32_t x544 = _mulx_u32(x532, 0xffffffff, &x545);
+ { uint32_t x548; uint32_t x547 = _mulx_u32(x532, 0xffffffff, &x548);
+ { uint32_t x551; uint32_t x550 = _mulx_u32(x532, 0x7ff, &x551);
+ { uint32_t x553; uint8_t x554 = _addcarryx_u32(0x0, x536, x538, &x553);
+ { uint32_t x556; uint8_t x557 = _addcarryx_u32(x554, x539, x541, &x556);
+ { uint32_t x559; uint8_t x560 = _addcarryx_u32(x557, x542, x544, &x559);
+ { uint32_t x562; uint8_t x563 = _addcarryx_u32(x560, x545, x547, &x562);
+ { uint32_t x565; uint8_t x566 = _addcarryx_u32(x563, x548, x550, &x565);
+ { uint32_t x568; uint8_t _ = _addcarryx_u32(0x0, x566, x551, &x568);
+ { uint32_t _; uint8_t x572 = _addcarryx_u32(0x0, x511, x535, &_);
+ { uint32_t x574; uint8_t x575 = _addcarryx_u32(x572, x514, x553, &x574);
+ { uint32_t x577; uint8_t x578 = _addcarryx_u32(x575, x517, x556, &x577);
+ { uint32_t x580; uint8_t x581 = _addcarryx_u32(x578, x520, x559, &x580);
+ { uint32_t x583; uint8_t x584 = _addcarryx_u32(x581, x523, x562, &x583);
+ { uint32_t x586; uint8_t x587 = _addcarryx_u32(x584, x526, x565, &x586);
+ { uint32_t x589; uint8_t x590 = _addcarryx_u32(x587, x529, x568, &x589);
+ { uint8_t x591 = (x590 + x530);
+ { uint32_t x594; uint32_t x593 = _mulx_u32(x12, x15, &x594);
+ { uint32_t x597; uint32_t x596 = _mulx_u32(x12, x17, &x597);
+ { uint32_t x600; uint32_t x599 = _mulx_u32(x12, x19, &x600);
+ { uint32_t x603; uint32_t x602 = _mulx_u32(x12, x21, &x603);
+ { uint32_t x606; uint32_t x605 = _mulx_u32(x12, x23, &x606);
+ { uint32_t x609; uint32_t x608 = _mulx_u32(x12, x22, &x609);
+ { uint32_t x611; uint8_t x612 = _addcarryx_u32(0x0, x594, x596, &x611);
+ { uint32_t x614; uint8_t x615 = _addcarryx_u32(x612, x597, x599, &x614);
+ { uint32_t x617; uint8_t x618 = _addcarryx_u32(x615, x600, x602, &x617);
+ { uint32_t x620; uint8_t x621 = _addcarryx_u32(x618, x603, x605, &x620);
+ { uint32_t x623; uint8_t x624 = _addcarryx_u32(x621, x606, x608, &x623);
+ { uint32_t x626; uint8_t _ = _addcarryx_u32(0x0, x624, x609, &x626);
+ { uint32_t x629; uint8_t x630 = _addcarryx_u32(0x0, x574, x593, &x629);
+ { uint32_t x632; uint8_t x633 = _addcarryx_u32(x630, x577, x611, &x632);
+ { uint32_t x635; uint8_t x636 = _addcarryx_u32(x633, x580, x614, &x635);
+ { uint32_t x638; uint8_t x639 = _addcarryx_u32(x636, x583, x617, &x638);
+ { uint32_t x641; uint8_t x642 = _addcarryx_u32(x639, x586, x620, &x641);
+ { uint32_t x644; uint8_t x645 = _addcarryx_u32(x642, x589, x623, &x644);
+ { uint32_t x647; uint8_t x648 = _addcarryx_u32(x645, x591, x626, &x647);
+ { uint32_t _; uint32_t x650 = _mulx_u32(x629, 0x286bca1b, &_);
+ { uint32_t x654; uint32_t x653 = _mulx_u32(x650, 0xffffffed, &x654);
+ { uint32_t x657; uint32_t x656 = _mulx_u32(x650, 0xffffffff, &x657);
+ { uint32_t x660; uint32_t x659 = _mulx_u32(x650, 0xffffffff, &x660);
+ { uint32_t x663; uint32_t x662 = _mulx_u32(x650, 0xffffffff, &x663);
+ { uint32_t x666; uint32_t x665 = _mulx_u32(x650, 0xffffffff, &x666);
+ { uint32_t x669; uint32_t x668 = _mulx_u32(x650, 0x7ff, &x669);
+ { uint32_t x671; uint8_t x672 = _addcarryx_u32(0x0, x654, x656, &x671);
+ { uint32_t x674; uint8_t x675 = _addcarryx_u32(x672, x657, x659, &x674);
+ { uint32_t x677; uint8_t x678 = _addcarryx_u32(x675, x660, x662, &x677);
+ { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x663, x665, &x680);
+ { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x666, x668, &x683);
+ { uint32_t x686; uint8_t _ = _addcarryx_u32(0x0, x684, x669, &x686);
+ { uint32_t _; uint8_t x690 = _addcarryx_u32(0x0, x629, x653, &_);
+ { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x632, x671, &x692);
+ { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x635, x674, &x695);
+ { uint32_t x698; uint8_t x699 = _addcarryx_u32(x696, x638, x677, &x698);
+ { uint32_t x701; uint8_t x702 = _addcarryx_u32(x699, x641, x680, &x701);
+ { uint32_t x704; uint8_t x705 = _addcarryx_u32(x702, x644, x683, &x704);
+ { uint32_t x707; uint8_t x708 = _addcarryx_u32(x705, x647, x686, &x707);
+ { uint8_t x709 = (x708 + x648);
+ { uint32_t x711; uint8_t x712 = _subborrow_u32(0x0, x692, 0xffffffed, &x711);
+ { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0xffffffff, &x714);
+ { uint32_t x717; uint8_t x718 = _subborrow_u32(x715, x698, 0xffffffff, &x717);
+ { uint32_t x720; uint8_t x721 = _subborrow_u32(x718, x701, 0xffffffff, &x720);
+ { uint32_t x723; uint8_t x724 = _subborrow_u32(x721, x704, 0xffffffff, &x723);
+ { uint32_t x726; uint8_t x727 = _subborrow_u32(x724, x707, 0x7ff, &x726);
+ { uint32_t _; uint8_t x730 = _subborrow_u32(x727, x709, 0x0, &_);
+ { uint32_t x731 = cmovznz32(x730, x726, x707);
+ { uint32_t x732 = cmovznz32(x730, x723, x704);
+ { uint32_t x733 = cmovznz32(x730, x720, x701);
+ { uint32_t x734 = cmovznz32(x730, x717, x698);
+ { uint32_t x735 = cmovznz32(x730, x714, x695);
+ { uint32_t x736 = cmovznz32(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/montgomery32_2e171m19_6limbs/femulDisplay.log b/src/Specific/montgomery32_2e171m19_6limbs/femulDisplay.log
new file mode 100644
index 000000000..d4b873886
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/femulDisplay.log
@@ -0,0 +1,252 @@
+λ 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 _ = mulx_u32(x25, 0x286bca1b);
+ uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xffffffed);
+ uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
+ uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
+ uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
+ uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
+ uint32_t x79, uint32_t x80 = mulx_u32(x61, 0x7ff);
+ uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, 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 x95 = addcarryx_u32(x92, x77, x79);
+ uint32_t x97, uint8_t _ = addcarryx_u32(0x0, x95, x80);
+ uint32_t _, uint8_t x101 = addcarryx_u32(0x0, x25, x64);
+ uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x43, x82);
+ uint32_t x106, uint8_t x107 = addcarryx_u32(x104, x46, x85);
+ uint32_t x109, uint8_t x110 = addcarryx_u32(x107, x49, x88);
+ uint32_t x112, uint8_t x113 = addcarryx_u32(x110, x52, x91);
+ uint32_t x115, uint8_t x116 = addcarryx_u32(x113, x55, x94);
+ uint32_t x118, uint8_t x119 = addcarryx_u32(x116, x58, x97);
+ uint32_t x121, uint32_t x122 = mulx_u32(x7, x15);
+ uint32_t x124, uint32_t x125 = mulx_u32(x7, x17);
+ uint32_t x127, uint32_t x128 = mulx_u32(x7, x19);
+ uint32_t x130, uint32_t x131 = mulx_u32(x7, x21);
+ uint32_t x133, uint32_t x134 = mulx_u32(x7, x23);
+ uint32_t x136, uint32_t x137 = mulx_u32(x7, x22);
+ uint32_t x139, uint8_t x140 = addcarryx_u32(0x0, 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 x152 = addcarryx_u32(x149, x134, x136);
+ uint32_t x154, uint8_t _ = addcarryx_u32(0x0, x152, x137);
+ uint32_t x157, uint8_t x158 = addcarryx_u32(0x0, x103, x121);
+ 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, x118, x151);
+ uint32_t x175, uint8_t x176 = addcarryx_u32(x173, x119, x154);
+ uint32_t x178, uint32_t _ = mulx_u32(x157, 0x286bca1b);
+ uint32_t x181, uint32_t x182 = mulx_u32(x178, 0xffffffed);
+ uint32_t x184, uint32_t x185 = mulx_u32(x178, 0xffffffff);
+ uint32_t x187, uint32_t x188 = mulx_u32(x178, 0xffffffff);
+ uint32_t x190, uint32_t x191 = mulx_u32(x178, 0xffffffff);
+ uint32_t x193, uint32_t x194 = mulx_u32(x178, 0xffffffff);
+ uint32_t x196, uint32_t x197 = mulx_u32(x178, 0x7ff);
+ uint32_t x199, uint8_t x200 = addcarryx_u32(0x0, 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 x209 = addcarryx_u32(x206, x191, x193);
+ uint32_t x211, uint8_t x212 = addcarryx_u32(x209, x194, x196);
+ uint32_t x214, uint8_t _ = addcarryx_u32(0x0, x212, x197);
+ uint32_t _, uint8_t x218 = addcarryx_u32(0x0, x157, x181);
+ uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x160, x199);
+ uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x163, x202);
+ uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x166, x205);
+ uint32_t x229, uint8_t x230 = addcarryx_u32(x227, x169, x208);
+ uint32_t x232, uint8_t x233 = addcarryx_u32(x230, x172, x211);
+ uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x175, x214);
+ uint8_t x237 = (x236 + x176);
+ uint32_t x239, uint32_t x240 = mulx_u32(x9, x15);
+ uint32_t x242, uint32_t x243 = mulx_u32(x9, x17);
+ uint32_t x245, uint32_t x246 = mulx_u32(x9, x19);
+ uint32_t x248, uint32_t x249 = mulx_u32(x9, x21);
+ uint32_t x251, uint32_t x252 = mulx_u32(x9, x23);
+ uint32_t x254, uint32_t x255 = mulx_u32(x9, x22);
+ uint32_t x257, uint8_t x258 = addcarryx_u32(0x0, 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 x267 = addcarryx_u32(x264, x249, x251);
+ uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x252, x254);
+ uint32_t x272, uint8_t _ = addcarryx_u32(0x0, x270, x255);
+ uint32_t x275, uint8_t x276 = addcarryx_u32(0x0, x220, x239);
+ 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, x232, x266);
+ uint32_t x290, uint8_t x291 = addcarryx_u32(x288, x235, x269);
+ uint32_t x293, uint8_t x294 = addcarryx_u32(x291, x237, x272);
+ uint32_t x296, uint32_t _ = mulx_u32(x275, 0x286bca1b);
+ uint32_t x299, uint32_t x300 = mulx_u32(x296, 0xffffffed);
+ uint32_t x302, uint32_t x303 = mulx_u32(x296, 0xffffffff);
+ uint32_t x305, uint32_t x306 = mulx_u32(x296, 0xffffffff);
+ uint32_t x308, uint32_t x309 = mulx_u32(x296, 0xffffffff);
+ uint32_t x311, uint32_t x312 = mulx_u32(x296, 0xffffffff);
+ uint32_t x314, uint32_t x315 = mulx_u32(x296, 0x7ff);
+ uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x300, x302);
+ uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x303, x305);
+ uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x306, x308);
+ uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x309, x311);
+ uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x312, x314);
+ uint32_t x332, uint8_t _ = addcarryx_u32(0x0, x330, x315);
+ uint32_t _, uint8_t x336 = addcarryx_u32(0x0, x275, x299);
+ uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x278, x317);
+ uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x281, x320);
+ uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x284, x323);
+ uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x287, x326);
+ uint32_t x350, uint8_t x351 = addcarryx_u32(x348, x290, x329);
+ uint32_t x353, uint8_t x354 = addcarryx_u32(x351, x293, x332);
+ uint8_t x355 = (x354 + x294);
+ uint32_t x357, uint32_t x358 = mulx_u32(x11, x15);
+ uint32_t x360, uint32_t x361 = mulx_u32(x11, x17);
+ uint32_t x363, uint32_t x364 = mulx_u32(x11, x19);
+ uint32_t x366, uint32_t x367 = mulx_u32(x11, x21);
+ uint32_t x369, uint32_t x370 = mulx_u32(x11, x23);
+ uint32_t x372, uint32_t x373 = mulx_u32(x11, x22);
+ uint32_t x375, uint8_t x376 = addcarryx_u32(0x0, x358, x360);
+ uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
+ uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x364, x366);
+ uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x367, x369);
+ uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x370, x372);
+ uint32_t x390, uint8_t _ = addcarryx_u32(0x0, x388, x373);
+ uint32_t x393, uint8_t x394 = addcarryx_u32(0x0, x338, x357);
+ 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, x347, x381);
+ uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x350, x384);
+ uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x353, x387);
+ uint32_t x411, uint8_t x412 = addcarryx_u32(x409, x355, x390);
+ uint32_t x414, uint32_t _ = mulx_u32(x393, 0x286bca1b);
+ uint32_t x417, uint32_t x418 = mulx_u32(x414, 0xffffffed);
+ uint32_t x420, uint32_t x421 = mulx_u32(x414, 0xffffffff);
+ uint32_t x423, uint32_t x424 = mulx_u32(x414, 0xffffffff);
+ uint32_t x426, uint32_t x427 = mulx_u32(x414, 0xffffffff);
+ uint32_t x429, uint32_t x430 = mulx_u32(x414, 0xffffffff);
+ uint32_t x432, uint32_t x433 = mulx_u32(x414, 0x7ff);
+ uint32_t x435, uint8_t x436 = addcarryx_u32(0x0, x418, x420);
+ uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x421, x423);
+ uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
+ uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x427, x429);
+ uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x430, x432);
+ uint32_t x450, uint8_t _ = addcarryx_u32(0x0, x448, x433);
+ uint32_t _, uint8_t x454 = addcarryx_u32(0x0, x393, x417);
+ uint32_t x456, uint8_t x457 = addcarryx_u32(x454, x396, x435);
+ uint32_t x459, uint8_t x460 = addcarryx_u32(x457, x399, x438);
+ uint32_t x462, uint8_t x463 = addcarryx_u32(x460, x402, x441);
+ uint32_t x465, uint8_t x466 = addcarryx_u32(x463, x405, x444);
+ uint32_t x468, uint8_t x469 = addcarryx_u32(x466, x408, x447);
+ uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x411, x450);
+ uint8_t x473 = (x472 + x412);
+ uint32_t x475, uint32_t x476 = mulx_u32(x13, x15);
+ uint32_t x478, uint32_t x479 = mulx_u32(x13, x17);
+ uint32_t x481, uint32_t x482 = mulx_u32(x13, x19);
+ uint32_t x484, uint32_t x485 = mulx_u32(x13, x21);
+ uint32_t x487, uint32_t x488 = mulx_u32(x13, x23);
+ uint32_t x490, uint32_t x491 = mulx_u32(x13, x22);
+ uint32_t x493, uint8_t x494 = addcarryx_u32(0x0, x476, x478);
+ uint32_t x496, uint8_t x497 = addcarryx_u32(x494, x479, x481);
+ uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x482, x484);
+ uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x485, x487);
+ uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x488, x490);
+ uint32_t x508, uint8_t _ = addcarryx_u32(0x0, x506, x491);
+ uint32_t x511, uint8_t x512 = addcarryx_u32(0x0, x456, x475);
+ uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x459, x493);
+ uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x462, x496);
+ uint32_t x520, uint8_t x521 = addcarryx_u32(x518, x465, x499);
+ uint32_t x523, uint8_t x524 = addcarryx_u32(x521, x468, x502);
+ uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x471, x505);
+ uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x473, x508);
+ uint32_t x532, uint32_t _ = mulx_u32(x511, 0x286bca1b);
+ uint32_t x535, uint32_t x536 = mulx_u32(x532, 0xffffffed);
+ uint32_t x538, uint32_t x539 = mulx_u32(x532, 0xffffffff);
+ uint32_t x541, uint32_t x542 = mulx_u32(x532, 0xffffffff);
+ uint32_t x544, uint32_t x545 = mulx_u32(x532, 0xffffffff);
+ uint32_t x547, uint32_t x548 = mulx_u32(x532, 0xffffffff);
+ uint32_t x550, uint32_t x551 = mulx_u32(x532, 0x7ff);
+ uint32_t x553, uint8_t x554 = addcarryx_u32(0x0, x536, x538);
+ uint32_t x556, uint8_t x557 = addcarryx_u32(x554, x539, x541);
+ uint32_t x559, uint8_t x560 = addcarryx_u32(x557, x542, x544);
+ uint32_t x562, uint8_t x563 = addcarryx_u32(x560, x545, x547);
+ uint32_t x565, uint8_t x566 = addcarryx_u32(x563, x548, x550);
+ uint32_t x568, uint8_t _ = addcarryx_u32(0x0, x566, x551);
+ uint32_t _, uint8_t x572 = addcarryx_u32(0x0, x511, x535);
+ uint32_t x574, uint8_t x575 = addcarryx_u32(x572, x514, x553);
+ uint32_t x577, uint8_t x578 = addcarryx_u32(x575, x517, x556);
+ uint32_t x580, uint8_t x581 = addcarryx_u32(x578, x520, x559);
+ uint32_t x583, uint8_t x584 = addcarryx_u32(x581, x523, x562);
+ uint32_t x586, uint8_t x587 = addcarryx_u32(x584, x526, x565);
+ uint32_t x589, uint8_t x590 = addcarryx_u32(x587, x529, x568);
+ uint8_t x591 = (x590 + x530);
+ uint32_t x593, uint32_t x594 = mulx_u32(x12, x15);
+ uint32_t x596, uint32_t x597 = mulx_u32(x12, x17);
+ uint32_t x599, uint32_t x600 = mulx_u32(x12, x19);
+ uint32_t x602, uint32_t x603 = mulx_u32(x12, x21);
+ uint32_t x605, uint32_t x606 = mulx_u32(x12, x23);
+ uint32_t x608, uint32_t x609 = mulx_u32(x12, x22);
+ uint32_t x611, uint8_t x612 = addcarryx_u32(0x0, x594, x596);
+ uint32_t x614, uint8_t x615 = addcarryx_u32(x612, x597, x599);
+ uint32_t x617, uint8_t x618 = addcarryx_u32(x615, x600, x602);
+ uint32_t x620, uint8_t x621 = addcarryx_u32(x618, x603, x605);
+ uint32_t x623, uint8_t x624 = addcarryx_u32(x621, x606, x608);
+ uint32_t x626, uint8_t _ = addcarryx_u32(0x0, x624, x609);
+ uint32_t x629, uint8_t x630 = addcarryx_u32(0x0, x574, x593);
+ uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x577, x611);
+ uint32_t x635, uint8_t x636 = addcarryx_u32(x633, x580, x614);
+ uint32_t x638, uint8_t x639 = addcarryx_u32(x636, x583, x617);
+ uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x586, x620);
+ uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x589, x623);
+ uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x591, x626);
+ uint32_t x650, uint32_t _ = mulx_u32(x629, 0x286bca1b);
+ uint32_t x653, uint32_t x654 = mulx_u32(x650, 0xffffffed);
+ uint32_t x656, uint32_t x657 = mulx_u32(x650, 0xffffffff);
+ uint32_t x659, uint32_t x660 = mulx_u32(x650, 0xffffffff);
+ uint32_t x662, uint32_t x663 = mulx_u32(x650, 0xffffffff);
+ uint32_t x665, uint32_t x666 = mulx_u32(x650, 0xffffffff);
+ uint32_t x668, uint32_t x669 = mulx_u32(x650, 0x7ff);
+ uint32_t x671, uint8_t x672 = addcarryx_u32(0x0, x654, x656);
+ uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x657, x659);
+ uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x660, x662);
+ uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x663, x665);
+ uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x666, x668);
+ uint32_t x686, uint8_t _ = addcarryx_u32(0x0, x684, x669);
+ uint32_t _, uint8_t x690 = addcarryx_u32(0x0, x629, x653);
+ uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x632, x671);
+ uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x635, x674);
+ uint32_t x698, uint8_t x699 = addcarryx_u32(x696, x638, x677);
+ uint32_t x701, uint8_t x702 = addcarryx_u32(x699, x641, x680);
+ uint32_t x704, uint8_t x705 = addcarryx_u32(x702, x644, x683);
+ uint32_t x707, uint8_t x708 = addcarryx_u32(x705, x647, x686);
+ uint8_t x709 = (x708 + x648);
+ uint32_t x711, uint8_t x712 = subborrow_u32(0x0, x692, 0xffffffed);
+ uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0xffffffff);
+ uint32_t x717, uint8_t x718 = subborrow_u32(x715, x698, 0xffffffff);
+ uint32_t x720, uint8_t x721 = subborrow_u32(x718, x701, 0xffffffff);
+ uint32_t x723, uint8_t x724 = subborrow_u32(x721, x704, 0xffffffff);
+ uint32_t x726, uint8_t x727 = subborrow_u32(x724, x707, 0x7ff);
+ uint32_t _, uint8_t x730 = subborrow_u32(x727, x709, 0x0);
+ uint32_t x731 = cmovznz32(x730, x726, x707);
+ uint32_t x732 = cmovznz32(x730, x723, x704);
+ uint32_t x733 = cmovznz32(x730, x720, x701);
+ uint32_t x734 = cmovznz32(x730, x717, x698);
+ uint32_t x735 = cmovznz32(x730, x714, x695);
+ uint32_t x736 = cmovznz32(x730, x711, x692);
+ return (x731, x732, x733, x734, x735, x736))
+(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_2e171m19_6limbs/fenz.c b/src/Specific/montgomery32_2e171m19_6limbs/fenz.c
new file mode 100644
index 000000000..2e0454af1
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/fenz.c
@@ -0,0 +1,15 @@
+static void fenz(ReturnType uint32_t out[1], 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 x11 = (x10 | x9);
+ { uint32_t x12 = (x8 | x11);
+ { uint32_t x13 = (x6 | x12);
+ { uint32_t x14 = (x4 | x13);
+ { uint32_t x15 = (x2 | x14);
+ out[0] = x15;
+ }}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/fenzDisplay.log b/src/Specific/montgomery32_2e171m19_6limbs/fenzDisplay.log
new file mode 100644
index 000000000..616138b7b
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_6limbs/fenzDisplay.log
@@ -0,0 +1,12 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x11 = (x10 | x9);
+ uint32_t x12 = (x8 | x11);
+ uint32_t x13 = (x6 | x12);
+ uint32_t x14 = (x4 | x13);
+ uint32_t x15 = (x2 | x14);
+ return x15)
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e171m19_6limbs/feopp.c b/src/Specific/montgomery32_2e171m19_6limbs/feopp.c
new file mode 100644
index 000000000..c7d34f427
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_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 & 0xffffffed);
+ { 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 & 0xffffffff);
+ { 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 & 0x7ff);
+ { 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_2e171m19_6limbs/feoppDisplay.log b/src/Specific/montgomery32_2e171m19_6limbs/feoppDisplay.log
new file mode 100644
index 000000000..c49945ba8
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_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 & 0xffffffed);
+ 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 & 0xffffffff);
+ 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 & 0x7ff);
+ 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_2e171m19_6limbs/fesub.c b/src/Specific/montgomery32_2e171m19_6limbs/fesub.c
new file mode 100644
index 000000000..7dc4f0d26
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_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 & 0xffffffed);
+ { 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 & 0xffffffff);
+ { 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 & 0x7ff);
+ { 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_2e171m19_6limbs/fesubDisplay.log b/src/Specific/montgomery32_2e171m19_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..4f3a0717b
--- /dev/null
+++ b/src/Specific/montgomery32_2e171m19_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 & 0xffffffed);
+ 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 & 0xffffffff);
+ 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 & 0x7ff);
+ 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_2e174m17_6limbs/feadd.c b/src/Specific/montgomery32_2e174m17_6limbs/feadd.c
new file mode 100644
index 000000000..a361d09df
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/feadd.c
@@ -0,0 +1,40 @@
+static void feadd(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 = _addcarryx_u32(0x0, x5, x15, &x25);
+ { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
+ { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
+ { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
+ { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
+ { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
+ { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xffffffef, &x43);
+ { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
+ { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
+ { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
+ { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
+ { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x3fff, &x58);
+ { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
+ { uint32_t x63 = cmovznz32(x62, x58, x40);
+ { uint32_t x64 = cmovznz32(x62, x55, x37);
+ { uint32_t x65 = cmovznz32(x62, x52, x34);
+ { uint32_t x66 = cmovznz32(x62, x49, x31);
+ { uint32_t x67 = cmovznz32(x62, x46, x28);
+ { uint32_t x68 = cmovznz32(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/montgomery32_2e174m17_6limbs/feaddDisplay.log b/src/Specific/montgomery32_2e174m17_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..31e22218b
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/feaddDisplay.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 = addcarryx_u32(0x0, x5, x15);
+ uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
+ uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
+ uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
+ uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
+ uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
+ uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xffffffef);
+ uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
+ uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
+ uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
+ uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
+ uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x3fff);
+ uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
+ uint32_t x63 = cmovznz32(x62, x58, x40);
+ uint32_t x64 = cmovznz32(x62, x55, x37);
+ uint32_t x65 = cmovznz32(x62, x52, x34);
+ uint32_t x66 = cmovznz32(x62, x49, x31);
+ uint32_t x67 = cmovznz32(x62, x46, x28);
+ uint32_t x68 = cmovznz32(x62, x43, x25);
+ return (x63, x64, x65, x66, x67, x68))
+(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_2e174m17_6limbs/femul.c b/src/Specific/montgomery32_2e174m17_6limbs/femul.c
new file mode 100644
index 000000000..b24bb3ee2
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/femul.c
@@ -0,0 +1,266 @@
+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 _; uint32_t x61 = _mulx_u32(x25, 0xf0f0f0f1, &_);
+ { uint32_t x65; uint32_t x64 = _mulx_u32(x61, 0xffffffef, &x65);
+ { uint32_t x68; uint32_t x67 = _mulx_u32(x61, 0xffffffff, &x68);
+ { uint32_t x71; uint32_t x70 = _mulx_u32(x61, 0xffffffff, &x71);
+ { uint32_t x74; uint32_t x73 = _mulx_u32(x61, 0xffffffff, &x74);
+ { uint32_t x77; uint32_t x76 = _mulx_u32(x61, 0xffffffff, &x77);
+ { uint32_t x80; uint32_t x79 = _mulx_u32(x61, 0x3fff, &x80);
+ { uint32_t x82; uint8_t x83 = _addcarryx_u32(0x0, 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 x95 = _addcarryx_u32(x92, x77, x79, &x94);
+ { uint32_t x97; uint8_t _ = _addcarryx_u32(0x0, x95, x80, &x97);
+ { uint32_t _; uint8_t x101 = _addcarryx_u32(0x0, x25, x64, &_);
+ { uint32_t x103; uint8_t x104 = _addcarryx_u32(x101, x43, x82, &x103);
+ { uint32_t x106; uint8_t x107 = _addcarryx_u32(x104, x46, x85, &x106);
+ { uint32_t x109; uint8_t x110 = _addcarryx_u32(x107, x49, x88, &x109);
+ { uint32_t x112; uint8_t x113 = _addcarryx_u32(x110, x52, x91, &x112);
+ { uint32_t x115; uint8_t x116 = _addcarryx_u32(x113, x55, x94, &x115);
+ { uint32_t x118; uint8_t x119 = _addcarryx_u32(x116, x58, x97, &x118);
+ { uint32_t x122; uint32_t x121 = _mulx_u32(x7, x15, &x122);
+ { uint32_t x125; uint32_t x124 = _mulx_u32(x7, x17, &x125);
+ { uint32_t x128; uint32_t x127 = _mulx_u32(x7, x19, &x128);
+ { uint32_t x131; uint32_t x130 = _mulx_u32(x7, x21, &x131);
+ { uint32_t x134; uint32_t x133 = _mulx_u32(x7, x23, &x134);
+ { uint32_t x137; uint32_t x136 = _mulx_u32(x7, x22, &x137);
+ { uint32_t x139; uint8_t x140 = _addcarryx_u32(0x0, 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 x152 = _addcarryx_u32(x149, x134, x136, &x151);
+ { uint32_t x154; uint8_t _ = _addcarryx_u32(0x0, x152, x137, &x154);
+ { uint32_t x157; uint8_t x158 = _addcarryx_u32(0x0, x103, x121, &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, x118, x151, &x172);
+ { uint32_t x175; uint8_t x176 = _addcarryx_u32(x173, x119, x154, &x175);
+ { uint32_t _; uint32_t x178 = _mulx_u32(x157, 0xf0f0f0f1, &_);
+ { uint32_t x182; uint32_t x181 = _mulx_u32(x178, 0xffffffef, &x182);
+ { uint32_t x185; uint32_t x184 = _mulx_u32(x178, 0xffffffff, &x185);
+ { uint32_t x188; uint32_t x187 = _mulx_u32(x178, 0xffffffff, &x188);
+ { uint32_t x191; uint32_t x190 = _mulx_u32(x178, 0xffffffff, &x191);
+ { uint32_t x194; uint32_t x193 = _mulx_u32(x178, 0xffffffff, &x194);
+ { uint32_t x197; uint32_t x196 = _mulx_u32(x178, 0x3fff, &x197);
+ { uint32_t x199; uint8_t x200 = _addcarryx_u32(0x0, 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 x209 = _addcarryx_u32(x206, x191, x193, &x208);
+ { uint32_t x211; uint8_t x212 = _addcarryx_u32(x209, x194, x196, &x211);
+ { uint32_t x214; uint8_t _ = _addcarryx_u32(0x0, x212, x197, &x214);
+ { uint32_t _; uint8_t x218 = _addcarryx_u32(0x0, x157, x181, &_);
+ { uint32_t x220; uint8_t x221 = _addcarryx_u32(x218, x160, x199, &x220);
+ { uint32_t x223; uint8_t x224 = _addcarryx_u32(x221, x163, x202, &x223);
+ { uint32_t x226; uint8_t x227 = _addcarryx_u32(x224, x166, x205, &x226);
+ { uint32_t x229; uint8_t x230 = _addcarryx_u32(x227, x169, x208, &x229);
+ { uint32_t x232; uint8_t x233 = _addcarryx_u32(x230, x172, x211, &x232);
+ { uint32_t x235; uint8_t x236 = _addcarryx_u32(x233, x175, x214, &x235);
+ { uint8_t x237 = (x236 + x176);
+ { uint32_t x240; uint32_t x239 = _mulx_u32(x9, x15, &x240);
+ { uint32_t x243; uint32_t x242 = _mulx_u32(x9, x17, &x243);
+ { uint32_t x246; uint32_t x245 = _mulx_u32(x9, x19, &x246);
+ { uint32_t x249; uint32_t x248 = _mulx_u32(x9, x21, &x249);
+ { uint32_t x252; uint32_t x251 = _mulx_u32(x9, x23, &x252);
+ { uint32_t x255; uint32_t x254 = _mulx_u32(x9, x22, &x255);
+ { uint32_t x257; uint8_t x258 = _addcarryx_u32(0x0, 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 x267 = _addcarryx_u32(x264, x249, x251, &x266);
+ { uint32_t x269; uint8_t x270 = _addcarryx_u32(x267, x252, x254, &x269);
+ { uint32_t x272; uint8_t _ = _addcarryx_u32(0x0, x270, x255, &x272);
+ { uint32_t x275; uint8_t x276 = _addcarryx_u32(0x0, x220, x239, &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, x232, x266, &x287);
+ { uint32_t x290; uint8_t x291 = _addcarryx_u32(x288, x235, x269, &x290);
+ { uint32_t x293; uint8_t x294 = _addcarryx_u32(x291, x237, x272, &x293);
+ { uint32_t _; uint32_t x296 = _mulx_u32(x275, 0xf0f0f0f1, &_);
+ { uint32_t x300; uint32_t x299 = _mulx_u32(x296, 0xffffffef, &x300);
+ { uint32_t x303; uint32_t x302 = _mulx_u32(x296, 0xffffffff, &x303);
+ { uint32_t x306; uint32_t x305 = _mulx_u32(x296, 0xffffffff, &x306);
+ { uint32_t x309; uint32_t x308 = _mulx_u32(x296, 0xffffffff, &x309);
+ { uint32_t x312; uint32_t x311 = _mulx_u32(x296, 0xffffffff, &x312);
+ { uint32_t x315; uint32_t x314 = _mulx_u32(x296, 0x3fff, &x315);
+ { uint32_t x317; uint8_t x318 = _addcarryx_u32(0x0, x300, x302, &x317);
+ { uint32_t x320; uint8_t x321 = _addcarryx_u32(x318, x303, x305, &x320);
+ { uint32_t x323; uint8_t x324 = _addcarryx_u32(x321, x306, x308, &x323);
+ { uint32_t x326; uint8_t x327 = _addcarryx_u32(x324, x309, x311, &x326);
+ { uint32_t x329; uint8_t x330 = _addcarryx_u32(x327, x312, x314, &x329);
+ { uint32_t x332; uint8_t _ = _addcarryx_u32(0x0, x330, x315, &x332);
+ { uint32_t _; uint8_t x336 = _addcarryx_u32(0x0, x275, x299, &_);
+ { uint32_t x338; uint8_t x339 = _addcarryx_u32(x336, x278, x317, &x338);
+ { uint32_t x341; uint8_t x342 = _addcarryx_u32(x339, x281, x320, &x341);
+ { uint32_t x344; uint8_t x345 = _addcarryx_u32(x342, x284, x323, &x344);
+ { uint32_t x347; uint8_t x348 = _addcarryx_u32(x345, x287, x326, &x347);
+ { uint32_t x350; uint8_t x351 = _addcarryx_u32(x348, x290, x329, &x350);
+ { uint32_t x353; uint8_t x354 = _addcarryx_u32(x351, x293, x332, &x353);
+ { uint8_t x355 = (x354 + x294);
+ { uint32_t x358; uint32_t x357 = _mulx_u32(x11, x15, &x358);
+ { uint32_t x361; uint32_t x360 = _mulx_u32(x11, x17, &x361);
+ { uint32_t x364; uint32_t x363 = _mulx_u32(x11, x19, &x364);
+ { uint32_t x367; uint32_t x366 = _mulx_u32(x11, x21, &x367);
+ { uint32_t x370; uint32_t x369 = _mulx_u32(x11, x23, &x370);
+ { uint32_t x373; uint32_t x372 = _mulx_u32(x11, x22, &x373);
+ { uint32_t x375; uint8_t x376 = _addcarryx_u32(0x0, x358, x360, &x375);
+ { uint32_t x378; uint8_t x379 = _addcarryx_u32(x376, x361, x363, &x378);
+ { uint32_t x381; uint8_t x382 = _addcarryx_u32(x379, x364, x366, &x381);
+ { uint32_t x384; uint8_t x385 = _addcarryx_u32(x382, x367, x369, &x384);
+ { uint32_t x387; uint8_t x388 = _addcarryx_u32(x385, x370, x372, &x387);
+ { uint32_t x390; uint8_t _ = _addcarryx_u32(0x0, x388, x373, &x390);
+ { uint32_t x393; uint8_t x394 = _addcarryx_u32(0x0, x338, x357, &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, x347, x381, &x402);
+ { uint32_t x405; uint8_t x406 = _addcarryx_u32(x403, x350, x384, &x405);
+ { uint32_t x408; uint8_t x409 = _addcarryx_u32(x406, x353, x387, &x408);
+ { uint32_t x411; uint8_t x412 = _addcarryx_u32(x409, x355, x390, &x411);
+ { uint32_t _; uint32_t x414 = _mulx_u32(x393, 0xf0f0f0f1, &_);
+ { uint32_t x418; uint32_t x417 = _mulx_u32(x414, 0xffffffef, &x418);
+ { uint32_t x421; uint32_t x420 = _mulx_u32(x414, 0xffffffff, &x421);
+ { uint32_t x424; uint32_t x423 = _mulx_u32(x414, 0xffffffff, &x424);
+ { uint32_t x427; uint32_t x426 = _mulx_u32(x414, 0xffffffff, &x427);
+ { uint32_t x430; uint32_t x429 = _mulx_u32(x414, 0xffffffff, &x430);
+ { uint32_t x433; uint32_t x432 = _mulx_u32(x414, 0x3fff, &x433);
+ { uint32_t x435; uint8_t x436 = _addcarryx_u32(0x0, x418, x420, &x435);
+ { uint32_t x438; uint8_t x439 = _addcarryx_u32(x436, x421, x423, &x438);
+ { uint32_t x441; uint8_t x442 = _addcarryx_u32(x439, x424, x426, &x441);
+ { uint32_t x444; uint8_t x445 = _addcarryx_u32(x442, x427, x429, &x444);
+ { uint32_t x447; uint8_t x448 = _addcarryx_u32(x445, x430, x432, &x447);
+ { uint32_t x450; uint8_t _ = _addcarryx_u32(0x0, x448, x433, &x450);
+ { uint32_t _; uint8_t x454 = _addcarryx_u32(0x0, x393, x417, &_);
+ { uint32_t x456; uint8_t x457 = _addcarryx_u32(x454, x396, x435, &x456);
+ { uint32_t x459; uint8_t x460 = _addcarryx_u32(x457, x399, x438, &x459);
+ { uint32_t x462; uint8_t x463 = _addcarryx_u32(x460, x402, x441, &x462);
+ { uint32_t x465; uint8_t x466 = _addcarryx_u32(x463, x405, x444, &x465);
+ { uint32_t x468; uint8_t x469 = _addcarryx_u32(x466, x408, x447, &x468);
+ { uint32_t x471; uint8_t x472 = _addcarryx_u32(x469, x411, x450, &x471);
+ { uint8_t x473 = (x472 + x412);
+ { uint32_t x476; uint32_t x475 = _mulx_u32(x13, x15, &x476);
+ { uint32_t x479; uint32_t x478 = _mulx_u32(x13, x17, &x479);
+ { uint32_t x482; uint32_t x481 = _mulx_u32(x13, x19, &x482);
+ { uint32_t x485; uint32_t x484 = _mulx_u32(x13, x21, &x485);
+ { uint32_t x488; uint32_t x487 = _mulx_u32(x13, x23, &x488);
+ { uint32_t x491; uint32_t x490 = _mulx_u32(x13, x22, &x491);
+ { uint32_t x493; uint8_t x494 = _addcarryx_u32(0x0, x476, x478, &x493);
+ { uint32_t x496; uint8_t x497 = _addcarryx_u32(x494, x479, x481, &x496);
+ { uint32_t x499; uint8_t x500 = _addcarryx_u32(x497, x482, x484, &x499);
+ { uint32_t x502; uint8_t x503 = _addcarryx_u32(x500, x485, x487, &x502);
+ { uint32_t x505; uint8_t x506 = _addcarryx_u32(x503, x488, x490, &x505);
+ { uint32_t x508; uint8_t _ = _addcarryx_u32(0x0, x506, x491, &x508);
+ { uint32_t x511; uint8_t x512 = _addcarryx_u32(0x0, x456, x475, &x511);
+ { uint32_t x514; uint8_t x515 = _addcarryx_u32(x512, x459, x493, &x514);
+ { uint32_t x517; uint8_t x518 = _addcarryx_u32(x515, x462, x496, &x517);
+ { uint32_t x520; uint8_t x521 = _addcarryx_u32(x518, x465, x499, &x520);
+ { uint32_t x523; uint8_t x524 = _addcarryx_u32(x521, x468, x502, &x523);
+ { uint32_t x526; uint8_t x527 = _addcarryx_u32(x524, x471, x505, &x526);
+ { uint32_t x529; uint8_t x530 = _addcarryx_u32(x527, x473, x508, &x529);
+ { uint32_t _; uint32_t x532 = _mulx_u32(x511, 0xf0f0f0f1, &_);
+ { uint32_t x536; uint32_t x535 = _mulx_u32(x532, 0xffffffef, &x536);
+ { uint32_t x539; uint32_t x538 = _mulx_u32(x532, 0xffffffff, &x539);
+ { uint32_t x542; uint32_t x541 = _mulx_u32(x532, 0xffffffff, &x542);
+ { uint32_t x545; uint32_t x544 = _mulx_u32(x532, 0xffffffff, &x545);
+ { uint32_t x548; uint32_t x547 = _mulx_u32(x532, 0xffffffff, &x548);
+ { uint32_t x551; uint32_t x550 = _mulx_u32(x532, 0x3fff, &x551);
+ { uint32_t x553; uint8_t x554 = _addcarryx_u32(0x0, x536, x538, &x553);
+ { uint32_t x556; uint8_t x557 = _addcarryx_u32(x554, x539, x541, &x556);
+ { uint32_t x559; uint8_t x560 = _addcarryx_u32(x557, x542, x544, &x559);
+ { uint32_t x562; uint8_t x563 = _addcarryx_u32(x560, x545, x547, &x562);
+ { uint32_t x565; uint8_t x566 = _addcarryx_u32(x563, x548, x550, &x565);
+ { uint32_t x568; uint8_t _ = _addcarryx_u32(0x0, x566, x551, &x568);
+ { uint32_t _; uint8_t x572 = _addcarryx_u32(0x0, x511, x535, &_);
+ { uint32_t x574; uint8_t x575 = _addcarryx_u32(x572, x514, x553, &x574);
+ { uint32_t x577; uint8_t x578 = _addcarryx_u32(x575, x517, x556, &x577);
+ { uint32_t x580; uint8_t x581 = _addcarryx_u32(x578, x520, x559, &x580);
+ { uint32_t x583; uint8_t x584 = _addcarryx_u32(x581, x523, x562, &x583);
+ { uint32_t x586; uint8_t x587 = _addcarryx_u32(x584, x526, x565, &x586);
+ { uint32_t x589; uint8_t x590 = _addcarryx_u32(x587, x529, x568, &x589);
+ { uint8_t x591 = (x590 + x530);
+ { uint32_t x594; uint32_t x593 = _mulx_u32(x12, x15, &x594);
+ { uint32_t x597; uint32_t x596 = _mulx_u32(x12, x17, &x597);
+ { uint32_t x600; uint32_t x599 = _mulx_u32(x12, x19, &x600);
+ { uint32_t x603; uint32_t x602 = _mulx_u32(x12, x21, &x603);
+ { uint32_t x606; uint32_t x605 = _mulx_u32(x12, x23, &x606);
+ { uint32_t x609; uint32_t x608 = _mulx_u32(x12, x22, &x609);
+ { uint32_t x611; uint8_t x612 = _addcarryx_u32(0x0, x594, x596, &x611);
+ { uint32_t x614; uint8_t x615 = _addcarryx_u32(x612, x597, x599, &x614);
+ { uint32_t x617; uint8_t x618 = _addcarryx_u32(x615, x600, x602, &x617);
+ { uint32_t x620; uint8_t x621 = _addcarryx_u32(x618, x603, x605, &x620);
+ { uint32_t x623; uint8_t x624 = _addcarryx_u32(x621, x606, x608, &x623);
+ { uint32_t x626; uint8_t _ = _addcarryx_u32(0x0, x624, x609, &x626);
+ { uint32_t x629; uint8_t x630 = _addcarryx_u32(0x0, x574, x593, &x629);
+ { uint32_t x632; uint8_t x633 = _addcarryx_u32(x630, x577, x611, &x632);
+ { uint32_t x635; uint8_t x636 = _addcarryx_u32(x633, x580, x614, &x635);
+ { uint32_t x638; uint8_t x639 = _addcarryx_u32(x636, x583, x617, &x638);
+ { uint32_t x641; uint8_t x642 = _addcarryx_u32(x639, x586, x620, &x641);
+ { uint32_t x644; uint8_t x645 = _addcarryx_u32(x642, x589, x623, &x644);
+ { uint32_t x647; uint8_t x648 = _addcarryx_u32(x645, x591, x626, &x647);
+ { uint32_t _; uint32_t x650 = _mulx_u32(x629, 0xf0f0f0f1, &_);
+ { uint32_t x654; uint32_t x653 = _mulx_u32(x650, 0xffffffef, &x654);
+ { uint32_t x657; uint32_t x656 = _mulx_u32(x650, 0xffffffff, &x657);
+ { uint32_t x660; uint32_t x659 = _mulx_u32(x650, 0xffffffff, &x660);
+ { uint32_t x663; uint32_t x662 = _mulx_u32(x650, 0xffffffff, &x663);
+ { uint32_t x666; uint32_t x665 = _mulx_u32(x650, 0xffffffff, &x666);
+ { uint32_t x669; uint32_t x668 = _mulx_u32(x650, 0x3fff, &x669);
+ { uint32_t x671; uint8_t x672 = _addcarryx_u32(0x0, x654, x656, &x671);
+ { uint32_t x674; uint8_t x675 = _addcarryx_u32(x672, x657, x659, &x674);
+ { uint32_t x677; uint8_t x678 = _addcarryx_u32(x675, x660, x662, &x677);
+ { uint32_t x680; uint8_t x681 = _addcarryx_u32(x678, x663, x665, &x680);
+ { uint32_t x683; uint8_t x684 = _addcarryx_u32(x681, x666, x668, &x683);
+ { uint32_t x686; uint8_t _ = _addcarryx_u32(0x0, x684, x669, &x686);
+ { uint32_t _; uint8_t x690 = _addcarryx_u32(0x0, x629, x653, &_);
+ { uint32_t x692; uint8_t x693 = _addcarryx_u32(x690, x632, x671, &x692);
+ { uint32_t x695; uint8_t x696 = _addcarryx_u32(x693, x635, x674, &x695);
+ { uint32_t x698; uint8_t x699 = _addcarryx_u32(x696, x638, x677, &x698);
+ { uint32_t x701; uint8_t x702 = _addcarryx_u32(x699, x641, x680, &x701);
+ { uint32_t x704; uint8_t x705 = _addcarryx_u32(x702, x644, x683, &x704);
+ { uint32_t x707; uint8_t x708 = _addcarryx_u32(x705, x647, x686, &x707);
+ { uint8_t x709 = (x708 + x648);
+ { uint32_t x711; uint8_t x712 = _subborrow_u32(0x0, x692, 0xffffffef, &x711);
+ { uint32_t x714; uint8_t x715 = _subborrow_u32(x712, x695, 0xffffffff, &x714);
+ { uint32_t x717; uint8_t x718 = _subborrow_u32(x715, x698, 0xffffffff, &x717);
+ { uint32_t x720; uint8_t x721 = _subborrow_u32(x718, x701, 0xffffffff, &x720);
+ { uint32_t x723; uint8_t x724 = _subborrow_u32(x721, x704, 0xffffffff, &x723);
+ { uint32_t x726; uint8_t x727 = _subborrow_u32(x724, x707, 0x3fff, &x726);
+ { uint32_t _; uint8_t x730 = _subborrow_u32(x727, x709, 0x0, &_);
+ { uint32_t x731 = cmovznz32(x730, x726, x707);
+ { uint32_t x732 = cmovznz32(x730, x723, x704);
+ { uint32_t x733 = cmovznz32(x730, x720, x701);
+ { uint32_t x734 = cmovznz32(x730, x717, x698);
+ { uint32_t x735 = cmovznz32(x730, x714, x695);
+ { uint32_t x736 = cmovznz32(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/montgomery32_2e174m17_6limbs/femulDisplay.log b/src/Specific/montgomery32_2e174m17_6limbs/femulDisplay.log
new file mode 100644
index 000000000..047054f7e
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/femulDisplay.log
@@ -0,0 +1,252 @@
+λ 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 _ = mulx_u32(x25, 0xf0f0f0f1);
+ uint32_t x64, uint32_t x65 = mulx_u32(x61, 0xffffffef);
+ uint32_t x67, uint32_t x68 = mulx_u32(x61, 0xffffffff);
+ uint32_t x70, uint32_t x71 = mulx_u32(x61, 0xffffffff);
+ uint32_t x73, uint32_t x74 = mulx_u32(x61, 0xffffffff);
+ uint32_t x76, uint32_t x77 = mulx_u32(x61, 0xffffffff);
+ uint32_t x79, uint32_t x80 = mulx_u32(x61, 0x3fff);
+ uint32_t x82, uint8_t x83 = addcarryx_u32(0x0, 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 x95 = addcarryx_u32(x92, x77, x79);
+ uint32_t x97, uint8_t _ = addcarryx_u32(0x0, x95, x80);
+ uint32_t _, uint8_t x101 = addcarryx_u32(0x0, x25, x64);
+ uint32_t x103, uint8_t x104 = addcarryx_u32(x101, x43, x82);
+ uint32_t x106, uint8_t x107 = addcarryx_u32(x104, x46, x85);
+ uint32_t x109, uint8_t x110 = addcarryx_u32(x107, x49, x88);
+ uint32_t x112, uint8_t x113 = addcarryx_u32(x110, x52, x91);
+ uint32_t x115, uint8_t x116 = addcarryx_u32(x113, x55, x94);
+ uint32_t x118, uint8_t x119 = addcarryx_u32(x116, x58, x97);
+ uint32_t x121, uint32_t x122 = mulx_u32(x7, x15);
+ uint32_t x124, uint32_t x125 = mulx_u32(x7, x17);
+ uint32_t x127, uint32_t x128 = mulx_u32(x7, x19);
+ uint32_t x130, uint32_t x131 = mulx_u32(x7, x21);
+ uint32_t x133, uint32_t x134 = mulx_u32(x7, x23);
+ uint32_t x136, uint32_t x137 = mulx_u32(x7, x22);
+ uint32_t x139, uint8_t x140 = addcarryx_u32(0x0, 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 x152 = addcarryx_u32(x149, x134, x136);
+ uint32_t x154, uint8_t _ = addcarryx_u32(0x0, x152, x137);
+ uint32_t x157, uint8_t x158 = addcarryx_u32(0x0, x103, x121);
+ 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, x118, x151);
+ uint32_t x175, uint8_t x176 = addcarryx_u32(x173, x119, x154);
+ uint32_t x178, uint32_t _ = mulx_u32(x157, 0xf0f0f0f1);
+ uint32_t x181, uint32_t x182 = mulx_u32(x178, 0xffffffef);
+ uint32_t x184, uint32_t x185 = mulx_u32(x178, 0xffffffff);
+ uint32_t x187, uint32_t x188 = mulx_u32(x178, 0xffffffff);
+ uint32_t x190, uint32_t x191 = mulx_u32(x178, 0xffffffff);
+ uint32_t x193, uint32_t x194 = mulx_u32(x178, 0xffffffff);
+ uint32_t x196, uint32_t x197 = mulx_u32(x178, 0x3fff);
+ uint32_t x199, uint8_t x200 = addcarryx_u32(0x0, 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 x209 = addcarryx_u32(x206, x191, x193);
+ uint32_t x211, uint8_t x212 = addcarryx_u32(x209, x194, x196);
+ uint32_t x214, uint8_t _ = addcarryx_u32(0x0, x212, x197);
+ uint32_t _, uint8_t x218 = addcarryx_u32(0x0, x157, x181);
+ uint32_t x220, uint8_t x221 = addcarryx_u32(x218, x160, x199);
+ uint32_t x223, uint8_t x224 = addcarryx_u32(x221, x163, x202);
+ uint32_t x226, uint8_t x227 = addcarryx_u32(x224, x166, x205);
+ uint32_t x229, uint8_t x230 = addcarryx_u32(x227, x169, x208);
+ uint32_t x232, uint8_t x233 = addcarryx_u32(x230, x172, x211);
+ uint32_t x235, uint8_t x236 = addcarryx_u32(x233, x175, x214);
+ uint8_t x237 = (x236 + x176);
+ uint32_t x239, uint32_t x240 = mulx_u32(x9, x15);
+ uint32_t x242, uint32_t x243 = mulx_u32(x9, x17);
+ uint32_t x245, uint32_t x246 = mulx_u32(x9, x19);
+ uint32_t x248, uint32_t x249 = mulx_u32(x9, x21);
+ uint32_t x251, uint32_t x252 = mulx_u32(x9, x23);
+ uint32_t x254, uint32_t x255 = mulx_u32(x9, x22);
+ uint32_t x257, uint8_t x258 = addcarryx_u32(0x0, 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 x267 = addcarryx_u32(x264, x249, x251);
+ uint32_t x269, uint8_t x270 = addcarryx_u32(x267, x252, x254);
+ uint32_t x272, uint8_t _ = addcarryx_u32(0x0, x270, x255);
+ uint32_t x275, uint8_t x276 = addcarryx_u32(0x0, x220, x239);
+ 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, x232, x266);
+ uint32_t x290, uint8_t x291 = addcarryx_u32(x288, x235, x269);
+ uint32_t x293, uint8_t x294 = addcarryx_u32(x291, x237, x272);
+ uint32_t x296, uint32_t _ = mulx_u32(x275, 0xf0f0f0f1);
+ uint32_t x299, uint32_t x300 = mulx_u32(x296, 0xffffffef);
+ uint32_t x302, uint32_t x303 = mulx_u32(x296, 0xffffffff);
+ uint32_t x305, uint32_t x306 = mulx_u32(x296, 0xffffffff);
+ uint32_t x308, uint32_t x309 = mulx_u32(x296, 0xffffffff);
+ uint32_t x311, uint32_t x312 = mulx_u32(x296, 0xffffffff);
+ uint32_t x314, uint32_t x315 = mulx_u32(x296, 0x3fff);
+ uint32_t x317, uint8_t x318 = addcarryx_u32(0x0, x300, x302);
+ uint32_t x320, uint8_t x321 = addcarryx_u32(x318, x303, x305);
+ uint32_t x323, uint8_t x324 = addcarryx_u32(x321, x306, x308);
+ uint32_t x326, uint8_t x327 = addcarryx_u32(x324, x309, x311);
+ uint32_t x329, uint8_t x330 = addcarryx_u32(x327, x312, x314);
+ uint32_t x332, uint8_t _ = addcarryx_u32(0x0, x330, x315);
+ uint32_t _, uint8_t x336 = addcarryx_u32(0x0, x275, x299);
+ uint32_t x338, uint8_t x339 = addcarryx_u32(x336, x278, x317);
+ uint32_t x341, uint8_t x342 = addcarryx_u32(x339, x281, x320);
+ uint32_t x344, uint8_t x345 = addcarryx_u32(x342, x284, x323);
+ uint32_t x347, uint8_t x348 = addcarryx_u32(x345, x287, x326);
+ uint32_t x350, uint8_t x351 = addcarryx_u32(x348, x290, x329);
+ uint32_t x353, uint8_t x354 = addcarryx_u32(x351, x293, x332);
+ uint8_t x355 = (x354 + x294);
+ uint32_t x357, uint32_t x358 = mulx_u32(x11, x15);
+ uint32_t x360, uint32_t x361 = mulx_u32(x11, x17);
+ uint32_t x363, uint32_t x364 = mulx_u32(x11, x19);
+ uint32_t x366, uint32_t x367 = mulx_u32(x11, x21);
+ uint32_t x369, uint32_t x370 = mulx_u32(x11, x23);
+ uint32_t x372, uint32_t x373 = mulx_u32(x11, x22);
+ uint32_t x375, uint8_t x376 = addcarryx_u32(0x0, x358, x360);
+ uint32_t x378, uint8_t x379 = addcarryx_u32(x376, x361, x363);
+ uint32_t x381, uint8_t x382 = addcarryx_u32(x379, x364, x366);
+ uint32_t x384, uint8_t x385 = addcarryx_u32(x382, x367, x369);
+ uint32_t x387, uint8_t x388 = addcarryx_u32(x385, x370, x372);
+ uint32_t x390, uint8_t _ = addcarryx_u32(0x0, x388, x373);
+ uint32_t x393, uint8_t x394 = addcarryx_u32(0x0, x338, x357);
+ 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, x347, x381);
+ uint32_t x405, uint8_t x406 = addcarryx_u32(x403, x350, x384);
+ uint32_t x408, uint8_t x409 = addcarryx_u32(x406, x353, x387);
+ uint32_t x411, uint8_t x412 = addcarryx_u32(x409, x355, x390);
+ uint32_t x414, uint32_t _ = mulx_u32(x393, 0xf0f0f0f1);
+ uint32_t x417, uint32_t x418 = mulx_u32(x414, 0xffffffef);
+ uint32_t x420, uint32_t x421 = mulx_u32(x414, 0xffffffff);
+ uint32_t x423, uint32_t x424 = mulx_u32(x414, 0xffffffff);
+ uint32_t x426, uint32_t x427 = mulx_u32(x414, 0xffffffff);
+ uint32_t x429, uint32_t x430 = mulx_u32(x414, 0xffffffff);
+ uint32_t x432, uint32_t x433 = mulx_u32(x414, 0x3fff);
+ uint32_t x435, uint8_t x436 = addcarryx_u32(0x0, x418, x420);
+ uint32_t x438, uint8_t x439 = addcarryx_u32(x436, x421, x423);
+ uint32_t x441, uint8_t x442 = addcarryx_u32(x439, x424, x426);
+ uint32_t x444, uint8_t x445 = addcarryx_u32(x442, x427, x429);
+ uint32_t x447, uint8_t x448 = addcarryx_u32(x445, x430, x432);
+ uint32_t x450, uint8_t _ = addcarryx_u32(0x0, x448, x433);
+ uint32_t _, uint8_t x454 = addcarryx_u32(0x0, x393, x417);
+ uint32_t x456, uint8_t x457 = addcarryx_u32(x454, x396, x435);
+ uint32_t x459, uint8_t x460 = addcarryx_u32(x457, x399, x438);
+ uint32_t x462, uint8_t x463 = addcarryx_u32(x460, x402, x441);
+ uint32_t x465, uint8_t x466 = addcarryx_u32(x463, x405, x444);
+ uint32_t x468, uint8_t x469 = addcarryx_u32(x466, x408, x447);
+ uint32_t x471, uint8_t x472 = addcarryx_u32(x469, x411, x450);
+ uint8_t x473 = (x472 + x412);
+ uint32_t x475, uint32_t x476 = mulx_u32(x13, x15);
+ uint32_t x478, uint32_t x479 = mulx_u32(x13, x17);
+ uint32_t x481, uint32_t x482 = mulx_u32(x13, x19);
+ uint32_t x484, uint32_t x485 = mulx_u32(x13, x21);
+ uint32_t x487, uint32_t x488 = mulx_u32(x13, x23);
+ uint32_t x490, uint32_t x491 = mulx_u32(x13, x22);
+ uint32_t x493, uint8_t x494 = addcarryx_u32(0x0, x476, x478);
+ uint32_t x496, uint8_t x497 = addcarryx_u32(x494, x479, x481);
+ uint32_t x499, uint8_t x500 = addcarryx_u32(x497, x482, x484);
+ uint32_t x502, uint8_t x503 = addcarryx_u32(x500, x485, x487);
+ uint32_t x505, uint8_t x506 = addcarryx_u32(x503, x488, x490);
+ uint32_t x508, uint8_t _ = addcarryx_u32(0x0, x506, x491);
+ uint32_t x511, uint8_t x512 = addcarryx_u32(0x0, x456, x475);
+ uint32_t x514, uint8_t x515 = addcarryx_u32(x512, x459, x493);
+ uint32_t x517, uint8_t x518 = addcarryx_u32(x515, x462, x496);
+ uint32_t x520, uint8_t x521 = addcarryx_u32(x518, x465, x499);
+ uint32_t x523, uint8_t x524 = addcarryx_u32(x521, x468, x502);
+ uint32_t x526, uint8_t x527 = addcarryx_u32(x524, x471, x505);
+ uint32_t x529, uint8_t x530 = addcarryx_u32(x527, x473, x508);
+ uint32_t x532, uint32_t _ = mulx_u32(x511, 0xf0f0f0f1);
+ uint32_t x535, uint32_t x536 = mulx_u32(x532, 0xffffffef);
+ uint32_t x538, uint32_t x539 = mulx_u32(x532, 0xffffffff);
+ uint32_t x541, uint32_t x542 = mulx_u32(x532, 0xffffffff);
+ uint32_t x544, uint32_t x545 = mulx_u32(x532, 0xffffffff);
+ uint32_t x547, uint32_t x548 = mulx_u32(x532, 0xffffffff);
+ uint32_t x550, uint32_t x551 = mulx_u32(x532, 0x3fff);
+ uint32_t x553, uint8_t x554 = addcarryx_u32(0x0, x536, x538);
+ uint32_t x556, uint8_t x557 = addcarryx_u32(x554, x539, x541);
+ uint32_t x559, uint8_t x560 = addcarryx_u32(x557, x542, x544);
+ uint32_t x562, uint8_t x563 = addcarryx_u32(x560, x545, x547);
+ uint32_t x565, uint8_t x566 = addcarryx_u32(x563, x548, x550);
+ uint32_t x568, uint8_t _ = addcarryx_u32(0x0, x566, x551);
+ uint32_t _, uint8_t x572 = addcarryx_u32(0x0, x511, x535);
+ uint32_t x574, uint8_t x575 = addcarryx_u32(x572, x514, x553);
+ uint32_t x577, uint8_t x578 = addcarryx_u32(x575, x517, x556);
+ uint32_t x580, uint8_t x581 = addcarryx_u32(x578, x520, x559);
+ uint32_t x583, uint8_t x584 = addcarryx_u32(x581, x523, x562);
+ uint32_t x586, uint8_t x587 = addcarryx_u32(x584, x526, x565);
+ uint32_t x589, uint8_t x590 = addcarryx_u32(x587, x529, x568);
+ uint8_t x591 = (x590 + x530);
+ uint32_t x593, uint32_t x594 = mulx_u32(x12, x15);
+ uint32_t x596, uint32_t x597 = mulx_u32(x12, x17);
+ uint32_t x599, uint32_t x600 = mulx_u32(x12, x19);
+ uint32_t x602, uint32_t x603 = mulx_u32(x12, x21);
+ uint32_t x605, uint32_t x606 = mulx_u32(x12, x23);
+ uint32_t x608, uint32_t x609 = mulx_u32(x12, x22);
+ uint32_t x611, uint8_t x612 = addcarryx_u32(0x0, x594, x596);
+ uint32_t x614, uint8_t x615 = addcarryx_u32(x612, x597, x599);
+ uint32_t x617, uint8_t x618 = addcarryx_u32(x615, x600, x602);
+ uint32_t x620, uint8_t x621 = addcarryx_u32(x618, x603, x605);
+ uint32_t x623, uint8_t x624 = addcarryx_u32(x621, x606, x608);
+ uint32_t x626, uint8_t _ = addcarryx_u32(0x0, x624, x609);
+ uint32_t x629, uint8_t x630 = addcarryx_u32(0x0, x574, x593);
+ uint32_t x632, uint8_t x633 = addcarryx_u32(x630, x577, x611);
+ uint32_t x635, uint8_t x636 = addcarryx_u32(x633, x580, x614);
+ uint32_t x638, uint8_t x639 = addcarryx_u32(x636, x583, x617);
+ uint32_t x641, uint8_t x642 = addcarryx_u32(x639, x586, x620);
+ uint32_t x644, uint8_t x645 = addcarryx_u32(x642, x589, x623);
+ uint32_t x647, uint8_t x648 = addcarryx_u32(x645, x591, x626);
+ uint32_t x650, uint32_t _ = mulx_u32(x629, 0xf0f0f0f1);
+ uint32_t x653, uint32_t x654 = mulx_u32(x650, 0xffffffef);
+ uint32_t x656, uint32_t x657 = mulx_u32(x650, 0xffffffff);
+ uint32_t x659, uint32_t x660 = mulx_u32(x650, 0xffffffff);
+ uint32_t x662, uint32_t x663 = mulx_u32(x650, 0xffffffff);
+ uint32_t x665, uint32_t x666 = mulx_u32(x650, 0xffffffff);
+ uint32_t x668, uint32_t x669 = mulx_u32(x650, 0x3fff);
+ uint32_t x671, uint8_t x672 = addcarryx_u32(0x0, x654, x656);
+ uint32_t x674, uint8_t x675 = addcarryx_u32(x672, x657, x659);
+ uint32_t x677, uint8_t x678 = addcarryx_u32(x675, x660, x662);
+ uint32_t x680, uint8_t x681 = addcarryx_u32(x678, x663, x665);
+ uint32_t x683, uint8_t x684 = addcarryx_u32(x681, x666, x668);
+ uint32_t x686, uint8_t _ = addcarryx_u32(0x0, x684, x669);
+ uint32_t _, uint8_t x690 = addcarryx_u32(0x0, x629, x653);
+ uint32_t x692, uint8_t x693 = addcarryx_u32(x690, x632, x671);
+ uint32_t x695, uint8_t x696 = addcarryx_u32(x693, x635, x674);
+ uint32_t x698, uint8_t x699 = addcarryx_u32(x696, x638, x677);
+ uint32_t x701, uint8_t x702 = addcarryx_u32(x699, x641, x680);
+ uint32_t x704, uint8_t x705 = addcarryx_u32(x702, x644, x683);
+ uint32_t x707, uint8_t x708 = addcarryx_u32(x705, x647, x686);
+ uint8_t x709 = (x708 + x648);
+ uint32_t x711, uint8_t x712 = subborrow_u32(0x0, x692, 0xffffffef);
+ uint32_t x714, uint8_t x715 = subborrow_u32(x712, x695, 0xffffffff);
+ uint32_t x717, uint8_t x718 = subborrow_u32(x715, x698, 0xffffffff);
+ uint32_t x720, uint8_t x721 = subborrow_u32(x718, x701, 0xffffffff);
+ uint32_t x723, uint8_t x724 = subborrow_u32(x721, x704, 0xffffffff);
+ uint32_t x726, uint8_t x727 = subborrow_u32(x724, x707, 0x3fff);
+ uint32_t _, uint8_t x730 = subborrow_u32(x727, x709, 0x0);
+ uint32_t x731 = cmovznz32(x730, x726, x707);
+ uint32_t x732 = cmovznz32(x730, x723, x704);
+ uint32_t x733 = cmovznz32(x730, x720, x701);
+ uint32_t x734 = cmovznz32(x730, x717, x698);
+ uint32_t x735 = cmovznz32(x730, x714, x695);
+ uint32_t x736 = cmovznz32(x730, x711, x692);
+ return (x731, x732, x733, x734, x735, x736))
+(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_2e174m17_6limbs/fenz.c b/src/Specific/montgomery32_2e174m17_6limbs/fenz.c
new file mode 100644
index 000000000..2e0454af1
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/fenz.c
@@ -0,0 +1,15 @@
+static void fenz(ReturnType uint32_t out[1], 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 x11 = (x10 | x9);
+ { uint32_t x12 = (x8 | x11);
+ { uint32_t x13 = (x6 | x12);
+ { uint32_t x14 = (x4 | x13);
+ { uint32_t x15 = (x2 | x14);
+ out[0] = x15;
+ }}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/fenzDisplay.log b/src/Specific/montgomery32_2e174m17_6limbs/fenzDisplay.log
new file mode 100644
index 000000000..616138b7b
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_6limbs/fenzDisplay.log
@@ -0,0 +1,12 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x11 = (x10 | x9);
+ uint32_t x12 = (x8 | x11);
+ uint32_t x13 = (x6 | x12);
+ uint32_t x14 = (x4 | x13);
+ uint32_t x15 = (x2 | x14);
+ return x15)
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e174m17_6limbs/feopp.c b/src/Specific/montgomery32_2e174m17_6limbs/feopp.c
new file mode 100644
index 000000000..65336f912
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_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 & 0xffffffef);
+ { 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 & 0xffffffff);
+ { 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 & 0x3fff);
+ { 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_2e174m17_6limbs/feoppDisplay.log b/src/Specific/montgomery32_2e174m17_6limbs/feoppDisplay.log
new file mode 100644
index 000000000..189315f28
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_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 & 0xffffffef);
+ 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 & 0xffffffff);
+ 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 & 0x3fff);
+ 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_2e174m17_6limbs/fesub.c b/src/Specific/montgomery32_2e174m17_6limbs/fesub.c
new file mode 100644
index 000000000..e66d18339
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_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 & 0xffffffef);
+ { 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 & 0xffffffff);
+ { 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 & 0x3fff);
+ { 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_2e174m17_6limbs/fesubDisplay.log b/src/Specific/montgomery32_2e174m17_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..d5763203a
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m17_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 & 0xffffffef);
+ 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 & 0xffffffff);
+ 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 & 0x3fff);
+ 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_2e174m3_6limbs/feadd.c b/src/Specific/montgomery32_2e174m3_6limbs/feadd.c
new file mode 100644
index 000000000..e6f12dcab
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/feadd.c
@@ -0,0 +1,40 @@
+static void feadd(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 = _addcarryx_u32(0x0, x5, x15, &x25);
+ { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
+ { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
+ { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
+ { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
+ { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
+ { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xfffffffd, &x43);
+ { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
+ { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
+ { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
+ { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
+ { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x3fff, &x58);
+ { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
+ { uint32_t x63 = cmovznz32(x62, x58, x40);
+ { uint32_t x64 = cmovznz32(x62, x55, x37);
+ { uint32_t x65 = cmovznz32(x62, x52, x34);
+ { uint32_t x66 = cmovznz32(x62, x49, x31);
+ { uint32_t x67 = cmovznz32(x62, x46, x28);
+ { uint32_t x68 = cmovznz32(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/montgomery32_2e174m3_6limbs/feaddDisplay.log b/src/Specific/montgomery32_2e174m3_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e0691d08d
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/feaddDisplay.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 = addcarryx_u32(0x0, x5, x15);
+ uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
+ uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
+ uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
+ uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
+ uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
+ uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xfffffffd);
+ uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
+ uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
+ uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
+ uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
+ uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x3fff);
+ uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
+ uint32_t x63 = cmovznz32(x62, x58, x40);
+ uint32_t x64 = cmovznz32(x62, x55, x37);
+ uint32_t x65 = cmovznz32(x62, x52, x34);
+ uint32_t x66 = cmovznz32(x62, x49, x31);
+ uint32_t x67 = cmovznz32(x62, x46, x28);
+ uint32_t x68 = cmovznz32(x62, x43, x25);
+ return (x63, x64, x65, x66, x67, x68))
+(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_2e174m3_6limbs/fenz.c b/src/Specific/montgomery32_2e174m3_6limbs/fenz.c
new file mode 100644
index 000000000..2e0454af1
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/fenz.c
@@ -0,0 +1,15 @@
+static void fenz(ReturnType uint32_t out[1], 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 x11 = (x10 | x9);
+ { uint32_t x12 = (x8 | x11);
+ { uint32_t x13 = (x6 | x12);
+ { uint32_t x14 = (x4 | x13);
+ { uint32_t x15 = (x2 | x14);
+ out[0] = x15;
+ }}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/fenzDisplay.log b/src/Specific/montgomery32_2e174m3_6limbs/fenzDisplay.log
new file mode 100644
index 000000000..616138b7b
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_6limbs/fenzDisplay.log
@@ -0,0 +1,12 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x11 = (x10 | x9);
+ uint32_t x12 = (x8 | x11);
+ uint32_t x13 = (x6 | x12);
+ uint32_t x14 = (x4 | x13);
+ uint32_t x15 = (x2 | x14);
+ return x15)
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e174m3_6limbs/feopp.c b/src/Specific/montgomery32_2e174m3_6limbs/feopp.c
new file mode 100644
index 000000000..f163e0729
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_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 & 0xfffffffd);
+ { 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 & 0xffffffff);
+ { 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 & 0x3fff);
+ { 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_2e174m3_6limbs/feoppDisplay.log b/src/Specific/montgomery32_2e174m3_6limbs/feoppDisplay.log
new file mode 100644
index 000000000..1f234f789
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_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 & 0xfffffffd);
+ 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 & 0xffffffff);
+ 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 & 0x3fff);
+ 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_2e174m3_6limbs/fesub.c b/src/Specific/montgomery32_2e174m3_6limbs/fesub.c
new file mode 100644
index 000000000..01db95d89
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_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 & 0xfffffffd);
+ { 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 & 0xffffffff);
+ { 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 & 0x3fff);
+ { 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_2e174m3_6limbs/fesubDisplay.log b/src/Specific/montgomery32_2e174m3_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..7efb22e98
--- /dev/null
+++ b/src/Specific/montgomery32_2e174m3_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 & 0xfffffffd);
+ 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 & 0xffffffff);
+ 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 & 0x3fff);
+ 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_2e189m25_6limbs/feadd.c b/src/Specific/montgomery32_2e189m25_6limbs/feadd.c
new file mode 100644
index 000000000..7bc1da67f
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/feadd.c
@@ -0,0 +1,40 @@
+static void feadd(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 = _addcarryx_u32(0x0, x5, x15, &x25);
+ { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
+ { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
+ { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
+ { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
+ { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
+ { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xffffffe7, &x43);
+ { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
+ { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
+ { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
+ { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
+ { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x1fffffff, &x58);
+ { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
+ { uint32_t x63 = cmovznz32(x62, x58, x40);
+ { uint32_t x64 = cmovznz32(x62, x55, x37);
+ { uint32_t x65 = cmovznz32(x62, x52, x34);
+ { uint32_t x66 = cmovznz32(x62, x49, x31);
+ { uint32_t x67 = cmovznz32(x62, x46, x28);
+ { uint32_t x68 = cmovznz32(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/montgomery32_2e189m25_6limbs/feaddDisplay.log b/src/Specific/montgomery32_2e189m25_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..4a1bcdf23
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/feaddDisplay.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 = addcarryx_u32(0x0, x5, x15);
+ uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
+ uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
+ uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
+ uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
+ uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
+ uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xffffffe7);
+ uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
+ uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
+ uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
+ uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
+ uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x1fffffff);
+ uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
+ uint32_t x63 = cmovznz32(x62, x58, x40);
+ uint32_t x64 = cmovznz32(x62, x55, x37);
+ uint32_t x65 = cmovznz32(x62, x52, x34);
+ uint32_t x66 = cmovznz32(x62, x49, x31);
+ uint32_t x67 = cmovznz32(x62, x46, x28);
+ uint32_t x68 = cmovznz32(x62, x43, x25);
+ return (x63, x64, x65, x66, x67, x68))
+(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_2e189m25_6limbs/fenz.c b/src/Specific/montgomery32_2e189m25_6limbs/fenz.c
new file mode 100644
index 000000000..2e0454af1
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/fenz.c
@@ -0,0 +1,15 @@
+static void fenz(ReturnType uint32_t out[1], 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 x11 = (x10 | x9);
+ { uint32_t x12 = (x8 | x11);
+ { uint32_t x13 = (x6 | x12);
+ { uint32_t x14 = (x4 | x13);
+ { uint32_t x15 = (x2 | x14);
+ out[0] = x15;
+ }}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/fenzDisplay.log b/src/Specific/montgomery32_2e189m25_6limbs/fenzDisplay.log
new file mode 100644
index 000000000..616138b7b
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_6limbs/fenzDisplay.log
@@ -0,0 +1,12 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x11 = (x10 | x9);
+ uint32_t x12 = (x8 | x11);
+ uint32_t x13 = (x6 | x12);
+ uint32_t x14 = (x4 | x13);
+ uint32_t x15 = (x2 | x14);
+ return x15)
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e189m25_6limbs/feopp.c b/src/Specific/montgomery32_2e189m25_6limbs/feopp.c
new file mode 100644
index 000000000..53268a96c
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_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 & 0xffffffe7);
+ { 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 & 0xffffffff);
+ { 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 & 0x1fffffff);
+ { 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_2e189m25_6limbs/feoppDisplay.log b/src/Specific/montgomery32_2e189m25_6limbs/feoppDisplay.log
new file mode 100644
index 000000000..619df7d75
--- /dev/null
+++ b/src/Specific/montgomery32_2e189m25_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 & 0xffffffe7);
+ 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 & 0xffffffff);
+ 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 & 0x1fffffff);
+ 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_2e190m11_6limbs/feadd.c b/src/Specific/montgomery32_2e190m11_6limbs/feadd.c
new file mode 100644
index 000000000..411144107
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/feadd.c
@@ -0,0 +1,40 @@
+static void feadd(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 = _addcarryx_u32(0x0, x5, x15, &x25);
+ { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
+ { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
+ { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
+ { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
+ { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
+ { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xfffffff5, &x43);
+ { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
+ { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
+ { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
+ { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
+ { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x3fffffff, &x58);
+ { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
+ { uint32_t x63 = cmovznz32(x62, x58, x40);
+ { uint32_t x64 = cmovznz32(x62, x55, x37);
+ { uint32_t x65 = cmovznz32(x62, x52, x34);
+ { uint32_t x66 = cmovznz32(x62, x49, x31);
+ { uint32_t x67 = cmovznz32(x62, x46, x28);
+ { uint32_t x68 = cmovznz32(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/montgomery32_2e190m11_6limbs/feaddDisplay.log b/src/Specific/montgomery32_2e190m11_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..3b885fe29
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/feaddDisplay.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 = addcarryx_u32(0x0, x5, x15);
+ uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
+ uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
+ uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
+ uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
+ uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
+ uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xfffffff5);
+ uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
+ uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
+ uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
+ uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
+ uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x3fffffff);
+ uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
+ uint32_t x63 = cmovznz32(x62, x58, x40);
+ uint32_t x64 = cmovznz32(x62, x55, x37);
+ uint32_t x65 = cmovznz32(x62, x52, x34);
+ uint32_t x66 = cmovznz32(x62, x49, x31);
+ uint32_t x67 = cmovznz32(x62, x46, x28);
+ uint32_t x68 = cmovznz32(x62, x43, x25);
+ return (x63, x64, x65, x66, x67, x68))
+(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_2e190m11_6limbs/fenz.c b/src/Specific/montgomery32_2e190m11_6limbs/fenz.c
new file mode 100644
index 000000000..2e0454af1
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/fenz.c
@@ -0,0 +1,15 @@
+static void fenz(ReturnType uint32_t out[1], 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 x11 = (x10 | x9);
+ { uint32_t x12 = (x8 | x11);
+ { uint32_t x13 = (x6 | x12);
+ { uint32_t x14 = (x4 | x13);
+ { uint32_t x15 = (x2 | x14);
+ out[0] = x15;
+ }}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e190m11_6limbs/fenzDisplay.log b/src/Specific/montgomery32_2e190m11_6limbs/fenzDisplay.log
new file mode 100644
index 000000000..616138b7b
--- /dev/null
+++ b/src/Specific/montgomery32_2e190m11_6limbs/fenzDisplay.log
@@ -0,0 +1,12 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x11 = (x10 | x9);
+ uint32_t x12 = (x8 | x11);
+ uint32_t x13 = (x6 | x12);
+ uint32_t x14 = (x4 | x13);
+ uint32_t x15 = (x2 | x14);
+ return x15)
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/solinas32_2e495m31_21limbs/femul.c b/src/Specific/solinas32_2e495m31_21limbs/femul.c
new file mode 100644
index 000000000..6485af339
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/femul.c
@@ -0,0 +1,155 @@
+static void femul(uint32_t out[21], const uint32_t in1[21], const uint32_t in2[21]) {
+ { const uint32_t x42 = in1[20];
+ { const uint32_t x43 = in1[19];
+ { const uint32_t x41 = in1[18];
+ { const uint32_t x39 = in1[17];
+ { const uint32_t x37 = in1[16];
+ { const uint32_t x35 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = 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 x82 = in2[20];
+ { const uint32_t x83 = in2[19];
+ { const uint32_t x81 = in2[18];
+ { const uint32_t x79 = in2[17];
+ { const uint32_t x77 = in2[16];
+ { const uint32_t x75 = in2[15];
+ { const uint32_t x73 = in2[14];
+ { const uint32_t x71 = in2[13];
+ { const uint32_t x69 = in2[12];
+ { const uint32_t x67 = in2[11];
+ { const uint32_t x65 = in2[10];
+ { const uint32_t x63 = in2[9];
+ { const uint32_t x61 = in2[8];
+ { const uint32_t x59 = in2[7];
+ { const uint32_t x57 = in2[6];
+ { const uint32_t x55 = in2[5];
+ { const uint32_t x53 = in2[4];
+ { const uint32_t x51 = in2[3];
+ { const uint32_t x49 = in2[2];
+ { const uint32_t x47 = in2[1];
+ { const uint32_t x45 = in2[0];
+ { uint64_t x84 = (((uint64_t)x5 * x82) + (((uint64_t)x7 * x83) + ((0x2 * ((uint64_t)x9 * x81)) + (((uint64_t)x11 * x79) + ((0x2 * ((uint64_t)x13 * x77)) + (((uint64_t)x15 * x75) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + ((0x2 * ((uint64_t)x23 * x67)) + (((uint64_t)x25 * x65) + ((0x2 * ((uint64_t)x27 * x63)) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + ((0x2 * ((uint64_t)x37 * x53)) + (((uint64_t)x39 * x51) + ((0x2 * ((uint64_t)x41 * x49)) + (((uint64_t)x43 * x47) + ((uint64_t)x42 * x45)))))))))))))))))))));
+ { uint64_t x85 = ((((uint64_t)x5 * x83) + ((0x2 * ((uint64_t)x7 * x81)) + ((0x2 * ((uint64_t)x9 * x79)) + ((0x2 * ((uint64_t)x11 * x77)) + ((0x2 * ((uint64_t)x13 * x75)) + (((uint64_t)x15 * x73) + ((0x2 * ((uint64_t)x17 * x71)) + (((uint64_t)x19 * x69) + ((0x2 * ((uint64_t)x21 * x67)) + ((0x2 * ((uint64_t)x23 * x65)) + ((0x2 * ((uint64_t)x25 * x63)) + ((0x2 * ((uint64_t)x27 * x61)) + (((uint64_t)x29 * x59) + ((0x2 * ((uint64_t)x31 * x57)) + (((uint64_t)x33 * x55) + ((0x2 * ((uint64_t)x35 * x53)) + ((0x2 * ((uint64_t)x37 * x51)) + ((0x2 * ((uint64_t)x39 * x49)) + ((0x2 * ((uint64_t)x41 * x47)) + ((uint64_t)x43 * x45)))))))))))))))))))) + (0x1f * (0x2 * ((uint64_t)x42 * x82))));
+ { uint64_t x86 = ((((uint64_t)x5 * x81) + (((uint64_t)x7 * x79) + ((0x2 * ((uint64_t)x9 * x77)) + (((uint64_t)x11 * x75) + (((uint64_t)x13 * x73) + (((uint64_t)x15 * x71) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + (((uint64_t)x21 * x65) + ((0x2 * ((uint64_t)x23 * x63)) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + ((0x2 * ((uint64_t)x37 * x49)) + (((uint64_t)x39 * x47) + ((uint64_t)x41 * x45))))))))))))))))))) + (0x1f * (((uint64_t)x43 * x82) + ((uint64_t)x42 * x83))));
+ { uint64_t x87 = ((((uint64_t)x5 * x79) + ((0x2 * ((uint64_t)x7 * x77)) + ((0x2 * ((uint64_t)x9 * x75)) + (((uint64_t)x11 * x73) + ((0x2 * ((uint64_t)x13 * x71)) + (((uint64_t)x15 * x69) + ((0x2 * ((uint64_t)x17 * x67)) + (((uint64_t)x19 * x65) + ((0x2 * ((uint64_t)x21 * x63)) + ((0x2 * ((uint64_t)x23 * x61)) + (((uint64_t)x25 * x59) + ((0x2 * ((uint64_t)x27 * x57)) + (((uint64_t)x29 * x55) + ((0x2 * ((uint64_t)x31 * x53)) + (((uint64_t)x33 * x51) + ((0x2 * ((uint64_t)x35 * x49)) + ((0x2 * ((uint64_t)x37 * x47)) + ((uint64_t)x39 * x45)))))))))))))))))) + (0x1f * ((0x2 * ((uint64_t)x41 * x82)) + (((uint64_t)x43 * x83) + (0x2 * ((uint64_t)x42 * x81))))));
+ { uint64_t x88 = ((((uint64_t)x5 * x77) + (((uint64_t)x7 * x75) + (((uint64_t)x9 * x73) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + (((uint64_t)x17 * x65) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + ((uint64_t)x37 * x45))))))))))))))))) + (0x1f * (((uint64_t)x39 * x82) + (((uint64_t)x41 * x83) + (((uint64_t)x43 * x81) + ((uint64_t)x42 * x79))))));
+ { uint64_t x89 = ((((uint64_t)x5 * x75) + (((uint64_t)x7 * x73) + ((0x2 * ((uint64_t)x9 * x71)) + (((uint64_t)x11 * x69) + ((0x2 * ((uint64_t)x13 * x67)) + (((uint64_t)x15 * x65) + ((0x2 * ((uint64_t)x17 * x63)) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + ((0x2 * ((uint64_t)x23 * x57)) + (((uint64_t)x25 * x55) + ((0x2 * ((uint64_t)x27 * x53)) + (((uint64_t)x29 * x51) + ((0x2 * ((uint64_t)x31 * x49)) + (((uint64_t)x33 * x47) + ((uint64_t)x35 * x45)))))))))))))))) + (0x1f * ((0x2 * ((uint64_t)x37 * x82)) + (((uint64_t)x39 * x83) + ((0x2 * ((uint64_t)x41 * x81)) + (((uint64_t)x43 * x79) + (0x2 * ((uint64_t)x42 * x77))))))));
+ { uint64_t x90 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + (((uint64_t)x19 * x59) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((uint64_t)x33 * x45))))))))))))))) + (0x1f * ((0x2 * ((uint64_t)x35 * x82)) + ((0x2 * ((uint64_t)x37 * x83)) + ((0x2 * ((uint64_t)x39 * x81)) + ((0x2 * ((uint64_t)x41 * x79)) + ((0x2 * ((uint64_t)x43 * x77)) + (0x2 * ((uint64_t)x42 * x75)))))))));
+ { uint64_t x91 = ((((uint64_t)x5 * x71) + (((uint64_t)x7 * x69) + ((0x2 * ((uint64_t)x9 * x67)) + (((uint64_t)x11 * x65) + ((0x2 * ((uint64_t)x13 * x63)) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + ((0x2 * ((uint64_t)x23 * x53)) + (((uint64_t)x25 * x51) + ((0x2 * ((uint64_t)x27 * x49)) + (((uint64_t)x29 * x47) + ((uint64_t)x31 * x45)))))))))))))) + (0x1f * (((uint64_t)x33 * x82) + (((uint64_t)x35 * x83) + ((0x2 * ((uint64_t)x37 * x81)) + (((uint64_t)x39 * x79) + ((0x2 * ((uint64_t)x41 * x77)) + (((uint64_t)x43 * x75) + ((uint64_t)x42 * x73)))))))));
+ { uint64_t x92 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + ((0x2 * ((uint64_t)x11 * x63)) + ((0x2 * ((uint64_t)x13 * x61)) + (((uint64_t)x15 * x59) + ((0x2 * ((uint64_t)x17 * x57)) + (((uint64_t)x19 * x55) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + ((uint64_t)x29 * x45))))))))))))) + (0x1f * ((0x2 * ((uint64_t)x31 * x82)) + (((uint64_t)x33 * x83) + ((0x2 * ((uint64_t)x35 * x81)) + ((0x2 * ((uint64_t)x37 * x79)) + ((0x2 * ((uint64_t)x39 * x77)) + ((0x2 * ((uint64_t)x41 * x75)) + (((uint64_t)x43 * x73) + (0x2 * ((uint64_t)x42 * x71)))))))))));
+ { uint64_t x93 = ((((uint64_t)x5 * x67) + (((uint64_t)x7 * x65) + ((0x2 * ((uint64_t)x9 * x63)) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + ((0x2 * ((uint64_t)x23 * x49)) + (((uint64_t)x25 * x47) + ((uint64_t)x27 * x45)))))))))))) + (0x1f * (((uint64_t)x29 * x82) + (((uint64_t)x31 * x83) + (((uint64_t)x33 * x81) + (((uint64_t)x35 * x79) + ((0x2 * ((uint64_t)x37 * x77)) + (((uint64_t)x39 * x75) + (((uint64_t)x41 * x73) + (((uint64_t)x43 * x71) + ((uint64_t)x42 * x69)))))))))));
+ { uint64_t x94 = ((((uint64_t)x5 * x65) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + (((uint64_t)x11 * x59) + ((0x2 * ((uint64_t)x13 * x57)) + (((uint64_t)x15 * x55) + ((0x2 * ((uint64_t)x17 * x53)) + (((uint64_t)x19 * x51) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((uint64_t)x25 * x45))))))))))) + (0x1f * ((0x2 * ((uint64_t)x27 * x82)) + (((uint64_t)x29 * x83) + ((0x2 * ((uint64_t)x31 * x81)) + (((uint64_t)x33 * x79) + ((0x2 * ((uint64_t)x35 * x77)) + ((0x2 * ((uint64_t)x37 * x75)) + (((uint64_t)x39 * x73) + ((0x2 * ((uint64_t)x41 * x71)) + (((uint64_t)x43 * x69) + (0x2 * ((uint64_t)x42 * x67)))))))))))));
+ { uint64_t x95 = ((((uint64_t)x5 * x63) + (((uint64_t)x7 * x61) + (((uint64_t)x9 * x59) + (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + ((uint64_t)x23 * x45)))))))))) + (0x1f * (((uint64_t)x25 * x82) + (((uint64_t)x27 * x83) + (((uint64_t)x29 * x81) + (((uint64_t)x31 * x79) + (((uint64_t)x33 * x77) + (((uint64_t)x35 * x75) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + (((uint64_t)x41 * x69) + (((uint64_t)x43 * x67) + ((uint64_t)x42 * x65)))))))))))));
+ { uint64_t x96 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + ((0x2 * ((uint64_t)x9 * x57)) + (((uint64_t)x11 * x55) + ((0x2 * ((uint64_t)x13 * x53)) + (((uint64_t)x15 * x51) + ((0x2 * ((uint64_t)x17 * x49)) + (((uint64_t)x19 * x47) + ((uint64_t)x21 * x45))))))))) + (0x1f * ((0x2 * ((uint64_t)x23 * x82)) + (((uint64_t)x25 * x83) + ((0x2 * ((uint64_t)x27 * x81)) + (((uint64_t)x29 * x79) + ((0x2 * ((uint64_t)x31 * x77)) + (((uint64_t)x33 * x75) + (((uint64_t)x35 * x73) + ((0x2 * ((uint64_t)x37 * x71)) + (((uint64_t)x39 * x69) + ((0x2 * ((uint64_t)x41 * x67)) + (((uint64_t)x43 * x65) + (0x2 * ((uint64_t)x42 * x63)))))))))))))));
+ { uint64_t x97 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((uint64_t)x19 * x45)))))))) + (0x1f * ((0x2 * ((uint64_t)x21 * x82)) + ((0x2 * ((uint64_t)x23 * x83)) + ((0x2 * ((uint64_t)x25 * x81)) + ((0x2 * ((uint64_t)x27 * x79)) + ((0x2 * ((uint64_t)x29 * x77)) + ((0x2 * ((uint64_t)x31 * x75)) + (((uint64_t)x33 * x73) + ((0x2 * ((uint64_t)x35 * x71)) + ((0x2 * ((uint64_t)x37 * x69)) + ((0x2 * ((uint64_t)x39 * x67)) + ((0x2 * ((uint64_t)x41 * x65)) + ((0x2 * ((uint64_t)x43 * x63)) + (0x2 * ((uint64_t)x42 * x61))))))))))))))));
+ { uint64_t x98 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + ((0x2 * ((uint64_t)x9 * x53)) + (((uint64_t)x11 * x51) + ((0x2 * ((uint64_t)x13 * x49)) + (((uint64_t)x15 * x47) + ((uint64_t)x17 * x45))))))) + (0x1f * (((uint64_t)x19 * x82) + (((uint64_t)x21 * x83) + ((0x2 * ((uint64_t)x23 * x81)) + (((uint64_t)x25 * x79) + ((0x2 * ((uint64_t)x27 * x77)) + (((uint64_t)x29 * x75) + (((uint64_t)x31 * x73) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + ((0x2 * ((uint64_t)x37 * x67)) + (((uint64_t)x39 * x65) + ((0x2 * ((uint64_t)x41 * x63)) + (((uint64_t)x43 * x61) + ((uint64_t)x42 * x59))))))))))))))));
+ { uint64_t x99 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((uint64_t)x15 * x45)))))) + (0x1f * ((0x2 * ((uint64_t)x17 * x82)) + (((uint64_t)x19 * x83) + ((0x2 * ((uint64_t)x21 * x81)) + ((0x2 * ((uint64_t)x23 * x79)) + ((0x2 * ((uint64_t)x25 * x77)) + ((0x2 * ((uint64_t)x27 * x75)) + (((uint64_t)x29 * x73) + ((0x2 * ((uint64_t)x31 * x71)) + (((uint64_t)x33 * x69) + ((0x2 * ((uint64_t)x35 * x67)) + ((0x2 * ((uint64_t)x37 * x65)) + ((0x2 * ((uint64_t)x39 * x63)) + ((0x2 * ((uint64_t)x41 * x61)) + (((uint64_t)x43 * x59) + (0x2 * ((uint64_t)x42 * x57))))))))))))))))));
+ { uint64_t x100 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + ((0x2 * ((uint64_t)x9 * x49)) + (((uint64_t)x11 * x47) + ((uint64_t)x13 * x45))))) + (0x1f * (((uint64_t)x15 * x82) + (((uint64_t)x17 * x83) + (((uint64_t)x19 * x81) + (((uint64_t)x21 * x79) + ((0x2 * ((uint64_t)x23 * x77)) + (((uint64_t)x25 * x75) + (((uint64_t)x27 * x73) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + ((0x2 * ((uint64_t)x37 * x63)) + (((uint64_t)x39 * x61) + (((uint64_t)x41 * x59) + (((uint64_t)x43 * x57) + ((uint64_t)x42 * x55))))))))))))))))));
+ { uint64_t x101 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((uint64_t)x11 * x45)))) + (0x1f * ((0x2 * ((uint64_t)x13 * x82)) + (((uint64_t)x15 * x83) + ((0x2 * ((uint64_t)x17 * x81)) + (((uint64_t)x19 * x79) + ((0x2 * ((uint64_t)x21 * x77)) + ((0x2 * ((uint64_t)x23 * x75)) + (((uint64_t)x25 * x73) + ((0x2 * ((uint64_t)x27 * x71)) + (((uint64_t)x29 * x69) + ((0x2 * ((uint64_t)x31 * x67)) + (((uint64_t)x33 * x65) + ((0x2 * ((uint64_t)x35 * x63)) + ((0x2 * ((uint64_t)x37 * x61)) + (((uint64_t)x39 * x59) + ((0x2 * ((uint64_t)x41 * x57)) + (((uint64_t)x43 * x55) + (0x2 * ((uint64_t)x42 * x53))))))))))))))))))));
+ { uint64_t x102 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + ((uint64_t)x9 * x45))) + (0x1f * (((uint64_t)x11 * x82) + (((uint64_t)x13 * x83) + (((uint64_t)x15 * x81) + (((uint64_t)x17 * x79) + (((uint64_t)x19 * x77) + (((uint64_t)x21 * x75) + (((uint64_t)x23 * x73) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + (((uint64_t)x39 * x57) + (((uint64_t)x41 * x55) + (((uint64_t)x43 * x53) + ((uint64_t)x42 * x51))))))))))))))))))));
+ { uint64_t x103 = ((((uint64_t)x5 * x47) + ((uint64_t)x7 * x45)) + (0x1f * ((0x2 * ((uint64_t)x9 * x82)) + (((uint64_t)x11 * x83) + ((0x2 * ((uint64_t)x13 * x81)) + (((uint64_t)x15 * x79) + ((0x2 * ((uint64_t)x17 * x77)) + (((uint64_t)x19 * x75) + (((uint64_t)x21 * x73) + ((0x2 * ((uint64_t)x23 * x71)) + (((uint64_t)x25 * x69) + ((0x2 * ((uint64_t)x27 * x67)) + (((uint64_t)x29 * x65) + ((0x2 * ((uint64_t)x31 * x63)) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + ((0x2 * ((uint64_t)x37 * x57)) + (((uint64_t)x39 * x55) + ((0x2 * ((uint64_t)x41 * x53)) + (((uint64_t)x43 * x51) + (0x2 * ((uint64_t)x42 * x49))))))))))))))))))))));
+ { uint64_t x104 = (((uint64_t)x5 * x45) + (0x1f * ((0x2 * ((uint64_t)x7 * x82)) + ((0x2 * ((uint64_t)x9 * x83)) + ((0x2 * ((uint64_t)x11 * x81)) + ((0x2 * ((uint64_t)x13 * x79)) + ((0x2 * ((uint64_t)x15 * x77)) + ((0x2 * ((uint64_t)x17 * x75)) + (((uint64_t)x19 * x73) + ((0x2 * ((uint64_t)x21 * x71)) + ((0x2 * ((uint64_t)x23 * x69)) + ((0x2 * ((uint64_t)x25 * x67)) + ((0x2 * ((uint64_t)x27 * x65)) + ((0x2 * ((uint64_t)x29 * x63)) + ((0x2 * ((uint64_t)x31 * x61)) + (((uint64_t)x33 * x59) + ((0x2 * ((uint64_t)x35 * x57)) + ((0x2 * ((uint64_t)x37 * x55)) + ((0x2 * ((uint64_t)x39 * x53)) + ((0x2 * ((uint64_t)x41 * x51)) + ((0x2 * ((uint64_t)x43 * x49)) + (0x2 * ((uint64_t)x42 * x47)))))))))))))))))))))));
+ { uint64_t x105 = (x104 >> 0x18);
+ { uint32_t x106 = ((uint32_t)x104 & 0xffffff);
+ { uint64_t x107 = (x105 + x103);
+ { uint64_t x108 = (x107 >> 0x18);
+ { uint32_t x109 = ((uint32_t)x107 & 0xffffff);
+ { uint64_t x110 = (x108 + x102);
+ { uint64_t x111 = (x110 >> 0x17);
+ { uint32_t x112 = ((uint32_t)x110 & 0x7fffff);
+ { uint64_t x113 = (x111 + x101);
+ { uint64_t x114 = (x113 >> 0x18);
+ { uint32_t x115 = ((uint32_t)x113 & 0xffffff);
+ { uint64_t x116 = (x114 + x100);
+ { uint64_t x117 = (x116 >> 0x17);
+ { uint32_t x118 = ((uint32_t)x116 & 0x7fffff);
+ { uint64_t x119 = (x117 + x99);
+ { uint64_t x120 = (x119 >> 0x18);
+ { uint32_t x121 = ((uint32_t)x119 & 0xffffff);
+ { uint64_t x122 = (x120 + x98);
+ { uint64_t x123 = (x122 >> 0x17);
+ { uint32_t x124 = ((uint32_t)x122 & 0x7fffff);
+ { uint64_t x125 = (x123 + x97);
+ { uint64_t x126 = (x125 >> 0x18);
+ { uint32_t x127 = ((uint32_t)x125 & 0xffffff);
+ { uint64_t x128 = (x126 + x96);
+ { uint64_t x129 = (x128 >> 0x18);
+ { uint32_t x130 = ((uint32_t)x128 & 0xffffff);
+ { uint64_t x131 = (x129 + x95);
+ { uint64_t x132 = (x131 >> 0x17);
+ { uint32_t x133 = ((uint32_t)x131 & 0x7fffff);
+ { uint64_t x134 = (x132 + x94);
+ { uint64_t x135 = (x134 >> 0x18);
+ { uint32_t x136 = ((uint32_t)x134 & 0xffffff);
+ { uint64_t x137 = (x135 + x93);
+ { uint64_t x138 = (x137 >> 0x17);
+ { uint32_t x139 = ((uint32_t)x137 & 0x7fffff);
+ { uint64_t x140 = (x138 + x92);
+ { uint64_t x141 = (x140 >> 0x18);
+ { uint32_t x142 = ((uint32_t)x140 & 0xffffff);
+ { uint64_t x143 = (x141 + x91);
+ { uint64_t x144 = (x143 >> 0x17);
+ { uint32_t x145 = ((uint32_t)x143 & 0x7fffff);
+ { uint64_t x146 = (x144 + x90);
+ { uint64_t x147 = (x146 >> 0x18);
+ { uint32_t x148 = ((uint32_t)x146 & 0xffffff);
+ { uint64_t x149 = (x147 + x89);
+ { uint64_t x150 = (x149 >> 0x18);
+ { uint32_t x151 = ((uint32_t)x149 & 0xffffff);
+ { uint64_t x152 = (x150 + x88);
+ { uint64_t x153 = (x152 >> 0x17);
+ { uint32_t x154 = ((uint32_t)x152 & 0x7fffff);
+ { uint64_t x155 = (x153 + x87);
+ { uint64_t x156 = (x155 >> 0x18);
+ { uint32_t x157 = ((uint32_t)x155 & 0xffffff);
+ { uint64_t x158 = (x156 + x86);
+ { uint64_t x159 = (x158 >> 0x17);
+ { uint32_t x160 = ((uint32_t)x158 & 0x7fffff);
+ { uint64_t x161 = (x159 + x85);
+ { uint64_t x162 = (x161 >> 0x18);
+ { uint32_t x163 = ((uint32_t)x161 & 0xffffff);
+ { uint64_t x164 = (x162 + x84);
+ { uint64_t x165 = (x164 >> 0x17);
+ { uint32_t x166 = ((uint32_t)x164 & 0x7fffff);
+ { uint64_t x167 = (x106 + (0x1f * x165));
+ { uint32_t x168 = (uint32_t) (x167 >> 0x18);
+ { uint32_t x169 = ((uint32_t)x167 & 0xffffff);
+ { uint32_t x170 = (x168 + x109);
+ { uint32_t x171 = (x170 >> 0x18);
+ { uint32_t x172 = (x170 & 0xffffff);
+ out[0] = x169;
+ out[1] = x172;
+ out[2] = (x171 + x112);
+ out[3] = x115;
+ out[4] = x118;
+ out[5] = x121;
+ out[6] = x124;
+ out[7] = x127;
+ out[8] = x130;
+ out[9] = x133;
+ out[10] = x136;
+ out[11] = x139;
+ out[12] = x142;
+ out[13] = x145;
+ out[14] = x148;
+ out[15] = x151;
+ out[16] = x154;
+ out[17] = x157;
+ out[18] = x160;
+ out[19] = x163;
+ out[20] = x166;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e495m31_21limbs/femulDisplay.log b/src/Specific/solinas32_2e495m31_21limbs/femulDisplay.log
new file mode 100644
index 000000000..a22086fd9
--- /dev/null
+++ b/src/Specific/solinas32_2e495m31_21limbs/femulDisplay.log
@@ -0,0 +1,96 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x42, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x82, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45))%core,
+ uint64_t x84 = (((uint64_t)x5 * x82) + (((uint64_t)x7 * x83) + ((0x2 * ((uint64_t)x9 * x81)) + (((uint64_t)x11 * x79) + ((0x2 * ((uint64_t)x13 * x77)) + (((uint64_t)x15 * x75) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + ((0x2 * ((uint64_t)x23 * x67)) + (((uint64_t)x25 * x65) + ((0x2 * ((uint64_t)x27 * x63)) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + ((0x2 * ((uint64_t)x37 * x53)) + (((uint64_t)x39 * x51) + ((0x2 * ((uint64_t)x41 * x49)) + (((uint64_t)x43 * x47) + ((uint64_t)x42 * x45)))))))))))))))))))));
+ uint64_t x85 = ((((uint64_t)x5 * x83) + ((0x2 * ((uint64_t)x7 * x81)) + ((0x2 * ((uint64_t)x9 * x79)) + ((0x2 * ((uint64_t)x11 * x77)) + ((0x2 * ((uint64_t)x13 * x75)) + (((uint64_t)x15 * x73) + ((0x2 * ((uint64_t)x17 * x71)) + (((uint64_t)x19 * x69) + ((0x2 * ((uint64_t)x21 * x67)) + ((0x2 * ((uint64_t)x23 * x65)) + ((0x2 * ((uint64_t)x25 * x63)) + ((0x2 * ((uint64_t)x27 * x61)) + (((uint64_t)x29 * x59) + ((0x2 * ((uint64_t)x31 * x57)) + (((uint64_t)x33 * x55) + ((0x2 * ((uint64_t)x35 * x53)) + ((0x2 * ((uint64_t)x37 * x51)) + ((0x2 * ((uint64_t)x39 * x49)) + ((0x2 * ((uint64_t)x41 * x47)) + ((uint64_t)x43 * x45)))))))))))))))))))) + (0x1f * (0x2 * ((uint64_t)x42 * x82))));
+ uint64_t x86 = ((((uint64_t)x5 * x81) + (((uint64_t)x7 * x79) + ((0x2 * ((uint64_t)x9 * x77)) + (((uint64_t)x11 * x75) + (((uint64_t)x13 * x73) + (((uint64_t)x15 * x71) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + (((uint64_t)x21 * x65) + ((0x2 * ((uint64_t)x23 * x63)) + (((uint64_t)x25 * x61) + (((uint64_t)x27 * x59) + (((uint64_t)x29 * x57) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + (((uint64_t)x35 * x51) + ((0x2 * ((uint64_t)x37 * x49)) + (((uint64_t)x39 * x47) + ((uint64_t)x41 * x45))))))))))))))))))) + (0x1f * (((uint64_t)x43 * x82) + ((uint64_t)x42 * x83))));
+ uint64_t x87 = ((((uint64_t)x5 * x79) + ((0x2 * ((uint64_t)x7 * x77)) + ((0x2 * ((uint64_t)x9 * x75)) + (((uint64_t)x11 * x73) + ((0x2 * ((uint64_t)x13 * x71)) + (((uint64_t)x15 * x69) + ((0x2 * ((uint64_t)x17 * x67)) + (((uint64_t)x19 * x65) + ((0x2 * ((uint64_t)x21 * x63)) + ((0x2 * ((uint64_t)x23 * x61)) + (((uint64_t)x25 * x59) + ((0x2 * ((uint64_t)x27 * x57)) + (((uint64_t)x29 * x55) + ((0x2 * ((uint64_t)x31 * x53)) + (((uint64_t)x33 * x51) + ((0x2 * ((uint64_t)x35 * x49)) + ((0x2 * ((uint64_t)x37 * x47)) + ((uint64_t)x39 * x45)))))))))))))))))) + (0x1f * ((0x2 * ((uint64_t)x41 * x82)) + (((uint64_t)x43 * x83) + (0x2 * ((uint64_t)x42 * x81))))));
+ uint64_t x88 = ((((uint64_t)x5 * x77) + (((uint64_t)x7 * x75) + (((uint64_t)x9 * x73) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + (((uint64_t)x15 * x67) + (((uint64_t)x17 * x65) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + (((uint64_t)x23 * x59) + (((uint64_t)x25 * x57) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + (((uint64_t)x33 * x49) + (((uint64_t)x35 * x47) + ((uint64_t)x37 * x45))))))))))))))))) + (0x1f * (((uint64_t)x39 * x82) + (((uint64_t)x41 * x83) + (((uint64_t)x43 * x81) + ((uint64_t)x42 * x79))))));
+ uint64_t x89 = ((((uint64_t)x5 * x75) + (((uint64_t)x7 * x73) + ((0x2 * ((uint64_t)x9 * x71)) + (((uint64_t)x11 * x69) + ((0x2 * ((uint64_t)x13 * x67)) + (((uint64_t)x15 * x65) + ((0x2 * ((uint64_t)x17 * x63)) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + ((0x2 * ((uint64_t)x23 * x57)) + (((uint64_t)x25 * x55) + ((0x2 * ((uint64_t)x27 * x53)) + (((uint64_t)x29 * x51) + ((0x2 * ((uint64_t)x31 * x49)) + (((uint64_t)x33 * x47) + ((uint64_t)x35 * x45)))))))))))))))) + (0x1f * ((0x2 * ((uint64_t)x37 * x82)) + (((uint64_t)x39 * x83) + ((0x2 * ((uint64_t)x41 * x81)) + (((uint64_t)x43 * x79) + (0x2 * ((uint64_t)x42 * x77))))))));
+ uint64_t x90 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + ((0x2 * ((uint64_t)x9 * x69)) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + (((uint64_t)x19 * x59) + ((0x2 * ((uint64_t)x21 * x57)) + ((0x2 * ((uint64_t)x23 * x55)) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + ((uint64_t)x33 * x45))))))))))))))) + (0x1f * ((0x2 * ((uint64_t)x35 * x82)) + ((0x2 * ((uint64_t)x37 * x83)) + ((0x2 * ((uint64_t)x39 * x81)) + ((0x2 * ((uint64_t)x41 * x79)) + ((0x2 * ((uint64_t)x43 * x77)) + (0x2 * ((uint64_t)x42 * x75)))))))));
+ uint64_t x91 = ((((uint64_t)x5 * x71) + (((uint64_t)x7 * x69) + ((0x2 * ((uint64_t)x9 * x67)) + (((uint64_t)x11 * x65) + ((0x2 * ((uint64_t)x13 * x63)) + (((uint64_t)x15 * x61) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + ((0x2 * ((uint64_t)x23 * x53)) + (((uint64_t)x25 * x51) + ((0x2 * ((uint64_t)x27 * x49)) + (((uint64_t)x29 * x47) + ((uint64_t)x31 * x45)))))))))))))) + (0x1f * (((uint64_t)x33 * x82) + (((uint64_t)x35 * x83) + ((0x2 * ((uint64_t)x37 * x81)) + (((uint64_t)x39 * x79) + ((0x2 * ((uint64_t)x41 * x77)) + (((uint64_t)x43 * x75) + ((uint64_t)x42 * x73)))))))));
+ uint64_t x92 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + ((0x2 * ((uint64_t)x11 * x63)) + ((0x2 * ((uint64_t)x13 * x61)) + (((uint64_t)x15 * x59) + ((0x2 * ((uint64_t)x17 * x57)) + (((uint64_t)x19 * x55) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + ((uint64_t)x29 * x45))))))))))))) + (0x1f * ((0x2 * ((uint64_t)x31 * x82)) + (((uint64_t)x33 * x83) + ((0x2 * ((uint64_t)x35 * x81)) + ((0x2 * ((uint64_t)x37 * x79)) + ((0x2 * ((uint64_t)x39 * x77)) + ((0x2 * ((uint64_t)x41 * x75)) + (((uint64_t)x43 * x73) + (0x2 * ((uint64_t)x42 * x71)))))))))));
+ uint64_t x93 = ((((uint64_t)x5 * x67) + (((uint64_t)x7 * x65) + ((0x2 * ((uint64_t)x9 * x63)) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + (((uint64_t)x15 * x57) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + ((0x2 * ((uint64_t)x23 * x49)) + (((uint64_t)x25 * x47) + ((uint64_t)x27 * x45)))))))))))) + (0x1f * (((uint64_t)x29 * x82) + (((uint64_t)x31 * x83) + (((uint64_t)x33 * x81) + (((uint64_t)x35 * x79) + ((0x2 * ((uint64_t)x37 * x77)) + (((uint64_t)x39 * x75) + (((uint64_t)x41 * x73) + (((uint64_t)x43 * x71) + ((uint64_t)x42 * x69)))))))))));
+ uint64_t x94 = ((((uint64_t)x5 * x65) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + (((uint64_t)x11 * x59) + ((0x2 * ((uint64_t)x13 * x57)) + (((uint64_t)x15 * x55) + ((0x2 * ((uint64_t)x17 * x53)) + (((uint64_t)x19 * x51) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((uint64_t)x25 * x45))))))))))) + (0x1f * ((0x2 * ((uint64_t)x27 * x82)) + (((uint64_t)x29 * x83) + ((0x2 * ((uint64_t)x31 * x81)) + (((uint64_t)x33 * x79) + ((0x2 * ((uint64_t)x35 * x77)) + ((0x2 * ((uint64_t)x37 * x75)) + (((uint64_t)x39 * x73) + ((0x2 * ((uint64_t)x41 * x71)) + (((uint64_t)x43 * x69) + (0x2 * ((uint64_t)x42 * x67)))))))))))));
+ uint64_t x95 = ((((uint64_t)x5 * x63) + (((uint64_t)x7 * x61) + (((uint64_t)x9 * x59) + (((uint64_t)x11 * x57) + (((uint64_t)x13 * x55) + (((uint64_t)x15 * x53) + (((uint64_t)x17 * x51) + (((uint64_t)x19 * x49) + (((uint64_t)x21 * x47) + ((uint64_t)x23 * x45)))))))))) + (0x1f * (((uint64_t)x25 * x82) + (((uint64_t)x27 * x83) + (((uint64_t)x29 * x81) + (((uint64_t)x31 * x79) + (((uint64_t)x33 * x77) + (((uint64_t)x35 * x75) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + (((uint64_t)x41 * x69) + (((uint64_t)x43 * x67) + ((uint64_t)x42 * x65)))))))))))));
+ uint64_t x96 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + ((0x2 * ((uint64_t)x9 * x57)) + (((uint64_t)x11 * x55) + ((0x2 * ((uint64_t)x13 * x53)) + (((uint64_t)x15 * x51) + ((0x2 * ((uint64_t)x17 * x49)) + (((uint64_t)x19 * x47) + ((uint64_t)x21 * x45))))))))) + (0x1f * ((0x2 * ((uint64_t)x23 * x82)) + (((uint64_t)x25 * x83) + ((0x2 * ((uint64_t)x27 * x81)) + (((uint64_t)x29 * x79) + ((0x2 * ((uint64_t)x31 * x77)) + (((uint64_t)x33 * x75) + (((uint64_t)x35 * x73) + ((0x2 * ((uint64_t)x37 * x71)) + (((uint64_t)x39 * x69) + ((0x2 * ((uint64_t)x41 * x67)) + (((uint64_t)x43 * x65) + (0x2 * ((uint64_t)x42 * x63)))))))))))))));
+ uint64_t x97 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + ((0x2 * ((uint64_t)x9 * x55)) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + ((uint64_t)x19 * x45)))))))) + (0x1f * ((0x2 * ((uint64_t)x21 * x82)) + ((0x2 * ((uint64_t)x23 * x83)) + ((0x2 * ((uint64_t)x25 * x81)) + ((0x2 * ((uint64_t)x27 * x79)) + ((0x2 * ((uint64_t)x29 * x77)) + ((0x2 * ((uint64_t)x31 * x75)) + (((uint64_t)x33 * x73) + ((0x2 * ((uint64_t)x35 * x71)) + ((0x2 * ((uint64_t)x37 * x69)) + ((0x2 * ((uint64_t)x39 * x67)) + ((0x2 * ((uint64_t)x41 * x65)) + ((0x2 * ((uint64_t)x43 * x63)) + (0x2 * ((uint64_t)x42 * x61))))))))))))))));
+ uint64_t x98 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + ((0x2 * ((uint64_t)x9 * x53)) + (((uint64_t)x11 * x51) + ((0x2 * ((uint64_t)x13 * x49)) + (((uint64_t)x15 * x47) + ((uint64_t)x17 * x45))))))) + (0x1f * (((uint64_t)x19 * x82) + (((uint64_t)x21 * x83) + ((0x2 * ((uint64_t)x23 * x81)) + (((uint64_t)x25 * x79) + ((0x2 * ((uint64_t)x27 * x77)) + (((uint64_t)x29 * x75) + (((uint64_t)x31 * x73) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + ((0x2 * ((uint64_t)x37 * x67)) + (((uint64_t)x39 * x65) + ((0x2 * ((uint64_t)x41 * x63)) + (((uint64_t)x43 * x61) + ((uint64_t)x42 * x59))))))))))))))));
+ uint64_t x99 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((uint64_t)x15 * x45)))))) + (0x1f * ((0x2 * ((uint64_t)x17 * x82)) + (((uint64_t)x19 * x83) + ((0x2 * ((uint64_t)x21 * x81)) + ((0x2 * ((uint64_t)x23 * x79)) + ((0x2 * ((uint64_t)x25 * x77)) + ((0x2 * ((uint64_t)x27 * x75)) + (((uint64_t)x29 * x73) + ((0x2 * ((uint64_t)x31 * x71)) + (((uint64_t)x33 * x69) + ((0x2 * ((uint64_t)x35 * x67)) + ((0x2 * ((uint64_t)x37 * x65)) + ((0x2 * ((uint64_t)x39 * x63)) + ((0x2 * ((uint64_t)x41 * x61)) + (((uint64_t)x43 * x59) + (0x2 * ((uint64_t)x42 * x57))))))))))))))))));
+ uint64_t x100 = ((((uint64_t)x5 * x53) + (((uint64_t)x7 * x51) + ((0x2 * ((uint64_t)x9 * x49)) + (((uint64_t)x11 * x47) + ((uint64_t)x13 * x45))))) + (0x1f * (((uint64_t)x15 * x82) + (((uint64_t)x17 * x83) + (((uint64_t)x19 * x81) + (((uint64_t)x21 * x79) + ((0x2 * ((uint64_t)x23 * x77)) + (((uint64_t)x25 * x75) + (((uint64_t)x27 * x73) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + (((uint64_t)x35 * x65) + ((0x2 * ((uint64_t)x37 * x63)) + (((uint64_t)x39 * x61) + (((uint64_t)x41 * x59) + (((uint64_t)x43 * x57) + ((uint64_t)x42 * x55))))))))))))))))));
+ uint64_t x101 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((uint64_t)x11 * x45)))) + (0x1f * ((0x2 * ((uint64_t)x13 * x82)) + (((uint64_t)x15 * x83) + ((0x2 * ((uint64_t)x17 * x81)) + (((uint64_t)x19 * x79) + ((0x2 * ((uint64_t)x21 * x77)) + ((0x2 * ((uint64_t)x23 * x75)) + (((uint64_t)x25 * x73) + ((0x2 * ((uint64_t)x27 * x71)) + (((uint64_t)x29 * x69) + ((0x2 * ((uint64_t)x31 * x67)) + (((uint64_t)x33 * x65) + ((0x2 * ((uint64_t)x35 * x63)) + ((0x2 * ((uint64_t)x37 * x61)) + (((uint64_t)x39 * x59) + ((0x2 * ((uint64_t)x41 * x57)) + (((uint64_t)x43 * x55) + (0x2 * ((uint64_t)x42 * x53))))))))))))))))))));
+ uint64_t x102 = ((((uint64_t)x5 * x49) + (((uint64_t)x7 * x47) + ((uint64_t)x9 * x45))) + (0x1f * (((uint64_t)x11 * x82) + (((uint64_t)x13 * x83) + (((uint64_t)x15 * x81) + (((uint64_t)x17 * x79) + (((uint64_t)x19 * x77) + (((uint64_t)x21 * x75) + (((uint64_t)x23 * x73) + (((uint64_t)x25 * x71) + (((uint64_t)x27 * x69) + (((uint64_t)x29 * x67) + (((uint64_t)x31 * x65) + (((uint64_t)x33 * x63) + (((uint64_t)x35 * x61) + (((uint64_t)x37 * x59) + (((uint64_t)x39 * x57) + (((uint64_t)x41 * x55) + (((uint64_t)x43 * x53) + ((uint64_t)x42 * x51))))))))))))))))))));
+ uint64_t x103 = ((((uint64_t)x5 * x47) + ((uint64_t)x7 * x45)) + (0x1f * ((0x2 * ((uint64_t)x9 * x82)) + (((uint64_t)x11 * x83) + ((0x2 * ((uint64_t)x13 * x81)) + (((uint64_t)x15 * x79) + ((0x2 * ((uint64_t)x17 * x77)) + (((uint64_t)x19 * x75) + (((uint64_t)x21 * x73) + ((0x2 * ((uint64_t)x23 * x71)) + (((uint64_t)x25 * x69) + ((0x2 * ((uint64_t)x27 * x67)) + (((uint64_t)x29 * x65) + ((0x2 * ((uint64_t)x31 * x63)) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + ((0x2 * ((uint64_t)x37 * x57)) + (((uint64_t)x39 * x55) + ((0x2 * ((uint64_t)x41 * x53)) + (((uint64_t)x43 * x51) + (0x2 * ((uint64_t)x42 * x49))))))))))))))))))))));
+ uint64_t x104 = (((uint64_t)x5 * x45) + (0x1f * ((0x2 * ((uint64_t)x7 * x82)) + ((0x2 * ((uint64_t)x9 * x83)) + ((0x2 * ((uint64_t)x11 * x81)) + ((0x2 * ((uint64_t)x13 * x79)) + ((0x2 * ((uint64_t)x15 * x77)) + ((0x2 * ((uint64_t)x17 * x75)) + (((uint64_t)x19 * x73) + ((0x2 * ((uint64_t)x21 * x71)) + ((0x2 * ((uint64_t)x23 * x69)) + ((0x2 * ((uint64_t)x25 * x67)) + ((0x2 * ((uint64_t)x27 * x65)) + ((0x2 * ((uint64_t)x29 * x63)) + ((0x2 * ((uint64_t)x31 * x61)) + (((uint64_t)x33 * x59) + ((0x2 * ((uint64_t)x35 * x57)) + ((0x2 * ((uint64_t)x37 * x55)) + ((0x2 * ((uint64_t)x39 * x53)) + ((0x2 * ((uint64_t)x41 * x51)) + ((0x2 * ((uint64_t)x43 * x49)) + (0x2 * ((uint64_t)x42 * x47)))))))))))))))))))))));
+ uint64_t x105 = (x104 >> 0x18);
+ uint32_t x106 = ((uint32_t)x104 & 0xffffff);
+ uint64_t x107 = (x105 + x103);
+ uint64_t x108 = (x107 >> 0x18);
+ uint32_t x109 = ((uint32_t)x107 & 0xffffff);
+ uint64_t x110 = (x108 + x102);
+ uint64_t x111 = (x110 >> 0x17);
+ uint32_t x112 = ((uint32_t)x110 & 0x7fffff);
+ uint64_t x113 = (x111 + x101);
+ uint64_t x114 = (x113 >> 0x18);
+ uint32_t x115 = ((uint32_t)x113 & 0xffffff);
+ uint64_t x116 = (x114 + x100);
+ uint64_t x117 = (x116 >> 0x17);
+ uint32_t x118 = ((uint32_t)x116 & 0x7fffff);
+ uint64_t x119 = (x117 + x99);
+ uint64_t x120 = (x119 >> 0x18);
+ uint32_t x121 = ((uint32_t)x119 & 0xffffff);
+ uint64_t x122 = (x120 + x98);
+ uint64_t x123 = (x122 >> 0x17);
+ uint32_t x124 = ((uint32_t)x122 & 0x7fffff);
+ uint64_t x125 = (x123 + x97);
+ uint64_t x126 = (x125 >> 0x18);
+ uint32_t x127 = ((uint32_t)x125 & 0xffffff);
+ uint64_t x128 = (x126 + x96);
+ uint64_t x129 = (x128 >> 0x18);
+ uint32_t x130 = ((uint32_t)x128 & 0xffffff);
+ uint64_t x131 = (x129 + x95);
+ uint64_t x132 = (x131 >> 0x17);
+ uint32_t x133 = ((uint32_t)x131 & 0x7fffff);
+ uint64_t x134 = (x132 + x94);
+ uint64_t x135 = (x134 >> 0x18);
+ uint32_t x136 = ((uint32_t)x134 & 0xffffff);
+ uint64_t x137 = (x135 + x93);
+ uint64_t x138 = (x137 >> 0x17);
+ uint32_t x139 = ((uint32_t)x137 & 0x7fffff);
+ uint64_t x140 = (x138 + x92);
+ uint64_t x141 = (x140 >> 0x18);
+ uint32_t x142 = ((uint32_t)x140 & 0xffffff);
+ uint64_t x143 = (x141 + x91);
+ uint64_t x144 = (x143 >> 0x17);
+ uint32_t x145 = ((uint32_t)x143 & 0x7fffff);
+ uint64_t x146 = (x144 + x90);
+ uint64_t x147 = (x146 >> 0x18);
+ uint32_t x148 = ((uint32_t)x146 & 0xffffff);
+ uint64_t x149 = (x147 + x89);
+ uint64_t x150 = (x149 >> 0x18);
+ uint32_t x151 = ((uint32_t)x149 & 0xffffff);
+ uint64_t x152 = (x150 + x88);
+ uint64_t x153 = (x152 >> 0x17);
+ uint32_t x154 = ((uint32_t)x152 & 0x7fffff);
+ uint64_t x155 = (x153 + x87);
+ uint64_t x156 = (x155 >> 0x18);
+ uint32_t x157 = ((uint32_t)x155 & 0xffffff);
+ uint64_t x158 = (x156 + x86);
+ uint64_t x159 = (x158 >> 0x17);
+ uint32_t x160 = ((uint32_t)x158 & 0x7fffff);
+ uint64_t x161 = (x159 + x85);
+ uint64_t x162 = (x161 >> 0x18);
+ uint32_t x163 = ((uint32_t)x161 & 0xffffff);
+ uint64_t x164 = (x162 + x84);
+ uint64_t x165 = (x164 >> 0x17);
+ uint32_t x166 = ((uint32_t)x164 & 0x7fffff);
+ uint64_t x167 = (x106 + (0x1f * x165));
+ uint32_t x168 = (uint32_t) (x167 >> 0x18);
+ uint32_t x169 = ((uint32_t)x167 & 0xffffff);
+ uint32_t x170 = (x168 + x109);
+ uint32_t x171 = (x170 >> 0x18);
+ uint32_t x172 = (x170 & 0xffffff);
+ return (Return x166, Return x163, Return x160, Return x157, Return x154, Return x151, Return x148, Return x145, Return x142, Return x139, Return x136, Return x133, Return x130, Return x127, Return x124, Return x121, Return x118, Return x115, (x171 + x112), Return x172, Return x169))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * 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 * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e521m1_19limbs/femul.c b/src/Specific/solinas32_2e521m1_19limbs/femul.c
new file mode 100644
index 000000000..f59f48180
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/femul.c
@@ -0,0 +1,141 @@
+static void femul(uint32_t out[19], const uint32_t in1[19], const uint32_t in2[19]) {
+ { const uint32_t x38 = in1[18];
+ { const uint32_t x39 = in1[17];
+ { const uint32_t x37 = in1[16];
+ { const uint32_t x35 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = 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 x74 = in2[18];
+ { const uint32_t x75 = in2[17];
+ { const uint32_t x73 = in2[16];
+ { const uint32_t x71 = in2[15];
+ { const uint32_t x69 = in2[14];
+ { const uint32_t x67 = in2[13];
+ { const uint32_t x65 = in2[12];
+ { const uint32_t x63 = in2[11];
+ { const uint32_t x61 = in2[10];
+ { const uint32_t x59 = in2[9];
+ { const uint32_t x57 = in2[8];
+ { const uint32_t x55 = in2[7];
+ { const uint32_t x53 = in2[6];
+ { const uint32_t x51 = in2[5];
+ { const uint32_t x49 = in2[4];
+ { const uint32_t x47 = in2[3];
+ { const uint32_t x45 = in2[2];
+ { const uint32_t x43 = in2[1];
+ { const uint32_t x41 = in2[0];
+ { uint64_t x76 = (((uint64_t)x5 * x74) + ((0x2 * ((uint64_t)x7 * x75)) + (((uint64_t)x9 * x73) + ((0x2 * ((uint64_t)x11 * x71)) + (((uint64_t)x13 * x69) + ((0x2 * ((uint64_t)x15 * x67)) + ((0x2 * ((uint64_t)x17 * x65)) + (((uint64_t)x19 * x63) + ((0x2 * ((uint64_t)x21 * x61)) + (((uint64_t)x23 * x59) + ((0x2 * ((uint64_t)x25 * x57)) + (((uint64_t)x27 * x55) + ((0x2 * ((uint64_t)x29 * x53)) + ((0x2 * ((uint64_t)x31 * x51)) + (((uint64_t)x33 * x49) + ((0x2 * ((uint64_t)x35 * x47)) + (((uint64_t)x37 * x45) + ((0x2 * ((uint64_t)x39 * x43)) + ((uint64_t)x38 * x41)))))))))))))))))));
+ { uint64_t x77 = ((((uint64_t)x5 * x75) + (((uint64_t)x7 * x73) + (((uint64_t)x9 * x71) + (((uint64_t)x11 * x69) + (((uint64_t)x13 * x67) + ((0x2 * ((uint64_t)x15 * x65)) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + ((0x2 * ((uint64_t)x29 * x51)) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + (((uint64_t)x35 * x45) + (((uint64_t)x37 * x43) + ((uint64_t)x39 * x41)))))))))))))))))) + ((uint64_t)x38 * x74));
+ { uint64_t x78 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + (((uint64_t)x9 * x69) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + (((uint64_t)x19 * x59) + ((0x2 * ((uint64_t)x21 * x57)) + (((uint64_t)x23 * x55) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + (((uint64_t)x33 * x45) + ((0x2 * ((uint64_t)x35 * x43)) + ((uint64_t)x37 * x41))))))))))))))))) + ((0x2 * ((uint64_t)x39 * x74)) + (0x2 * ((uint64_t)x38 * x75))));
+ { uint64_t x79 = ((((uint64_t)x5 * x71) + (((uint64_t)x7 * x69) + (((uint64_t)x9 * x67) + ((0x2 * ((uint64_t)x11 * x65)) + (((uint64_t)x13 * x63) + ((0x2 * ((uint64_t)x15 * x61)) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + ((0x2 * ((uint64_t)x25 * x51)) + (((uint64_t)x27 * x49) + ((0x2 * ((uint64_t)x29 * x47)) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + ((uint64_t)x35 * x41)))))))))))))))) + (((uint64_t)x37 * x74) + ((0x2 * ((uint64_t)x39 * x75)) + ((uint64_t)x38 * x73))));
+ { uint64_t x80 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + ((0x2 * ((uint64_t)x11 * x63)) + ((0x2 * ((uint64_t)x13 * x61)) + ((0x2 * ((uint64_t)x15 * x59)) + ((0x2 * ((uint64_t)x17 * x57)) + (((uint64_t)x19 * x55) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((0x2 * ((uint64_t)x31 * x43)) + ((uint64_t)x33 * x41))))))))))))))) + ((0x2 * ((uint64_t)x35 * x74)) + ((0x2 * ((uint64_t)x37 * x75)) + ((0x2 * ((uint64_t)x39 * x73)) + (0x2 * ((uint64_t)x38 * x71))))));
+ { uint64_t x81 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + (((uint64_t)x9 * x63) + ((0x2 * ((uint64_t)x11 * x61)) + (((uint64_t)x13 * x59) + ((0x2 * ((uint64_t)x15 * x57)) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + ((0x2 * ((uint64_t)x21 * x51)) + (((uint64_t)x23 * x49) + ((0x2 * ((uint64_t)x25 * x47)) + (((uint64_t)x27 * x45) + ((0x2 * ((uint64_t)x29 * x43)) + ((uint64_t)x31 * x41)))))))))))))) + (((uint64_t)x33 * x74) + ((0x2 * ((uint64_t)x35 * x75)) + (((uint64_t)x37 * x73) + ((0x2 * ((uint64_t)x39 * x71)) + ((uint64_t)x38 * x69))))));
+ { uint64_t x82 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + ((uint64_t)x29 * x41))))))))))))) + (((uint64_t)x31 * x74) + (((uint64_t)x33 * x75) + (((uint64_t)x35 * x73) + (((uint64_t)x37 * x71) + (((uint64_t)x39 * x69) + ((uint64_t)x38 * x67)))))));
+ { uint64_t x83 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + (((uint64_t)x9 * x59) + ((0x2 * ((uint64_t)x11 * x57)) + (((uint64_t)x13 * x55) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + (((uint64_t)x19 * x49) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + ((uint64_t)x27 * x41)))))))))))) + ((0x2 * ((uint64_t)x29 * x74)) + ((0x2 * ((uint64_t)x31 * x75)) + (((uint64_t)x33 * x73) + ((0x2 * ((uint64_t)x35 * x71)) + (((uint64_t)x37 * x69) + ((0x2 * ((uint64_t)x39 * x67)) + (0x2 * ((uint64_t)x38 * x65)))))))));
+ { uint64_t x84 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + ((0x2 * ((uint64_t)x15 * x51)) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((uint64_t)x25 * x41))))))))))) + (((uint64_t)x27 * x74) + ((0x2 * ((uint64_t)x29 * x75)) + (((uint64_t)x31 * x73) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + ((0x2 * ((uint64_t)x39 * x65)) + ((uint64_t)x38 * x63)))))))));
+ { uint64_t x85 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + (((uint64_t)x9 * x55) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + (((uint64_t)x19 * x45) + ((0x2 * ((uint64_t)x21 * x43)) + ((uint64_t)x23 * x41)))))))))) + ((0x2 * ((uint64_t)x25 * x74)) + ((0x2 * ((uint64_t)x27 * x75)) + ((0x2 * ((uint64_t)x29 * x73)) + ((0x2 * ((uint64_t)x31 * x71)) + (((uint64_t)x33 * x69) + ((0x2 * ((uint64_t)x35 * x67)) + ((0x2 * ((uint64_t)x37 * x65)) + ((0x2 * ((uint64_t)x39 * x63)) + (0x2 * ((uint64_t)x38 * x61)))))))))));
+ { uint64_t x86 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + ((0x2 * ((uint64_t)x11 * x51)) + (((uint64_t)x13 * x49) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + ((uint64_t)x21 * x41))))))))) + (((uint64_t)x23 * x74) + ((0x2 * ((uint64_t)x25 * x75)) + (((uint64_t)x27 * x73) + ((0x2 * ((uint64_t)x29 * x71)) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + ((0x2 * ((uint64_t)x35 * x65)) + (((uint64_t)x37 * x63) + ((0x2 * ((uint64_t)x39 * x61)) + ((uint64_t)x38 * x59)))))))))));
+ { uint64_t x87 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((uint64_t)x19 * x41)))))))) + ((0x2 * ((uint64_t)x21 * x74)) + ((0x2 * ((uint64_t)x23 * x75)) + ((0x2 * ((uint64_t)x25 * x73)) + ((0x2 * ((uint64_t)x27 * x71)) + ((0x2 * ((uint64_t)x29 * x69)) + ((0x2 * ((uint64_t)x31 * x67)) + ((0x2 * ((uint64_t)x33 * x65)) + ((0x2 * ((uint64_t)x35 * x63)) + ((0x2 * ((uint64_t)x37 * x61)) + ((0x2 * ((uint64_t)x39 * x59)) + (0x2 * ((uint64_t)x38 * x57)))))))))))));
+ { uint64_t x88 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + (((uint64_t)x9 * x49) + ((0x2 * ((uint64_t)x11 * x47)) + (((uint64_t)x13 * x45) + ((0x2 * ((uint64_t)x15 * x43)) + ((uint64_t)x17 * x41))))))) + (((uint64_t)x19 * x74) + ((0x2 * ((uint64_t)x21 * x75)) + (((uint64_t)x23 * x73) + ((0x2 * ((uint64_t)x25 * x71)) + (((uint64_t)x27 * x69) + ((0x2 * ((uint64_t)x29 * x67)) + ((0x2 * ((uint64_t)x31 * x65)) + (((uint64_t)x33 * x63) + ((0x2 * ((uint64_t)x35 * x61)) + (((uint64_t)x37 * x59) + ((0x2 * ((uint64_t)x39 * x57)) + ((uint64_t)x38 * x55)))))))))))));
+ { uint64_t x89 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + ((uint64_t)x15 * x41)))))) + (((uint64_t)x17 * x74) + (((uint64_t)x19 * x75) + (((uint64_t)x21 * x73) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + ((0x2 * ((uint64_t)x29 * x65)) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + (((uint64_t)x39 * x55) + ((uint64_t)x38 * x53))))))))))))));
+ { uint64_t x90 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + (((uint64_t)x9 * x45) + ((0x2 * ((uint64_t)x11 * x43)) + ((uint64_t)x13 * x41))))) + ((0x2 * ((uint64_t)x15 * x74)) + ((0x2 * ((uint64_t)x17 * x75)) + (((uint64_t)x19 * x73) + ((0x2 * ((uint64_t)x21 * x71)) + (((uint64_t)x23 * x69) + ((0x2 * ((uint64_t)x25 * x67)) + ((0x2 * ((uint64_t)x27 * x65)) + ((0x2 * ((uint64_t)x29 * x63)) + ((0x2 * ((uint64_t)x31 * x61)) + (((uint64_t)x33 * x59) + ((0x2 * ((uint64_t)x35 * x57)) + (((uint64_t)x37 * x55) + ((0x2 * ((uint64_t)x39 * x53)) + (0x2 * ((uint64_t)x38 * x51))))))))))))))));
+ { uint64_t x91 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((uint64_t)x11 * x41)))) + (((uint64_t)x13 * x74) + ((0x2 * ((uint64_t)x15 * x75)) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + ((0x2 * ((uint64_t)x25 * x65)) + (((uint64_t)x27 * x63) + ((0x2 * ((uint64_t)x29 * x61)) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + ((0x2 * ((uint64_t)x39 * x51)) + ((uint64_t)x38 * x49))))))))))))))));
+ { uint64_t x92 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((uint64_t)x9 * x41))) + ((0x2 * ((uint64_t)x11 * x74)) + ((0x2 * ((uint64_t)x13 * x75)) + ((0x2 * ((uint64_t)x15 * x73)) + ((0x2 * ((uint64_t)x17 * x71)) + (((uint64_t)x19 * x69) + ((0x2 * ((uint64_t)x21 * x67)) + ((0x2 * ((uint64_t)x23 * x65)) + ((0x2 * ((uint64_t)x25 * x63)) + ((0x2 * ((uint64_t)x27 * x61)) + ((0x2 * ((uint64_t)x29 * x59)) + ((0x2 * ((uint64_t)x31 * x57)) + (((uint64_t)x33 * x55) + ((0x2 * ((uint64_t)x35 * x53)) + ((0x2 * ((uint64_t)x37 * x51)) + ((0x2 * ((uint64_t)x39 * x49)) + (0x2 * ((uint64_t)x38 * x47))))))))))))))))));
+ { uint64_t x93 = ((((uint64_t)x5 * x43) + ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x74) + ((0x2 * ((uint64_t)x11 * x75)) + (((uint64_t)x13 * x73) + ((0x2 * ((uint64_t)x15 * x71)) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + ((0x2 * ((uint64_t)x21 * x65)) + (((uint64_t)x23 * x63) + ((0x2 * ((uint64_t)x25 * x61)) + (((uint64_t)x27 * x59) + ((0x2 * ((uint64_t)x29 * x57)) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((0x2 * ((uint64_t)x35 * x51)) + (((uint64_t)x37 * x49) + ((0x2 * ((uint64_t)x39 * x47)) + ((uint64_t)x38 * x45))))))))))))))))));
+ { uint64_t x94 = (((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x74)) + ((0x2 * ((uint64_t)x9 * x75)) + ((0x2 * ((uint64_t)x11 * x73)) + ((0x2 * ((uint64_t)x13 * x71)) + ((0x2 * ((uint64_t)x15 * x69)) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + ((0x2 * ((uint64_t)x21 * x63)) + ((0x2 * ((uint64_t)x23 * x61)) + ((0x2 * ((uint64_t)x25 * x59)) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + ((0x2 * ((uint64_t)x31 * x53)) + ((0x2 * ((uint64_t)x33 * x51)) + ((0x2 * ((uint64_t)x35 * x49)) + ((0x2 * ((uint64_t)x37 * x47)) + ((0x2 * ((uint64_t)x39 * x45)) + (0x2 * ((uint64_t)x38 * x43))))))))))))))))))));
+ { uint64_t x95 = (x94 >> 0x1c);
+ { uint32_t x96 = ((uint32_t)x94 & 0xfffffff);
+ { uint64_t x97 = (x95 + x93);
+ { uint64_t x98 = (x97 >> 0x1b);
+ { uint32_t x99 = ((uint32_t)x97 & 0x7ffffff);
+ { uint64_t x100 = (x98 + x92);
+ { uint64_t x101 = (x100 >> 0x1c);
+ { uint32_t x102 = ((uint32_t)x100 & 0xfffffff);
+ { uint64_t x103 = (x101 + x91);
+ { uint64_t x104 = (x103 >> 0x1b);
+ { uint32_t x105 = ((uint32_t)x103 & 0x7ffffff);
+ { uint64_t x106 = (x104 + x90);
+ { uint64_t x107 = (x106 >> 0x1c);
+ { uint32_t x108 = ((uint32_t)x106 & 0xfffffff);
+ { uint64_t x109 = (x107 + x89);
+ { uint64_t x110 = (x109 >> 0x1b);
+ { uint32_t x111 = ((uint32_t)x109 & 0x7ffffff);
+ { uint64_t x112 = (x110 + x88);
+ { uint64_t x113 = (x112 >> 0x1b);
+ { uint32_t x114 = ((uint32_t)x112 & 0x7ffffff);
+ { uint64_t x115 = (x113 + x87);
+ { uint64_t x116 = (x115 >> 0x1c);
+ { uint32_t x117 = ((uint32_t)x115 & 0xfffffff);
+ { uint64_t x118 = (x116 + x86);
+ { uint64_t x119 = (x118 >> 0x1b);
+ { uint32_t x120 = ((uint32_t)x118 & 0x7ffffff);
+ { uint64_t x121 = (x119 + x85);
+ { uint64_t x122 = (x121 >> 0x1c);
+ { uint32_t x123 = ((uint32_t)x121 & 0xfffffff);
+ { uint64_t x124 = (x122 + x84);
+ { uint64_t x125 = (x124 >> 0x1b);
+ { uint32_t x126 = ((uint32_t)x124 & 0x7ffffff);
+ { uint64_t x127 = (x125 + x83);
+ { uint64_t x128 = (x127 >> 0x1c);
+ { uint32_t x129 = ((uint32_t)x127 & 0xfffffff);
+ { uint64_t x130 = (x128 + x82);
+ { uint64_t x131 = (x130 >> 0x1b);
+ { uint32_t x132 = ((uint32_t)x130 & 0x7ffffff);
+ { uint64_t x133 = (x131 + x81);
+ { uint64_t x134 = (x133 >> 0x1b);
+ { uint32_t x135 = ((uint32_t)x133 & 0x7ffffff);
+ { uint64_t x136 = (x134 + x80);
+ { uint64_t x137 = (x136 >> 0x1c);
+ { uint32_t x138 = ((uint32_t)x136 & 0xfffffff);
+ { uint64_t x139 = (x137 + x79);
+ { uint64_t x140 = (x139 >> 0x1b);
+ { uint32_t x141 = ((uint32_t)x139 & 0x7ffffff);
+ { uint64_t x142 = (x140 + x78);
+ { uint64_t x143 = (x142 >> 0x1c);
+ { uint32_t x144 = ((uint32_t)x142 & 0xfffffff);
+ { uint64_t x145 = (x143 + x77);
+ { uint64_t x146 = (x145 >> 0x1b);
+ { uint32_t x147 = ((uint32_t)x145 & 0x7ffffff);
+ { uint64_t x148 = (x146 + x76);
+ { uint64_t x149 = (x148 >> 0x1b);
+ { uint32_t x150 = ((uint32_t)x148 & 0x7ffffff);
+ { uint64_t x151 = (x96 + x149);
+ { uint32_t x152 = (uint32_t) (x151 >> 0x1c);
+ { uint32_t x153 = ((uint32_t)x151 & 0xfffffff);
+ { uint32_t x154 = (x152 + x99);
+ { uint32_t x155 = (x154 >> 0x1b);
+ { uint32_t x156 = (x154 & 0x7ffffff);
+ out[0] = x153;
+ out[1] = x156;
+ out[2] = (x155 + x102);
+ out[3] = x105;
+ out[4] = x108;
+ out[5] = x111;
+ out[6] = x114;
+ out[7] = x117;
+ out[8] = x120;
+ out[9] = x123;
+ out[10] = x126;
+ out[11] = x129;
+ out[12] = x132;
+ out[13] = x135;
+ out[14] = x138;
+ out[15] = x141;
+ out[16] = x144;
+ out[17] = x147;
+ out[18] = x150;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e521m1_19limbs/femulDisplay.log b/src/Specific/solinas32_2e521m1_19limbs/femulDisplay.log
new file mode 100644
index 000000000..af9c19e0e
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/femulDisplay.log
@@ -0,0 +1,88 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x38, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x74, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47, x45, x43, x41))%core,
+ uint64_t x76 = (((uint64_t)x5 * x74) + ((0x2 * ((uint64_t)x7 * x75)) + (((uint64_t)x9 * x73) + ((0x2 * ((uint64_t)x11 * x71)) + (((uint64_t)x13 * x69) + ((0x2 * ((uint64_t)x15 * x67)) + ((0x2 * ((uint64_t)x17 * x65)) + (((uint64_t)x19 * x63) + ((0x2 * ((uint64_t)x21 * x61)) + (((uint64_t)x23 * x59) + ((0x2 * ((uint64_t)x25 * x57)) + (((uint64_t)x27 * x55) + ((0x2 * ((uint64_t)x29 * x53)) + ((0x2 * ((uint64_t)x31 * x51)) + (((uint64_t)x33 * x49) + ((0x2 * ((uint64_t)x35 * x47)) + (((uint64_t)x37 * x45) + ((0x2 * ((uint64_t)x39 * x43)) + ((uint64_t)x38 * x41)))))))))))))))))));
+ uint64_t x77 = ((((uint64_t)x5 * x75) + (((uint64_t)x7 * x73) + (((uint64_t)x9 * x71) + (((uint64_t)x11 * x69) + (((uint64_t)x13 * x67) + ((0x2 * ((uint64_t)x15 * x65)) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + (((uint64_t)x23 * x57) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + ((0x2 * ((uint64_t)x29 * x51)) + (((uint64_t)x31 * x49) + (((uint64_t)x33 * x47) + (((uint64_t)x35 * x45) + (((uint64_t)x37 * x43) + ((uint64_t)x39 * x41)))))))))))))))))) + ((uint64_t)x38 * x74));
+ uint64_t x78 = ((((uint64_t)x5 * x73) + ((0x2 * ((uint64_t)x7 * x71)) + (((uint64_t)x9 * x69) + ((0x2 * ((uint64_t)x11 * x67)) + ((0x2 * ((uint64_t)x13 * x65)) + ((0x2 * ((uint64_t)x15 * x63)) + ((0x2 * ((uint64_t)x17 * x61)) + (((uint64_t)x19 * x59) + ((0x2 * ((uint64_t)x21 * x57)) + (((uint64_t)x23 * x55) + ((0x2 * ((uint64_t)x25 * x53)) + ((0x2 * ((uint64_t)x27 * x51)) + ((0x2 * ((uint64_t)x29 * x49)) + ((0x2 * ((uint64_t)x31 * x47)) + (((uint64_t)x33 * x45) + ((0x2 * ((uint64_t)x35 * x43)) + ((uint64_t)x37 * x41))))))))))))))))) + ((0x2 * ((uint64_t)x39 * x74)) + (0x2 * ((uint64_t)x38 * x75))));
+ uint64_t x79 = ((((uint64_t)x5 * x71) + (((uint64_t)x7 * x69) + (((uint64_t)x9 * x67) + ((0x2 * ((uint64_t)x11 * x65)) + (((uint64_t)x13 * x63) + ((0x2 * ((uint64_t)x15 * x61)) + (((uint64_t)x17 * x59) + (((uint64_t)x19 * x57) + (((uint64_t)x21 * x55) + (((uint64_t)x23 * x53) + ((0x2 * ((uint64_t)x25 * x51)) + (((uint64_t)x27 * x49) + ((0x2 * ((uint64_t)x29 * x47)) + (((uint64_t)x31 * x45) + (((uint64_t)x33 * x43) + ((uint64_t)x35 * x41)))))))))))))))) + (((uint64_t)x37 * x74) + ((0x2 * ((uint64_t)x39 * x75)) + ((uint64_t)x38 * x73))));
+ uint64_t x80 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + ((0x2 * ((uint64_t)x11 * x63)) + ((0x2 * ((uint64_t)x13 * x61)) + ((0x2 * ((uint64_t)x15 * x59)) + ((0x2 * ((uint64_t)x17 * x57)) + (((uint64_t)x19 * x55) + ((0x2 * ((uint64_t)x21 * x53)) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((0x2 * ((uint64_t)x27 * x47)) + ((0x2 * ((uint64_t)x29 * x45)) + ((0x2 * ((uint64_t)x31 * x43)) + ((uint64_t)x33 * x41))))))))))))))) + ((0x2 * ((uint64_t)x35 * x74)) + ((0x2 * ((uint64_t)x37 * x75)) + ((0x2 * ((uint64_t)x39 * x73)) + (0x2 * ((uint64_t)x38 * x71))))));
+ uint64_t x81 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + (((uint64_t)x9 * x63) + ((0x2 * ((uint64_t)x11 * x61)) + (((uint64_t)x13 * x59) + ((0x2 * ((uint64_t)x15 * x57)) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + ((0x2 * ((uint64_t)x21 * x51)) + (((uint64_t)x23 * x49) + ((0x2 * ((uint64_t)x25 * x47)) + (((uint64_t)x27 * x45) + ((0x2 * ((uint64_t)x29 * x43)) + ((uint64_t)x31 * x41)))))))))))))) + (((uint64_t)x33 * x74) + ((0x2 * ((uint64_t)x35 * x75)) + (((uint64_t)x37 * x73) + ((0x2 * ((uint64_t)x39 * x71)) + ((uint64_t)x38 * x69))))));
+ uint64_t x82 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + (((uint64_t)x23 * x47) + (((uint64_t)x25 * x45) + (((uint64_t)x27 * x43) + ((uint64_t)x29 * x41))))))))))))) + (((uint64_t)x31 * x74) + (((uint64_t)x33 * x75) + (((uint64_t)x35 * x73) + (((uint64_t)x37 * x71) + (((uint64_t)x39 * x69) + ((uint64_t)x38 * x67)))))));
+ uint64_t x83 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + (((uint64_t)x9 * x59) + ((0x2 * ((uint64_t)x11 * x57)) + (((uint64_t)x13 * x55) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + (((uint64_t)x19 * x49) + ((0x2 * ((uint64_t)x21 * x47)) + (((uint64_t)x23 * x45) + ((0x2 * ((uint64_t)x25 * x43)) + ((uint64_t)x27 * x41)))))))))))) + ((0x2 * ((uint64_t)x29 * x74)) + ((0x2 * ((uint64_t)x31 * x75)) + (((uint64_t)x33 * x73) + ((0x2 * ((uint64_t)x35 * x71)) + (((uint64_t)x37 * x69) + ((0x2 * ((uint64_t)x39 * x67)) + (0x2 * ((uint64_t)x38 * x65)))))))));
+ uint64_t x84 = ((((uint64_t)x5 * x61) + (((uint64_t)x7 * x59) + (((uint64_t)x9 * x57) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + ((0x2 * ((uint64_t)x15 * x51)) + (((uint64_t)x17 * x49) + (((uint64_t)x19 * x47) + (((uint64_t)x21 * x45) + (((uint64_t)x23 * x43) + ((uint64_t)x25 * x41))))))))))) + (((uint64_t)x27 * x74) + ((0x2 * ((uint64_t)x29 * x75)) + (((uint64_t)x31 * x73) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + ((0x2 * ((uint64_t)x39 * x65)) + ((uint64_t)x38 * x63)))))))));
+ uint64_t x85 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + (((uint64_t)x9 * x55) + ((0x2 * ((uint64_t)x11 * x53)) + ((0x2 * ((uint64_t)x13 * x51)) + ((0x2 * ((uint64_t)x15 * x49)) + ((0x2 * ((uint64_t)x17 * x47)) + (((uint64_t)x19 * x45) + ((0x2 * ((uint64_t)x21 * x43)) + ((uint64_t)x23 * x41)))))))))) + ((0x2 * ((uint64_t)x25 * x74)) + ((0x2 * ((uint64_t)x27 * x75)) + ((0x2 * ((uint64_t)x29 * x73)) + ((0x2 * ((uint64_t)x31 * x71)) + (((uint64_t)x33 * x69) + ((0x2 * ((uint64_t)x35 * x67)) + ((0x2 * ((uint64_t)x37 * x65)) + ((0x2 * ((uint64_t)x39 * x63)) + (0x2 * ((uint64_t)x38 * x61)))))))))));
+ uint64_t x86 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + ((0x2 * ((uint64_t)x11 * x51)) + (((uint64_t)x13 * x49) + ((0x2 * ((uint64_t)x15 * x47)) + (((uint64_t)x17 * x45) + (((uint64_t)x19 * x43) + ((uint64_t)x21 * x41))))))))) + (((uint64_t)x23 * x74) + ((0x2 * ((uint64_t)x25 * x75)) + (((uint64_t)x27 * x73) + ((0x2 * ((uint64_t)x29 * x71)) + (((uint64_t)x31 * x69) + (((uint64_t)x33 * x67) + ((0x2 * ((uint64_t)x35 * x65)) + (((uint64_t)x37 * x63) + ((0x2 * ((uint64_t)x39 * x61)) + ((uint64_t)x38 * x59)))))))))));
+ uint64_t x87 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((0x2 * ((uint64_t)x13 * x47)) + ((0x2 * ((uint64_t)x15 * x45)) + ((0x2 * ((uint64_t)x17 * x43)) + ((uint64_t)x19 * x41)))))))) + ((0x2 * ((uint64_t)x21 * x74)) + ((0x2 * ((uint64_t)x23 * x75)) + ((0x2 * ((uint64_t)x25 * x73)) + ((0x2 * ((uint64_t)x27 * x71)) + ((0x2 * ((uint64_t)x29 * x69)) + ((0x2 * ((uint64_t)x31 * x67)) + ((0x2 * ((uint64_t)x33 * x65)) + ((0x2 * ((uint64_t)x35 * x63)) + ((0x2 * ((uint64_t)x37 * x61)) + ((0x2 * ((uint64_t)x39 * x59)) + (0x2 * ((uint64_t)x38 * x57)))))))))))));
+ uint64_t x88 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + (((uint64_t)x9 * x49) + ((0x2 * ((uint64_t)x11 * x47)) + (((uint64_t)x13 * x45) + ((0x2 * ((uint64_t)x15 * x43)) + ((uint64_t)x17 * x41))))))) + (((uint64_t)x19 * x74) + ((0x2 * ((uint64_t)x21 * x75)) + (((uint64_t)x23 * x73) + ((0x2 * ((uint64_t)x25 * x71)) + (((uint64_t)x27 * x69) + ((0x2 * ((uint64_t)x29 * x67)) + ((0x2 * ((uint64_t)x31 * x65)) + (((uint64_t)x33 * x63) + ((0x2 * ((uint64_t)x35 * x61)) + (((uint64_t)x37 * x59) + ((0x2 * ((uint64_t)x39 * x57)) + ((uint64_t)x38 * x55)))))))))))));
+ uint64_t x89 = ((((uint64_t)x5 * x51) + (((uint64_t)x7 * x49) + (((uint64_t)x9 * x47) + (((uint64_t)x11 * x45) + (((uint64_t)x13 * x43) + ((uint64_t)x15 * x41)))))) + (((uint64_t)x17 * x74) + (((uint64_t)x19 * x75) + (((uint64_t)x21 * x73) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + ((0x2 * ((uint64_t)x29 * x65)) + (((uint64_t)x31 * x63) + (((uint64_t)x33 * x61) + (((uint64_t)x35 * x59) + (((uint64_t)x37 * x57) + (((uint64_t)x39 * x55) + ((uint64_t)x38 * x53))))))))))))));
+ uint64_t x90 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + (((uint64_t)x9 * x45) + ((0x2 * ((uint64_t)x11 * x43)) + ((uint64_t)x13 * x41))))) + ((0x2 * ((uint64_t)x15 * x74)) + ((0x2 * ((uint64_t)x17 * x75)) + (((uint64_t)x19 * x73) + ((0x2 * ((uint64_t)x21 * x71)) + (((uint64_t)x23 * x69) + ((0x2 * ((uint64_t)x25 * x67)) + ((0x2 * ((uint64_t)x27 * x65)) + ((0x2 * ((uint64_t)x29 * x63)) + ((0x2 * ((uint64_t)x31 * x61)) + (((uint64_t)x33 * x59) + ((0x2 * ((uint64_t)x35 * x57)) + (((uint64_t)x37 * x55) + ((0x2 * ((uint64_t)x39 * x53)) + (0x2 * ((uint64_t)x38 * x51))))))))))))))));
+ uint64_t x91 = ((((uint64_t)x5 * x47) + (((uint64_t)x7 * x45) + (((uint64_t)x9 * x43) + ((uint64_t)x11 * x41)))) + (((uint64_t)x13 * x74) + ((0x2 * ((uint64_t)x15 * x75)) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + ((0x2 * ((uint64_t)x25 * x65)) + (((uint64_t)x27 * x63) + ((0x2 * ((uint64_t)x29 * x61)) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + ((0x2 * ((uint64_t)x39 * x51)) + ((uint64_t)x38 * x49))))))))))))))));
+ uint64_t x92 = ((((uint64_t)x5 * x45) + ((0x2 * ((uint64_t)x7 * x43)) + ((uint64_t)x9 * x41))) + ((0x2 * ((uint64_t)x11 * x74)) + ((0x2 * ((uint64_t)x13 * x75)) + ((0x2 * ((uint64_t)x15 * x73)) + ((0x2 * ((uint64_t)x17 * x71)) + (((uint64_t)x19 * x69) + ((0x2 * ((uint64_t)x21 * x67)) + ((0x2 * ((uint64_t)x23 * x65)) + ((0x2 * ((uint64_t)x25 * x63)) + ((0x2 * ((uint64_t)x27 * x61)) + ((0x2 * ((uint64_t)x29 * x59)) + ((0x2 * ((uint64_t)x31 * x57)) + (((uint64_t)x33 * x55) + ((0x2 * ((uint64_t)x35 * x53)) + ((0x2 * ((uint64_t)x37 * x51)) + ((0x2 * ((uint64_t)x39 * x49)) + (0x2 * ((uint64_t)x38 * x47))))))))))))))))));
+ uint64_t x93 = ((((uint64_t)x5 * x43) + ((uint64_t)x7 * x41)) + (((uint64_t)x9 * x74) + ((0x2 * ((uint64_t)x11 * x75)) + (((uint64_t)x13 * x73) + ((0x2 * ((uint64_t)x15 * x71)) + (((uint64_t)x17 * x69) + (((uint64_t)x19 * x67) + ((0x2 * ((uint64_t)x21 * x65)) + (((uint64_t)x23 * x63) + ((0x2 * ((uint64_t)x25 * x61)) + (((uint64_t)x27 * x59) + ((0x2 * ((uint64_t)x29 * x57)) + (((uint64_t)x31 * x55) + (((uint64_t)x33 * x53) + ((0x2 * ((uint64_t)x35 * x51)) + (((uint64_t)x37 * x49) + ((0x2 * ((uint64_t)x39 * x47)) + ((uint64_t)x38 * x45))))))))))))))))));
+ uint64_t x94 = (((uint64_t)x5 * x41) + ((0x2 * ((uint64_t)x7 * x74)) + ((0x2 * ((uint64_t)x9 * x75)) + ((0x2 * ((uint64_t)x11 * x73)) + ((0x2 * ((uint64_t)x13 * x71)) + ((0x2 * ((uint64_t)x15 * x69)) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + ((0x2 * ((uint64_t)x21 * x63)) + ((0x2 * ((uint64_t)x23 * x61)) + ((0x2 * ((uint64_t)x25 * x59)) + ((0x2 * ((uint64_t)x27 * x57)) + ((0x2 * ((uint64_t)x29 * x55)) + ((0x2 * ((uint64_t)x31 * x53)) + ((0x2 * ((uint64_t)x33 * x51)) + ((0x2 * ((uint64_t)x35 * x49)) + ((0x2 * ((uint64_t)x37 * x47)) + ((0x2 * ((uint64_t)x39 * x45)) + (0x2 * ((uint64_t)x38 * x43))))))))))))))))))));
+ uint64_t x95 = (x94 >> 0x1c);
+ uint32_t x96 = ((uint32_t)x94 & 0xfffffff);
+ uint64_t x97 = (x95 + x93);
+ uint64_t x98 = (x97 >> 0x1b);
+ uint32_t x99 = ((uint32_t)x97 & 0x7ffffff);
+ uint64_t x100 = (x98 + x92);
+ uint64_t x101 = (x100 >> 0x1c);
+ uint32_t x102 = ((uint32_t)x100 & 0xfffffff);
+ uint64_t x103 = (x101 + x91);
+ uint64_t x104 = (x103 >> 0x1b);
+ uint32_t x105 = ((uint32_t)x103 & 0x7ffffff);
+ uint64_t x106 = (x104 + x90);
+ uint64_t x107 = (x106 >> 0x1c);
+ uint32_t x108 = ((uint32_t)x106 & 0xfffffff);
+ uint64_t x109 = (x107 + x89);
+ uint64_t x110 = (x109 >> 0x1b);
+ uint32_t x111 = ((uint32_t)x109 & 0x7ffffff);
+ uint64_t x112 = (x110 + x88);
+ uint64_t x113 = (x112 >> 0x1b);
+ uint32_t x114 = ((uint32_t)x112 & 0x7ffffff);
+ uint64_t x115 = (x113 + x87);
+ uint64_t x116 = (x115 >> 0x1c);
+ uint32_t x117 = ((uint32_t)x115 & 0xfffffff);
+ uint64_t x118 = (x116 + x86);
+ uint64_t x119 = (x118 >> 0x1b);
+ uint32_t x120 = ((uint32_t)x118 & 0x7ffffff);
+ uint64_t x121 = (x119 + x85);
+ uint64_t x122 = (x121 >> 0x1c);
+ uint32_t x123 = ((uint32_t)x121 & 0xfffffff);
+ uint64_t x124 = (x122 + x84);
+ uint64_t x125 = (x124 >> 0x1b);
+ uint32_t x126 = ((uint32_t)x124 & 0x7ffffff);
+ uint64_t x127 = (x125 + x83);
+ uint64_t x128 = (x127 >> 0x1c);
+ uint32_t x129 = ((uint32_t)x127 & 0xfffffff);
+ uint64_t x130 = (x128 + x82);
+ uint64_t x131 = (x130 >> 0x1b);
+ uint32_t x132 = ((uint32_t)x130 & 0x7ffffff);
+ uint64_t x133 = (x131 + x81);
+ uint64_t x134 = (x133 >> 0x1b);
+ uint32_t x135 = ((uint32_t)x133 & 0x7ffffff);
+ uint64_t x136 = (x134 + x80);
+ uint64_t x137 = (x136 >> 0x1c);
+ uint32_t x138 = ((uint32_t)x136 & 0xfffffff);
+ uint64_t x139 = (x137 + x79);
+ uint64_t x140 = (x139 >> 0x1b);
+ uint32_t x141 = ((uint32_t)x139 & 0x7ffffff);
+ uint64_t x142 = (x140 + x78);
+ uint64_t x143 = (x142 >> 0x1c);
+ uint32_t x144 = ((uint32_t)x142 & 0xfffffff);
+ uint64_t x145 = (x143 + x77);
+ uint64_t x146 = (x145 >> 0x1b);
+ uint32_t x147 = ((uint32_t)x145 & 0x7ffffff);
+ uint64_t x148 = (x146 + x76);
+ uint64_t x149 = (x148 >> 0x1b);
+ uint32_t x150 = ((uint32_t)x148 & 0x7ffffff);
+ uint64_t x151 = (x96 + x149);
+ uint32_t x152 = (uint32_t) (x151 >> 0x1c);
+ uint32_t x153 = ((uint32_t)x151 & 0xfffffff);
+ uint32_t x154 = (x152 + x99);
+ uint32_t x155 = (x154 >> 0x1b);
+ uint32_t x156 = (x154 & 0x7ffffff);
+ return (Return x150, Return x147, Return x144, Return x141, Return x138, Return x135, Return x132, Return x129, Return x126, Return x123, Return x120, Return x117, Return x114, Return x111, Return x108, Return x105, (x155 + x102), Return x156, Return x153))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * 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 * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e521m1_19limbs/fesquare.c b/src/Specific/solinas32_2e521m1_19limbs/fesquare.c
new file mode 100644
index 000000000..abc81f325
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/fesquare.c
@@ -0,0 +1,122 @@
+static void fesquare(uint32_t out[19], const uint32_t in1[19]) {
+ { const uint32_t x35 = in1[18];
+ { const uint32_t x36 = in1[17];
+ { const uint32_t x34 = in1[16];
+ { const uint32_t x32 = in1[15];
+ { const uint32_t x30 = in1[14];
+ { const uint32_t x28 = in1[13];
+ { const uint32_t x26 = in1[12];
+ { const uint32_t x24 = in1[11];
+ { const uint32_t x22 = in1[10];
+ { const uint32_t x20 = in1[9];
+ { const uint32_t x18 = in1[8];
+ { const uint32_t x16 = in1[7];
+ { const uint32_t x14 = 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 x37 = (((uint64_t)x2 * x35) + ((0x2 * ((uint64_t)x4 * x36)) + (((uint64_t)x6 * x34) + ((0x2 * ((uint64_t)x8 * x32)) + (((uint64_t)x10 * x30) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + (((uint64_t)x16 * x24) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + (((uint64_t)x24 * x16) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + (((uint64_t)x30 * x10) + ((0x2 * ((uint64_t)x32 * x8)) + (((uint64_t)x34 * x6) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x35 * x2)))))))))))))))))));
+ { uint64_t x38 = ((((uint64_t)x2 * x36) + (((uint64_t)x4 * x34) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + ((0x2 * ((uint64_t)x12 * x26)) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + ((0x2 * ((uint64_t)x26 * x12)) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + (((uint64_t)x34 * x4) + ((uint64_t)x36 * x2)))))))))))))))))) + ((uint64_t)x35 * x35));
+ { uint64_t x39 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + (((uint64_t)x6 * x30) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + (((uint64_t)x16 * x20) + ((0x2 * ((uint64_t)x18 * x18)) + (((uint64_t)x20 * x16) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + (((uint64_t)x30 * x6) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + ((0x2 * ((uint64_t)x36 * x35)) + (0x2 * ((uint64_t)x35 * x36))));
+ { uint64_t x40 = ((((uint64_t)x2 * x32) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + ((0x2 * ((uint64_t)x8 * x26)) + (((uint64_t)x10 * x24) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + (((uint64_t)x24 * x10) + ((0x2 * ((uint64_t)x26 * x8)) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x32 * x2)))))))))))))))) + (((uint64_t)x34 * x35) + ((0x2 * ((uint64_t)x36 * x36)) + ((uint64_t)x35 * x34))));
+ { uint64_t x41 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + ((0x2 * ((uint64_t)x32 * x35)) + ((0x2 * ((uint64_t)x34 * x36)) + ((0x2 * ((uint64_t)x36 * x34)) + (0x2 * ((uint64_t)x35 * x32))))));
+ { uint64_t x42 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + (((uint64_t)x6 * x24) + ((0x2 * ((uint64_t)x8 * x22)) + (((uint64_t)x10 * x20) + ((0x2 * ((uint64_t)x12 * x18)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((0x2 * ((uint64_t)x18 * x12)) + (((uint64_t)x20 * x10) + ((0x2 * ((uint64_t)x22 * x8)) + (((uint64_t)x24 * x6) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (((uint64_t)x30 * x35) + ((0x2 * ((uint64_t)x32 * x36)) + (((uint64_t)x34 * x34) + ((0x2 * ((uint64_t)x36 * x32)) + ((uint64_t)x35 * x30))))));
+ { uint64_t x43 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (((uint64_t)x28 * x35) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + ((uint64_t)x35 * x28)))))));
+ { uint64_t x44 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + ((0x2 * ((uint64_t)x8 * x18)) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + ((0x2 * ((uint64_t)x18 * x8)) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + ((0x2 * ((uint64_t)x26 * x35)) + ((0x2 * ((uint64_t)x28 * x36)) + (((uint64_t)x30 * x34) + ((0x2 * ((uint64_t)x32 * x32)) + (((uint64_t)x34 * x30) + ((0x2 * ((uint64_t)x36 * x28)) + (0x2 * ((uint64_t)x35 * x26)))))))));
+ { uint64_t x45 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (((uint64_t)x24 * x35) + ((0x2 * ((uint64_t)x26 * x36)) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + ((0x2 * ((uint64_t)x36 * x26)) + ((uint64_t)x35 * x24)))))))));
+ { uint64_t x46 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + (((uint64_t)x6 * x16) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + (((uint64_t)x16 * x6) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + ((0x2 * ((uint64_t)x22 * x35)) + ((0x2 * ((uint64_t)x24 * x36)) + ((0x2 * ((uint64_t)x26 * x34)) + ((0x2 * ((uint64_t)x28 * x32)) + (((uint64_t)x30 * x30) + ((0x2 * ((uint64_t)x32 * x28)) + ((0x2 * ((uint64_t)x34 * x26)) + ((0x2 * ((uint64_t)x36 * x24)) + (0x2 * ((uint64_t)x35 * x22)))))))))));
+ { uint64_t x47 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (((uint64_t)x20 * x35) + ((0x2 * ((uint64_t)x22 * x36)) + (((uint64_t)x24 * x34) + ((0x2 * ((uint64_t)x26 * x32)) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((0x2 * ((uint64_t)x32 * x26)) + (((uint64_t)x34 * x24) + ((0x2 * ((uint64_t)x36 * x22)) + ((uint64_t)x35 * x20)))))))))));
+ { uint64_t x48 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + ((0x2 * ((uint64_t)x18 * x35)) + ((0x2 * ((uint64_t)x20 * x36)) + ((0x2 * ((uint64_t)x22 * x34)) + ((0x2 * ((uint64_t)x24 * x32)) + ((0x2 * ((uint64_t)x26 * x30)) + ((0x2 * ((uint64_t)x28 * x28)) + ((0x2 * ((uint64_t)x30 * x26)) + ((0x2 * ((uint64_t)x32 * x24)) + ((0x2 * ((uint64_t)x34 * x22)) + ((0x2 * ((uint64_t)x36 * x20)) + (0x2 * ((uint64_t)x35 * x18)))))))))))));
+ { uint64_t x49 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (((uint64_t)x16 * x35) + ((0x2 * ((uint64_t)x18 * x36)) + (((uint64_t)x20 * x34) + ((0x2 * ((uint64_t)x22 * x32)) + (((uint64_t)x24 * x30) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + (((uint64_t)x30 * x24) + ((0x2 * ((uint64_t)x32 * x22)) + (((uint64_t)x34 * x20) + ((0x2 * ((uint64_t)x36 * x18)) + ((uint64_t)x35 * x16)))))))))))));
+ { uint64_t x50 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x14 * x35) + (((uint64_t)x16 * x36) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + ((0x2 * ((uint64_t)x26 * x26)) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + (((uint64_t)x36 * x16) + ((uint64_t)x35 * x14))))))))))))));
+ { uint64_t x51 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + ((0x2 * ((uint64_t)x12 * x35)) + ((0x2 * ((uint64_t)x14 * x36)) + (((uint64_t)x16 * x34) + ((0x2 * ((uint64_t)x18 * x32)) + (((uint64_t)x20 * x30) + ((0x2 * ((uint64_t)x22 * x28)) + ((0x2 * ((uint64_t)x24 * x26)) + ((0x2 * ((uint64_t)x26 * x24)) + ((0x2 * ((uint64_t)x28 * x22)) + (((uint64_t)x30 * x20) + ((0x2 * ((uint64_t)x32 * x18)) + (((uint64_t)x34 * x16) + ((0x2 * ((uint64_t)x36 * x14)) + (0x2 * ((uint64_t)x35 * x12))))))))))))))));
+ { uint64_t x52 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x10 * x35) + ((0x2 * ((uint64_t)x12 * x36)) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + ((0x2 * ((uint64_t)x22 * x26)) + (((uint64_t)x24 * x24) + ((0x2 * ((uint64_t)x26 * x22)) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + ((0x2 * ((uint64_t)x36 * x12)) + ((uint64_t)x35 * x10))))))))))))))));
+ { uint64_t x53 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + ((0x2 * ((uint64_t)x8 * x35)) + ((0x2 * ((uint64_t)x10 * x36)) + ((0x2 * ((uint64_t)x12 * x34)) + ((0x2 * ((uint64_t)x14 * x32)) + (((uint64_t)x16 * x30) + ((0x2 * ((uint64_t)x18 * x28)) + ((0x2 * ((uint64_t)x20 * x26)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + ((0x2 * ((uint64_t)x26 * x20)) + ((0x2 * ((uint64_t)x28 * x18)) + (((uint64_t)x30 * x16) + ((0x2 * ((uint64_t)x32 * x14)) + ((0x2 * ((uint64_t)x34 * x12)) + ((0x2 * ((uint64_t)x36 * x10)) + (0x2 * ((uint64_t)x35 * x8))))))))))))))))));
+ { uint64_t x54 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x6 * x35) + ((0x2 * ((uint64_t)x8 * x36)) + (((uint64_t)x10 * x34) + ((0x2 * ((uint64_t)x12 * x32)) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + ((0x2 * ((uint64_t)x18 * x26)) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + ((0x2 * ((uint64_t)x26 * x18)) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + ((0x2 * ((uint64_t)x32 * x12)) + (((uint64_t)x34 * x10) + ((0x2 * ((uint64_t)x36 * x8)) + ((uint64_t)x35 * x6))))))))))))))))));
+ { uint64_t x55 = (((uint64_t)x2 * x2) + ((0x2 * ((uint64_t)x4 * x35)) + ((0x2 * ((uint64_t)x6 * x36)) + ((0x2 * ((uint64_t)x8 * x34)) + ((0x2 * ((uint64_t)x10 * x32)) + ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + ((0x2 * ((uint64_t)x18 * x24)) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((0x2 * ((uint64_t)x24 * x18)) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + ((0x2 * ((uint64_t)x32 * x10)) + ((0x2 * ((uint64_t)x34 * x8)) + ((0x2 * ((uint64_t)x36 * x6)) + (0x2 * ((uint64_t)x35 * x4))))))))))))))))))));
+ { uint64_t x56 = (x55 >> 0x1c);
+ { uint32_t x57 = ((uint32_t)x55 & 0xfffffff);
+ { uint64_t x58 = (x56 + x54);
+ { uint64_t x59 = (x58 >> 0x1b);
+ { uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
+ { uint64_t x61 = (x59 + x53);
+ { uint64_t x62 = (x61 >> 0x1c);
+ { uint32_t x63 = ((uint32_t)x61 & 0xfffffff);
+ { uint64_t x64 = (x62 + x52);
+ { uint64_t x65 = (x64 >> 0x1b);
+ { uint32_t x66 = ((uint32_t)x64 & 0x7ffffff);
+ { uint64_t x67 = (x65 + x51);
+ { uint64_t x68 = (x67 >> 0x1c);
+ { uint32_t x69 = ((uint32_t)x67 & 0xfffffff);
+ { uint64_t x70 = (x68 + x50);
+ { uint64_t x71 = (x70 >> 0x1b);
+ { uint32_t x72 = ((uint32_t)x70 & 0x7ffffff);
+ { uint64_t x73 = (x71 + x49);
+ { uint64_t x74 = (x73 >> 0x1b);
+ { uint32_t x75 = ((uint32_t)x73 & 0x7ffffff);
+ { uint64_t x76 = (x74 + x48);
+ { uint64_t x77 = (x76 >> 0x1c);
+ { uint32_t x78 = ((uint32_t)x76 & 0xfffffff);
+ { uint64_t x79 = (x77 + x47);
+ { uint64_t x80 = (x79 >> 0x1b);
+ { uint32_t x81 = ((uint32_t)x79 & 0x7ffffff);
+ { uint64_t x82 = (x80 + x46);
+ { uint64_t x83 = (x82 >> 0x1c);
+ { uint32_t x84 = ((uint32_t)x82 & 0xfffffff);
+ { uint64_t x85 = (x83 + x45);
+ { uint64_t x86 = (x85 >> 0x1b);
+ { uint32_t x87 = ((uint32_t)x85 & 0x7ffffff);
+ { uint64_t x88 = (x86 + x44);
+ { uint64_t x89 = (x88 >> 0x1c);
+ { uint32_t x90 = ((uint32_t)x88 & 0xfffffff);
+ { uint64_t x91 = (x89 + x43);
+ { uint64_t x92 = (x91 >> 0x1b);
+ { uint32_t x93 = ((uint32_t)x91 & 0x7ffffff);
+ { uint64_t x94 = (x92 + x42);
+ { uint64_t x95 = (x94 >> 0x1b);
+ { uint32_t x96 = ((uint32_t)x94 & 0x7ffffff);
+ { uint64_t x97 = (x95 + x41);
+ { uint64_t x98 = (x97 >> 0x1c);
+ { uint32_t x99 = ((uint32_t)x97 & 0xfffffff);
+ { uint64_t x100 = (x98 + x40);
+ { uint64_t x101 = (x100 >> 0x1b);
+ { uint32_t x102 = ((uint32_t)x100 & 0x7ffffff);
+ { uint64_t x103 = (x101 + x39);
+ { uint64_t x104 = (x103 >> 0x1c);
+ { uint32_t x105 = ((uint32_t)x103 & 0xfffffff);
+ { uint64_t x106 = (x104 + x38);
+ { uint64_t x107 = (x106 >> 0x1b);
+ { uint32_t x108 = ((uint32_t)x106 & 0x7ffffff);
+ { uint64_t x109 = (x107 + x37);
+ { uint64_t x110 = (x109 >> 0x1b);
+ { uint32_t x111 = ((uint32_t)x109 & 0x7ffffff);
+ { uint64_t x112 = (x57 + x110);
+ { uint32_t x113 = (uint32_t) (x112 >> 0x1c);
+ { uint32_t x114 = ((uint32_t)x112 & 0xfffffff);
+ { uint32_t x115 = (x113 + x60);
+ { uint32_t x116 = (x115 >> 0x1b);
+ { uint32_t x117 = (x115 & 0x7ffffff);
+ out[0] = x114;
+ out[1] = x117;
+ out[2] = (x116 + x63);
+ out[3] = x66;
+ out[4] = x69;
+ out[5] = x72;
+ out[6] = x75;
+ out[7] = x78;
+ out[8] = x81;
+ out[9] = x84;
+ out[10] = x87;
+ out[11] = x90;
+ out[12] = x93;
+ out[13] = x96;
+ out[14] = x99;
+ out[15] = x102;
+ out[16] = x105;
+ out[17] = x108;
+ out[18] = x111;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e521m1_19limbs/fesquareDisplay.log b/src/Specific/solinas32_2e521m1_19limbs/fesquareDisplay.log
new file mode 100644
index 000000000..25f8760f4
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1_19limbs/fesquareDisplay.log
@@ -0,0 +1,88 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x35, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x37 = (((uint64_t)x2 * x35) + ((0x2 * ((uint64_t)x4 * x36)) + (((uint64_t)x6 * x34) + ((0x2 * ((uint64_t)x8 * x32)) + (((uint64_t)x10 * x30) + ((0x2 * ((uint64_t)x12 * x28)) + ((0x2 * ((uint64_t)x14 * x26)) + (((uint64_t)x16 * x24) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + (((uint64_t)x24 * x16) + ((0x2 * ((uint64_t)x26 * x14)) + ((0x2 * ((uint64_t)x28 * x12)) + (((uint64_t)x30 * x10) + ((0x2 * ((uint64_t)x32 * x8)) + (((uint64_t)x34 * x6) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x35 * x2)))))))))))))))))));
+ uint64_t x38 = ((((uint64_t)x2 * x36) + (((uint64_t)x4 * x34) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + (((uint64_t)x10 * x28) + ((0x2 * ((uint64_t)x12 * x26)) + (((uint64_t)x14 * x24) + (((uint64_t)x16 * x22) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + (((uint64_t)x22 * x16) + (((uint64_t)x24 * x14) + ((0x2 * ((uint64_t)x26 * x12)) + (((uint64_t)x28 * x10) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + (((uint64_t)x34 * x4) + ((uint64_t)x36 * x2)))))))))))))))))) + ((uint64_t)x35 * x35));
+ uint64_t x39 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + (((uint64_t)x6 * x30) + ((0x2 * ((uint64_t)x8 * x28)) + ((0x2 * ((uint64_t)x10 * x26)) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + (((uint64_t)x16 * x20) + ((0x2 * ((uint64_t)x18 * x18)) + (((uint64_t)x20 * x16) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + ((0x2 * ((uint64_t)x26 * x10)) + ((0x2 * ((uint64_t)x28 * x8)) + (((uint64_t)x30 * x6) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + ((0x2 * ((uint64_t)x36 * x35)) + (0x2 * ((uint64_t)x35 * x36))));
+ uint64_t x40 = ((((uint64_t)x2 * x32) + (((uint64_t)x4 * x30) + (((uint64_t)x6 * x28) + ((0x2 * ((uint64_t)x8 * x26)) + (((uint64_t)x10 * x24) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + (((uint64_t)x24 * x10) + ((0x2 * ((uint64_t)x26 * x8)) + (((uint64_t)x28 * x6) + (((uint64_t)x30 * x4) + ((uint64_t)x32 * x2)))))))))))))))) + (((uint64_t)x34 * x35) + ((0x2 * ((uint64_t)x36 * x36)) + ((uint64_t)x35 * x34))));
+ uint64_t x41 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + ((0x2 * ((uint64_t)x6 * x26)) + ((0x2 * ((uint64_t)x8 * x24)) + ((0x2 * ((uint64_t)x10 * x22)) + ((0x2 * ((uint64_t)x12 * x20)) + ((0x2 * ((uint64_t)x14 * x18)) + (((uint64_t)x16 * x16) + ((0x2 * ((uint64_t)x18 * x14)) + ((0x2 * ((uint64_t)x20 * x12)) + ((0x2 * ((uint64_t)x22 * x10)) + ((0x2 * ((uint64_t)x24 * x8)) + ((0x2 * ((uint64_t)x26 * x6)) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + ((0x2 * ((uint64_t)x32 * x35)) + ((0x2 * ((uint64_t)x34 * x36)) + ((0x2 * ((uint64_t)x36 * x34)) + (0x2 * ((uint64_t)x35 * x32))))));
+ uint64_t x42 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + (((uint64_t)x6 * x24) + ((0x2 * ((uint64_t)x8 * x22)) + (((uint64_t)x10 * x20) + ((0x2 * ((uint64_t)x12 * x18)) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + ((0x2 * ((uint64_t)x18 * x12)) + (((uint64_t)x20 * x10) + ((0x2 * ((uint64_t)x22 * x8)) + (((uint64_t)x24 * x6) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (((uint64_t)x30 * x35) + ((0x2 * ((uint64_t)x32 * x36)) + (((uint64_t)x34 * x34) + ((0x2 * ((uint64_t)x36 * x32)) + ((uint64_t)x35 * x30))))));
+ uint64_t x43 = ((((uint64_t)x2 * x26) + (((uint64_t)x4 * x24) + (((uint64_t)x6 * x22) + (((uint64_t)x8 * x20) + (((uint64_t)x10 * x18) + (((uint64_t)x12 * x16) + (((uint64_t)x14 * x14) + (((uint64_t)x16 * x12) + (((uint64_t)x18 * x10) + (((uint64_t)x20 * x8) + (((uint64_t)x22 * x6) + (((uint64_t)x24 * x4) + ((uint64_t)x26 * x2))))))))))))) + (((uint64_t)x28 * x35) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + ((uint64_t)x35 * x28)))))));
+ uint64_t x44 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + ((0x2 * ((uint64_t)x8 * x18)) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + ((0x2 * ((uint64_t)x18 * x8)) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + ((0x2 * ((uint64_t)x26 * x35)) + ((0x2 * ((uint64_t)x28 * x36)) + (((uint64_t)x30 * x34) + ((0x2 * ((uint64_t)x32 * x32)) + (((uint64_t)x34 * x30) + ((0x2 * ((uint64_t)x36 * x28)) + (0x2 * ((uint64_t)x35 * x26)))))))));
+ uint64_t x45 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (((uint64_t)x24 * x35) + ((0x2 * ((uint64_t)x26 * x36)) + (((uint64_t)x28 * x34) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + (((uint64_t)x34 * x28) + ((0x2 * ((uint64_t)x36 * x26)) + ((uint64_t)x35 * x24)))))))));
+ uint64_t x46 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + (((uint64_t)x6 * x16) + ((0x2 * ((uint64_t)x8 * x14)) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + ((0x2 * ((uint64_t)x14 * x8)) + (((uint64_t)x16 * x6) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + ((0x2 * ((uint64_t)x22 * x35)) + ((0x2 * ((uint64_t)x24 * x36)) + ((0x2 * ((uint64_t)x26 * x34)) + ((0x2 * ((uint64_t)x28 * x32)) + (((uint64_t)x30 * x30) + ((0x2 * ((uint64_t)x32 * x28)) + ((0x2 * ((uint64_t)x34 * x26)) + ((0x2 * ((uint64_t)x36 * x24)) + (0x2 * ((uint64_t)x35 * x22)))))))))));
+ uint64_t x47 = ((((uint64_t)x2 * x18) + (((uint64_t)x4 * x16) + (((uint64_t)x6 * x14) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + (((uint64_t)x14 * x6) + (((uint64_t)x16 * x4) + ((uint64_t)x18 * x2))))))))) + (((uint64_t)x20 * x35) + ((0x2 * ((uint64_t)x22 * x36)) + (((uint64_t)x24 * x34) + ((0x2 * ((uint64_t)x26 * x32)) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + ((0x2 * ((uint64_t)x32 * x26)) + (((uint64_t)x34 * x24) + ((0x2 * ((uint64_t)x36 * x22)) + ((uint64_t)x35 * x20)))))))))));
+ uint64_t x48 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + ((0x2 * ((uint64_t)x8 * x10)) + ((0x2 * ((uint64_t)x10 * x8)) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + ((0x2 * ((uint64_t)x18 * x35)) + ((0x2 * ((uint64_t)x20 * x36)) + ((0x2 * ((uint64_t)x22 * x34)) + ((0x2 * ((uint64_t)x24 * x32)) + ((0x2 * ((uint64_t)x26 * x30)) + ((0x2 * ((uint64_t)x28 * x28)) + ((0x2 * ((uint64_t)x30 * x26)) + ((0x2 * ((uint64_t)x32 * x24)) + ((0x2 * ((uint64_t)x34 * x22)) + ((0x2 * ((uint64_t)x36 * x20)) + (0x2 * ((uint64_t)x35 * x18)))))))))))));
+ uint64_t x49 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (((uint64_t)x16 * x35) + ((0x2 * ((uint64_t)x18 * x36)) + (((uint64_t)x20 * x34) + ((0x2 * ((uint64_t)x22 * x32)) + (((uint64_t)x24 * x30) + ((0x2 * ((uint64_t)x26 * x28)) + ((0x2 * ((uint64_t)x28 * x26)) + (((uint64_t)x30 * x24) + ((0x2 * ((uint64_t)x32 * x22)) + (((uint64_t)x34 * x20) + ((0x2 * ((uint64_t)x36 * x18)) + ((uint64_t)x35 * x16)))))))))))));
+ uint64_t x50 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (((uint64_t)x14 * x35) + (((uint64_t)x16 * x36) + (((uint64_t)x18 * x34) + (((uint64_t)x20 * x32) + (((uint64_t)x22 * x30) + (((uint64_t)x24 * x28) + ((0x2 * ((uint64_t)x26 * x26)) + (((uint64_t)x28 * x24) + (((uint64_t)x30 * x22) + (((uint64_t)x32 * x20) + (((uint64_t)x34 * x18) + (((uint64_t)x36 * x16) + ((uint64_t)x35 * x14))))))))))))));
+ uint64_t x51 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + ((0x2 * ((uint64_t)x12 * x35)) + ((0x2 * ((uint64_t)x14 * x36)) + (((uint64_t)x16 * x34) + ((0x2 * ((uint64_t)x18 * x32)) + (((uint64_t)x20 * x30) + ((0x2 * ((uint64_t)x22 * x28)) + ((0x2 * ((uint64_t)x24 * x26)) + ((0x2 * ((uint64_t)x26 * x24)) + ((0x2 * ((uint64_t)x28 * x22)) + (((uint64_t)x30 * x20) + ((0x2 * ((uint64_t)x32 * x18)) + (((uint64_t)x34 * x16) + ((0x2 * ((uint64_t)x36 * x14)) + (0x2 * ((uint64_t)x35 * x12))))))))))))))));
+ uint64_t x52 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (((uint64_t)x10 * x35) + ((0x2 * ((uint64_t)x12 * x36)) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + ((0x2 * ((uint64_t)x22 * x26)) + (((uint64_t)x24 * x24) + ((0x2 * ((uint64_t)x26 * x22)) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + ((0x2 * ((uint64_t)x36 * x12)) + ((uint64_t)x35 * x10))))))))))))))));
+ uint64_t x53 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + ((0x2 * ((uint64_t)x8 * x35)) + ((0x2 * ((uint64_t)x10 * x36)) + ((0x2 * ((uint64_t)x12 * x34)) + ((0x2 * ((uint64_t)x14 * x32)) + (((uint64_t)x16 * x30) + ((0x2 * ((uint64_t)x18 * x28)) + ((0x2 * ((uint64_t)x20 * x26)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + ((0x2 * ((uint64_t)x26 * x20)) + ((0x2 * ((uint64_t)x28 * x18)) + (((uint64_t)x30 * x16) + ((0x2 * ((uint64_t)x32 * x14)) + ((0x2 * ((uint64_t)x34 * x12)) + ((0x2 * ((uint64_t)x36 * x10)) + (0x2 * ((uint64_t)x35 * x8))))))))))))))))));
+ uint64_t x54 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (((uint64_t)x6 * x35) + ((0x2 * ((uint64_t)x8 * x36)) + (((uint64_t)x10 * x34) + ((0x2 * ((uint64_t)x12 * x32)) + (((uint64_t)x14 * x30) + (((uint64_t)x16 * x28) + ((0x2 * ((uint64_t)x18 * x26)) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + ((0x2 * ((uint64_t)x26 * x18)) + (((uint64_t)x28 * x16) + (((uint64_t)x30 * x14) + ((0x2 * ((uint64_t)x32 * x12)) + (((uint64_t)x34 * x10) + ((0x2 * ((uint64_t)x36 * x8)) + ((uint64_t)x35 * x6))))))))))))))))));
+ uint64_t x55 = (((uint64_t)x2 * x2) + ((0x2 * ((uint64_t)x4 * x35)) + ((0x2 * ((uint64_t)x6 * x36)) + ((0x2 * ((uint64_t)x8 * x34)) + ((0x2 * ((uint64_t)x10 * x32)) + ((0x2 * ((uint64_t)x12 * x30)) + ((0x2 * ((uint64_t)x14 * x28)) + ((0x2 * ((uint64_t)x16 * x26)) + ((0x2 * ((uint64_t)x18 * x24)) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + ((0x2 * ((uint64_t)x24 * x18)) + ((0x2 * ((uint64_t)x26 * x16)) + ((0x2 * ((uint64_t)x28 * x14)) + ((0x2 * ((uint64_t)x30 * x12)) + ((0x2 * ((uint64_t)x32 * x10)) + ((0x2 * ((uint64_t)x34 * x8)) + ((0x2 * ((uint64_t)x36 * x6)) + (0x2 * ((uint64_t)x35 * x4))))))))))))))))))));
+ uint64_t x56 = (x55 >> 0x1c);
+ uint32_t x57 = ((uint32_t)x55 & 0xfffffff);
+ uint64_t x58 = (x56 + x54);
+ uint64_t x59 = (x58 >> 0x1b);
+ uint32_t x60 = ((uint32_t)x58 & 0x7ffffff);
+ uint64_t x61 = (x59 + x53);
+ uint64_t x62 = (x61 >> 0x1c);
+ uint32_t x63 = ((uint32_t)x61 & 0xfffffff);
+ uint64_t x64 = (x62 + x52);
+ uint64_t x65 = (x64 >> 0x1b);
+ uint32_t x66 = ((uint32_t)x64 & 0x7ffffff);
+ uint64_t x67 = (x65 + x51);
+ uint64_t x68 = (x67 >> 0x1c);
+ uint32_t x69 = ((uint32_t)x67 & 0xfffffff);
+ uint64_t x70 = (x68 + x50);
+ uint64_t x71 = (x70 >> 0x1b);
+ uint32_t x72 = ((uint32_t)x70 & 0x7ffffff);
+ uint64_t x73 = (x71 + x49);
+ uint64_t x74 = (x73 >> 0x1b);
+ uint32_t x75 = ((uint32_t)x73 & 0x7ffffff);
+ uint64_t x76 = (x74 + x48);
+ uint64_t x77 = (x76 >> 0x1c);
+ uint32_t x78 = ((uint32_t)x76 & 0xfffffff);
+ uint64_t x79 = (x77 + x47);
+ uint64_t x80 = (x79 >> 0x1b);
+ uint32_t x81 = ((uint32_t)x79 & 0x7ffffff);
+ uint64_t x82 = (x80 + x46);
+ uint64_t x83 = (x82 >> 0x1c);
+ uint32_t x84 = ((uint32_t)x82 & 0xfffffff);
+ uint64_t x85 = (x83 + x45);
+ uint64_t x86 = (x85 >> 0x1b);
+ uint32_t x87 = ((uint32_t)x85 & 0x7ffffff);
+ uint64_t x88 = (x86 + x44);
+ uint64_t x89 = (x88 >> 0x1c);
+ uint32_t x90 = ((uint32_t)x88 & 0xfffffff);
+ uint64_t x91 = (x89 + x43);
+ uint64_t x92 = (x91 >> 0x1b);
+ uint32_t x93 = ((uint32_t)x91 & 0x7ffffff);
+ uint64_t x94 = (x92 + x42);
+ uint64_t x95 = (x94 >> 0x1b);
+ uint32_t x96 = ((uint32_t)x94 & 0x7ffffff);
+ uint64_t x97 = (x95 + x41);
+ uint64_t x98 = (x97 >> 0x1c);
+ uint32_t x99 = ((uint32_t)x97 & 0xfffffff);
+ uint64_t x100 = (x98 + x40);
+ uint64_t x101 = (x100 >> 0x1b);
+ uint32_t x102 = ((uint32_t)x100 & 0x7ffffff);
+ uint64_t x103 = (x101 + x39);
+ uint64_t x104 = (x103 >> 0x1c);
+ uint32_t x105 = ((uint32_t)x103 & 0xfffffff);
+ uint64_t x106 = (x104 + x38);
+ uint64_t x107 = (x106 >> 0x1b);
+ uint32_t x108 = ((uint32_t)x106 & 0x7ffffff);
+ uint64_t x109 = (x107 + x37);
+ uint64_t x110 = (x109 >> 0x1b);
+ uint32_t x111 = ((uint32_t)x109 & 0x7ffffff);
+ uint64_t x112 = (x57 + x110);
+ uint32_t x113 = (uint32_t) (x112 >> 0x1c);
+ uint32_t x114 = ((uint32_t)x112 & 0xfffffff);
+ uint32_t x115 = (x113 + x60);
+ uint32_t x116 = (x115 >> 0x1b);
+ uint32_t x117 = (x115 & 0x7ffffff);
+ return (Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, Return x72, Return x69, Return x66, (x116 + x63), Return x117, Return x114))
+x
+ : word32 * word32 * word32 * word32 * word32 * 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 * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)