aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Specific/solinas32_2e130m5/feadd.c18
-rw-r--r--src/Specific/solinas32_2e130m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e130m5/fesub.c18
-rw-r--r--src/Specific/solinas32_2e130m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m3/feadd.c18
-rw-r--r--src/Specific/solinas32_2e150m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m3/fesub.c18
-rw-r--r--src/Specific/solinas32_2e150m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e488m17/fesquare.c152
-rw-r--r--src/Specific/solinas32_2e489m21/freeze.c139
-rw-r--r--src/Specific/solinas32_2e489m21/freezeDisplay.log4
-rw-r--r--src/Specific/solinas32_2e495m31/freeze.c4
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/freeze.c124
-rw-r--r--src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.log4
-rw-r--r--src/Specific/solinas32_2e511m481/freeze.c144
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/freeze.c124
-rw-r--r--src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.log4
-rw-r--r--src/Specific/solinas32_2e512m569/fesquare.c152
-rw-r--r--src/Specific/solinas32_2e512m569/freeze.c4
-rw-r--r--src/Specific/solinas32_2e512m569/freezeDisplay.log4
-rw-r--r--src/Specific/solinas32_2e521m1/femul.c148
-rw-r--r--src/Specific/solinas64_2e127m1/feadd.c12
-rw-r--r--src/Specific/solinas64_2e127m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e127m1/fesub.c12
-rw-r--r--src/Specific/solinas64_2e127m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e129m25/feadd.c12
-rw-r--r--src/Specific/solinas64_2e129m25/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e129m25/fesub.c12
-rw-r--r--src/Specific/solinas64_2e129m25/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e130m5/feadd.c12
-rw-r--r--src/Specific/solinas64_2e130m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e130m5/fesub.c12
-rw-r--r--src/Specific/solinas64_2e130m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e137m13/feadd.c15
-rw-r--r--src/Specific/solinas64_2e137m13/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e137m13/fesub.c15
-rw-r--r--src/Specific/solinas64_2e137m13/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e140m27/feadd.c15
-rw-r--r--src/Specific/solinas64_2e140m27/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e140m27/fesub.c15
-rw-r--r--src/Specific/solinas64_2e140m27/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e141m9/feadd.c12
-rw-r--r--src/Specific/solinas64_2e141m9/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e141m9/fesub.c12
-rw-r--r--src/Specific/solinas64_2e141m9/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e150m3/feadd.c12
-rw-r--r--src/Specific/solinas64_2e150m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e150m3/fesub.c12
-rw-r--r--src/Specific/solinas64_2e150m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e150m5/feadd.c12
-rw-r--r--src/Specific/solinas64_2e150m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e150m5/fesub.c12
-rw-r--r--src/Specific/solinas64_2e150m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e152m17/feadd.c15
-rw-r--r--src/Specific/solinas64_2e152m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e152m17/fesub.c15
-rw-r--r--src/Specific/solinas64_2e152m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e158m15/feadd.c15
-rw-r--r--src/Specific/solinas64_2e158m15/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e158m15/fesub.c15
-rw-r--r--src/Specific/solinas64_2e158m15/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e165m25/feadd.c12
-rw-r--r--src/Specific/solinas64_2e165m25/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e165m25/fesub.c12
-rw-r--r--src/Specific/solinas64_2e165m25/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e166m5/feadd.c12
-rw-r--r--src/Specific/solinas64_2e166m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e166m5/fesub.c12
-rw-r--r--src/Specific/solinas64_2e166m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e171m19/feadd.c12
-rw-r--r--src/Specific/solinas64_2e171m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e171m19/fesub.c12
-rw-r--r--src/Specific/solinas64_2e171m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e174m17/feadd.c12
-rw-r--r--src/Specific/solinas64_2e174m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e174m17/fesub.c12
-rw-r--r--src/Specific/solinas64_2e174m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e174m3/feadd.c12
-rw-r--r--src/Specific/solinas64_2e174m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e174m3/fesub.c12
-rw-r--r--src/Specific/solinas64_2e174m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e189m25/feadd.c15
-rw-r--r--src/Specific/solinas64_2e189m25/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e189m25/fesub.c15
-rw-r--r--src/Specific/solinas64_2e189m25/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e190m11/feadd.c15
-rw-r--r--src/Specific/solinas64_2e190m11/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e190m11/fesub.c15
-rw-r--r--src/Specific/solinas64_2e190m11/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e191m19/feadd.c18
-rw-r--r--src/Specific/solinas64_2e191m19/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e191m19/fesub.c18
-rw-r--r--src/Specific/solinas64_2e191m19/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/feadd.c15
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/fesub.c15
-rw-r--r--src/Specific/solinas64_2e192m2e64m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e194m33/feadd.c15
-rw-r--r--src/Specific/solinas64_2e194m33/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e194m33/fesub.c15
-rw-r--r--src/Specific/solinas64_2e194m33/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e196m15/feadd.c15
-rw-r--r--src/Specific/solinas64_2e196m15/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e196m15/fesub.c15
-rw-r--r--src/Specific/solinas64_2e196m15/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e198m17/feadd.c15
-rw-r--r--src/Specific/solinas64_2e198m17/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e198m17/fesub.c15
-rw-r--r--src/Specific/solinas64_2e198m17/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/feadd.c15
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/fesub.c15
-rw-r--r--src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e206m5/feadd.c15
-rw-r--r--src/Specific/solinas64_2e206m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e206m5/fesub.c15
-rw-r--r--src/Specific/solinas64_2e206m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e212m29/feadd.c15
-rw-r--r--src/Specific/solinas64_2e212m29/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e212m29/fesub.c15
-rw-r--r--src/Specific/solinas64_2e212m29/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e213m3/feadd.c15
-rw-r--r--src/Specific/solinas64_2e213m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e213m3/fesub.c15
-rw-r--r--src/Specific/solinas64_2e213m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/feadd.c15
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/fesub.c15
-rw-r--r--src/Specific/solinas64_2e216m2e108m1/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e221m3/feadd.c15
-rw-r--r--src/Specific/solinas64_2e221m3/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e221m3/fesub.c15
-rw-r--r--src/Specific/solinas64_2e221m3/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e222m117/feadd.c15
-rw-r--r--src/Specific/solinas64_2e222m117/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e222m117/fesub.c15
-rw-r--r--src/Specific/solinas64_2e222m117/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/feadd.c15
-rw-r--r--src/Specific/solinas64_2e224m2e96p1/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e226m5/feadd.c15
-rw-r--r--src/Specific/solinas64_2e226m5/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e226m5/fesub.c15
-rw-r--r--src/Specific/solinas64_2e226m5/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e230m27/feadd.c15
-rw-r--r--src/Specific/solinas64_2e230m27/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e230m27/fesub.c15
-rw-r--r--src/Specific/solinas64_2e230m27/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e235m15/feadd.c18
-rw-r--r--src/Specific/solinas64_2e235m15/feaddDisplay.log7
149 files changed, 2446 insertions, 12 deletions
diff --git a/src/Specific/solinas32_2e130m5/feadd.c b/src/Specific/solinas32_2e130m5/feadd.c
new file mode 100644
index 000000000..4db430361
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5/feadd.c
@@ -0,0 +1,18 @@
+static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
+ { const uint32_t x10 = 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 x18 = in2[4];
+ { const uint32_t x19 = in2[3];
+ { const uint32_t x17 = in2[2];
+ { const uint32_t x15 = in2[1];
+ { const uint32_t x13 = in2[0];
+ out[0] = (x5 + x13);
+ out[1] = (x7 + x15);
+ out[2] = (x9 + x17);
+ out[3] = (x11 + x19);
+ out[4] = (x10 + x18);
+ }}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e130m5/feaddDisplay.log b/src/Specific/solinas32_2e130m5/feaddDisplay.log
new file mode 100644
index 000000000..eaf25ecd1
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
+ ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e130m5/fesub.c b/src/Specific/solinas32_2e130m5/fesub.c
new file mode 100644
index 000000000..3ff5011b6
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5/fesub.c
@@ -0,0 +1,18 @@
+static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
+ { const uint32_t x10 = 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 x18 = in2[4];
+ { const uint32_t x19 = in2[3];
+ { const uint32_t x17 = in2[2];
+ { const uint32_t x15 = in2[1];
+ { const uint32_t x13 = in2[0];
+ out[0] = ((Const 134217718 + x5) - x13);
+ out[1] = ((0x7fffffe + x7) - x15);
+ out[2] = ((0x7fffffe + x9) - x17);
+ out[3] = ((0x7fffffe + x11) - x19);
+ out[4] = ((0x7fffffe + x10) - x18);
+ }}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e130m5/fesubDisplay.log b/src/Specific/solinas32_2e130m5/fesubDisplay.log
new file mode 100644
index 000000000..f5e24bedf
--- /dev/null
+++ b/src/Specific/solinas32_2e130m5/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
+ (((0x7fffffe + x10) - x18), ((0x7fffffe + x11) - x19), ((0x7fffffe + x9) - x17), ((0x7fffffe + x7) - x15), ((Const 134217718 + x5) - x13)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3/feadd.c b/src/Specific/solinas32_2e150m3/feadd.c
new file mode 100644
index 000000000..4db430361
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3/feadd.c
@@ -0,0 +1,18 @@
+static void feadd(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
+ { const uint32_t x10 = 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 x18 = in2[4];
+ { const uint32_t x19 = in2[3];
+ { const uint32_t x17 = in2[2];
+ { const uint32_t x15 = in2[1];
+ { const uint32_t x13 = in2[0];
+ out[0] = (x5 + x13);
+ out[1] = (x7 + x15);
+ out[2] = (x9 + x17);
+ out[3] = (x11 + x19);
+ out[4] = (x10 + x18);
+ }}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3/feaddDisplay.log b/src/Specific/solinas32_2e150m3/feaddDisplay.log
new file mode 100644
index 000000000..eaf25ecd1
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
+ ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3/fesub.c b/src/Specific/solinas32_2e150m3/fesub.c
new file mode 100644
index 000000000..d8aff52cd
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3/fesub.c
@@ -0,0 +1,18 @@
+static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5]) {
+ { const uint32_t x10 = 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 x18 = in2[4];
+ { const uint32_t x19 = in2[3];
+ { const uint32_t x17 = in2[2];
+ { const uint32_t x15 = in2[1];
+ { const uint32_t x13 = in2[0];
+ out[0] = ((Const 2147483642 + x5) - x13);
+ out[1] = ((Const 2147483646 + x7) - x15);
+ out[2] = ((Const 2147483646 + x9) - x17);
+ out[3] = ((Const 2147483646 + x11) - x19);
+ out[4] = ((Const 2147483646 + x10) - x18);
+ }}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3/fesubDisplay.log b/src/Specific/solinas32_2e150m3/fesubDisplay.log
new file mode 100644
index 000000000..135560b1b
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
+ (((Const 2147483646 + x10) - x18), ((Const 2147483646 + x11) - x19), ((Const 2147483646 + x9) - x17), ((Const 2147483646 + x7) - x15), ((Const 2147483642 + x5) - x13)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e488m17/fesquare.c b/src/Specific/solinas32_2e488m17/fesquare.c
new file mode 100644
index 000000000..424bf33d9
--- /dev/null
+++ b/src/Specific/solinas32_2e488m17/fesquare.c
@@ -0,0 +1,152 @@
+static void fesquare(uint32_t out[24], const uint32_t in1[24]) {
+ { const uint32_t x45 = in1[23];
+ { const uint32_t x46 = in1[22];
+ { const uint32_t x44 = in1[21];
+ { const uint32_t x42 = in1[20];
+ { const uint32_t x40 = in1[19];
+ { const uint32_t x38 = 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 x47 = (((uint64_t)x2 * x45) + ((0x2 * ((uint64_t)x4 * x46)) + (((uint64_t)x6 * x44) + (((uint64_t)x8 * x42) + ((0x2 * ((uint64_t)x10 * x40)) + (((uint64_t)x12 * x38) + (((uint64_t)x14 * x36) + ((0x2 * ((uint64_t)x16 * x34)) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + ((0x2 * ((uint64_t)x22 * x28)) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((0x2 * ((uint64_t)x28 * x22)) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((0x2 * ((uint64_t)x34 * x16)) + (((uint64_t)x36 * x14) + (((uint64_t)x38 * x12) + ((0x2 * ((uint64_t)x40 * x10)) + (((uint64_t)x42 * x8) + (((uint64_t)x44 * x6) + ((0x2 * ((uint64_t)x46 * x4)) + ((uint64_t)x45 * x2))))))))))))))))))))))));
+ { uint64_t x48 = ((((uint64_t)x2 * x46) + (((uint64_t)x4 * x44) + (((uint64_t)x6 * x42) + (((uint64_t)x8 * x40) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + (((uint64_t)x40 * x8) + (((uint64_t)x42 * x6) + (((uint64_t)x44 * x4) + ((uint64_t)x46 * x2))))))))))))))))))))))) + (0x11 * ((uint64_t)x45 * x45)));
+ { uint64_t x49 = ((((uint64_t)x2 * x44) + ((0x2 * ((uint64_t)x4 * x42)) + ((0x2 * ((uint64_t)x6 * x40)) + (((uint64_t)x8 * x38) + ((0x2 * ((uint64_t)x10 * x36)) + ((0x2 * ((uint64_t)x12 * x34)) + (((uint64_t)x14 * x32) + ((0x2 * ((uint64_t)x16 * x30)) + ((0x2 * ((uint64_t)x18 * x28)) + (((uint64_t)x20 * x26) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (((uint64_t)x26 * x20) + ((0x2 * ((uint64_t)x28 * x18)) + ((0x2 * ((uint64_t)x30 * x16)) + (((uint64_t)x32 * x14) + ((0x2 * ((uint64_t)x34 * x12)) + ((0x2 * ((uint64_t)x36 * x10)) + (((uint64_t)x38 * x8) + ((0x2 * ((uint64_t)x40 * x6)) + ((0x2 * ((uint64_t)x42 * x4)) + ((uint64_t)x44 * x2)))))))))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x46 * x45)) + (0x2 * ((uint64_t)x45 * x46)))));
+ { uint64_t x50 = ((((uint64_t)x2 * x42) + ((0x2 * ((uint64_t)x4 * x40)) + (((uint64_t)x6 * x38) + (((uint64_t)x8 * x36) + ((0x2 * ((uint64_t)x10 * x34)) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + ((0x2 * ((uint64_t)x34 * x10)) + (((uint64_t)x36 * x8) + (((uint64_t)x38 * x6) + ((0x2 * ((uint64_t)x40 * x4)) + ((uint64_t)x42 * x2))))))))))))))))))))) + (0x11 * (((uint64_t)x44 * x45) + ((0x2 * ((uint64_t)x46 * x46)) + ((uint64_t)x45 * x44)))));
+ { uint64_t x51 = ((((uint64_t)x2 * x40) + (((uint64_t)x4 * x38) + (((uint64_t)x6 * x36) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + (((uint64_t)x36 * x6) + (((uint64_t)x38 * x4) + ((uint64_t)x40 * x2)))))))))))))))))))) + (0x11 * (((uint64_t)x42 * x45) + (((uint64_t)x44 * x46) + (((uint64_t)x46 * x44) + ((uint64_t)x45 * x42))))));
+ { uint64_t x52 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + (((uint64_t)x8 * x32) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + (((uint64_t)x14 * x26) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + (((uint64_t)x26 * x14) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + (((uint64_t)x32 * x8) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x40 * x45)) + ((0x2 * ((uint64_t)x42 * x46)) + (((uint64_t)x44 * x44) + ((0x2 * ((uint64_t)x46 * x42)) + (0x2 * ((uint64_t)x45 * x40))))))));
+ { uint64_t x53 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + ((0x2 * ((uint64_t)x10 * x28)) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((0x2 * ((uint64_t)x28 * x10)) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x11 * (((uint64_t)x38 * x45) + ((0x2 * ((uint64_t)x40 * x46)) + (((uint64_t)x42 * x44) + (((uint64_t)x44 * x42) + ((0x2 * ((uint64_t)x46 * x40)) + ((uint64_t)x45 * x38))))))));
+ { uint64_t x54 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x11 * (((uint64_t)x36 * x45) + (((uint64_t)x38 * x46) + (((uint64_t)x40 * x44) + (((uint64_t)x42 * x42) + (((uint64_t)x44 * x40) + (((uint64_t)x46 * x38) + ((uint64_t)x45 * x36)))))))));
+ { uint64_t x55 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + (((uint64_t)x8 * x26) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (((uint64_t)x26 * x8) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x34 * x45)) + ((0x2 * ((uint64_t)x36 * x46)) + (((uint64_t)x38 * x44) + ((0x2 * ((uint64_t)x40 * x42)) + ((0x2 * ((uint64_t)x42 * x40)) + (((uint64_t)x44 * x38) + ((0x2 * ((uint64_t)x46 * x36)) + (0x2 * ((uint64_t)x45 * x34)))))))))));
+ { uint64_t x56 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x11 * (((uint64_t)x32 * x45) + ((0x2 * ((uint64_t)x34 * x46)) + (((uint64_t)x36 * x44) + (((uint64_t)x38 * x42) + ((0x2 * ((uint64_t)x40 * x40)) + (((uint64_t)x42 * x38) + (((uint64_t)x44 * x36) + ((0x2 * ((uint64_t)x46 * x34)) + ((uint64_t)x45 * x32)))))))))));
+ { uint64_t x57 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x11 * (((uint64_t)x30 * x45) + (((uint64_t)x32 * x46) + (((uint64_t)x34 * x44) + (((uint64_t)x36 * x42) + (((uint64_t)x38 * x40) + (((uint64_t)x40 * x38) + (((uint64_t)x42 * x36) + (((uint64_t)x44 * x34) + (((uint64_t)x46 * x32) + ((uint64_t)x45 * x30))))))))))));
+ { uint64_t x58 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x11 * ((0x2 * ((uint64_t)x28 * x45)) + ((0x2 * ((uint64_t)x30 * x46)) + (((uint64_t)x32 * x44) + ((0x2 * ((uint64_t)x34 * x42)) + ((0x2 * ((uint64_t)x36 * x40)) + (((uint64_t)x38 * x38) + ((0x2 * ((uint64_t)x40 * x36)) + ((0x2 * ((uint64_t)x42 * x34)) + (((uint64_t)x44 * x32) + ((0x2 * ((uint64_t)x46 * x30)) + (0x2 * ((uint64_t)x45 * x28))))))))))))));
+ { uint64_t x59 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x11 * (((uint64_t)x26 * x45) + ((0x2 * ((uint64_t)x28 * x46)) + (((uint64_t)x30 * x44) + (((uint64_t)x32 * x42) + ((0x2 * ((uint64_t)x34 * x40)) + (((uint64_t)x36 * x38) + (((uint64_t)x38 * x36) + ((0x2 * ((uint64_t)x40 * x34)) + (((uint64_t)x42 * x32) + (((uint64_t)x44 * x30) + ((0x2 * ((uint64_t)x46 * x28)) + ((uint64_t)x45 * x26))))))))))))));
+ { uint64_t x60 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x11 * (((uint64_t)x24 * x45) + (((uint64_t)x26 * x46) + (((uint64_t)x28 * x44) + (((uint64_t)x30 * x42) + (((uint64_t)x32 * x40) + (((uint64_t)x34 * x38) + (((uint64_t)x36 * x36) + (((uint64_t)x38 * x34) + (((uint64_t)x40 * x32) + (((uint64_t)x42 * x30) + (((uint64_t)x44 * x28) + (((uint64_t)x46 * x26) + ((uint64_t)x45 * x24)))))))))))))));
+ { uint64_t x61 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x11 * ((0x2 * ((uint64_t)x22 * x45)) + ((0x2 * ((uint64_t)x24 * x46)) + (((uint64_t)x26 * x44) + ((0x2 * ((uint64_t)x28 * x42)) + ((0x2 * ((uint64_t)x30 * x40)) + (((uint64_t)x32 * x38) + ((0x2 * ((uint64_t)x34 * x36)) + ((0x2 * ((uint64_t)x36 * x34)) + (((uint64_t)x38 * x32) + ((0x2 * ((uint64_t)x40 * x30)) + ((0x2 * ((uint64_t)x42 * x28)) + (((uint64_t)x44 * x26) + ((0x2 * ((uint64_t)x46 * x24)) + (0x2 * ((uint64_t)x45 * x22)))))))))))))))));
+ { uint64_t x62 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x11 * (((uint64_t)x20 * x45) + ((0x2 * ((uint64_t)x22 * x46)) + (((uint64_t)x24 * x44) + (((uint64_t)x26 * x42) + ((0x2 * ((uint64_t)x28 * x40)) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + ((0x2 * ((uint64_t)x34 * x34)) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((0x2 * ((uint64_t)x40 * x28)) + (((uint64_t)x42 * x26) + (((uint64_t)x44 * x24) + ((0x2 * ((uint64_t)x46 * x22)) + ((uint64_t)x45 * x20)))))))))))))))));
+ { uint64_t x63 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x11 * (((uint64_t)x18 * x45) + (((uint64_t)x20 * x46) + (((uint64_t)x22 * x44) + (((uint64_t)x24 * x42) + (((uint64_t)x26 * x40) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + (((uint64_t)x40 * x26) + (((uint64_t)x42 * x24) + (((uint64_t)x44 * x22) + (((uint64_t)x46 * x20) + ((uint64_t)x45 * x18))))))))))))))))));
+ { uint64_t x64 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x11 * ((0x2 * ((uint64_t)x16 * x45)) + ((0x2 * ((uint64_t)x18 * x46)) + (((uint64_t)x20 * x44) + ((0x2 * ((uint64_t)x22 * x42)) + ((0x2 * ((uint64_t)x24 * x40)) + (((uint64_t)x26 * x38) + ((0x2 * ((uint64_t)x28 * x36)) + ((0x2 * ((uint64_t)x30 * x34)) + (((uint64_t)x32 * x32) + ((0x2 * ((uint64_t)x34 * x30)) + ((0x2 * ((uint64_t)x36 * x28)) + (((uint64_t)x38 * x26) + ((0x2 * ((uint64_t)x40 * x24)) + ((0x2 * ((uint64_t)x42 * x22)) + (((uint64_t)x44 * x20) + ((0x2 * ((uint64_t)x46 * x18)) + (0x2 * ((uint64_t)x45 * x16))))))))))))))))))));
+ { uint64_t x65 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x11 * (((uint64_t)x14 * x45) + ((0x2 * ((uint64_t)x16 * x46)) + (((uint64_t)x18 * x44) + (((uint64_t)x20 * x42) + ((0x2 * ((uint64_t)x22 * x40)) + (((uint64_t)x24 * x38) + (((uint64_t)x26 * x36) + ((0x2 * ((uint64_t)x28 * x34)) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((0x2 * ((uint64_t)x34 * x28)) + (((uint64_t)x36 * x26) + (((uint64_t)x38 * x24) + ((0x2 * ((uint64_t)x40 * x22)) + (((uint64_t)x42 * x20) + (((uint64_t)x44 * x18) + ((0x2 * ((uint64_t)x46 * x16)) + ((uint64_t)x45 * x14))))))))))))))))))));
+ { uint64_t x66 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * (((uint64_t)x12 * x45) + (((uint64_t)x14 * x46) + (((uint64_t)x16 * x44) + (((uint64_t)x18 * x42) + (((uint64_t)x20 * x40) + (((uint64_t)x22 * x38) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + (((uint64_t)x38 * x22) + (((uint64_t)x40 * x20) + (((uint64_t)x42 * x18) + (((uint64_t)x44 * x16) + (((uint64_t)x46 * x14) + ((uint64_t)x45 * x12)))))))))))))))))))));
+ { uint64_t x67 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x45)) + ((0x2 * ((uint64_t)x12 * x46)) + (((uint64_t)x14 * x44) + ((0x2 * ((uint64_t)x16 * x42)) + ((0x2 * ((uint64_t)x18 * x40)) + (((uint64_t)x20 * x38) + ((0x2 * ((uint64_t)x22 * x36)) + ((0x2 * ((uint64_t)x24 * x34)) + (((uint64_t)x26 * x32) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + (((uint64_t)x32 * x26) + ((0x2 * ((uint64_t)x34 * x24)) + ((0x2 * ((uint64_t)x36 * x22)) + (((uint64_t)x38 * x20) + ((0x2 * ((uint64_t)x40 * x18)) + ((0x2 * ((uint64_t)x42 * x16)) + (((uint64_t)x44 * x14) + ((0x2 * ((uint64_t)x46 * x12)) + (0x2 * ((uint64_t)x45 * x10)))))))))))))))))))))));
+ { uint64_t x68 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x45) + ((0x2 * ((uint64_t)x10 * x46)) + (((uint64_t)x12 * x44) + (((uint64_t)x14 * x42) + ((0x2 * ((uint64_t)x16 * x40)) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + ((0x2 * ((uint64_t)x22 * x34)) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + ((0x2 * ((uint64_t)x28 * x28)) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + ((0x2 * ((uint64_t)x34 * x22)) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((0x2 * ((uint64_t)x40 * x16)) + (((uint64_t)x42 * x14) + (((uint64_t)x44 * x12) + ((0x2 * ((uint64_t)x46 * x10)) + ((uint64_t)x45 * x8)))))))))))))))))))))));
+ { uint64_t x69 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x45) + (((uint64_t)x8 * x46) + (((uint64_t)x10 * x44) + (((uint64_t)x12 * x42) + (((uint64_t)x14 * x40) + (((uint64_t)x16 * x38) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + (((uint64_t)x38 * x16) + (((uint64_t)x40 * x14) + (((uint64_t)x42 * x12) + (((uint64_t)x44 * x10) + (((uint64_t)x46 * x8) + ((uint64_t)x45 * x6))))))))))))))))))))))));
+ { uint64_t x70 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x45)) + ((0x2 * ((uint64_t)x6 * x46)) + (((uint64_t)x8 * x44) + ((0x2 * ((uint64_t)x10 * x42)) + ((0x2 * ((uint64_t)x12 * x40)) + (((uint64_t)x14 * x38) + ((0x2 * ((uint64_t)x16 * x36)) + ((0x2 * ((uint64_t)x18 * x34)) + (((uint64_t)x20 * x32) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + (((uint64_t)x26 * x26) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (((uint64_t)x32 * x20) + ((0x2 * ((uint64_t)x34 * x18)) + ((0x2 * ((uint64_t)x36 * x16)) + (((uint64_t)x38 * x14) + ((0x2 * ((uint64_t)x40 * x12)) + ((0x2 * ((uint64_t)x42 * x10)) + (((uint64_t)x44 * x8) + ((0x2 * ((uint64_t)x46 * x6)) + (0x2 * ((uint64_t)x45 * x4))))))))))))))))))))))))));
+ { uint64_t x71 = (x70 >> 0x15);
+ { uint32_t x72 = ((uint32_t)x70 & 0x1fffff);
+ { uint64_t x73 = (x71 + x69);
+ { uint64_t x74 = (x73 >> 0x14);
+ { uint32_t x75 = ((uint32_t)x73 & 0xfffff);
+ { uint64_t x76 = (x74 + x68);
+ { uint64_t x77 = (x76 >> 0x14);
+ { uint32_t x78 = ((uint32_t)x76 & 0xfffff);
+ { uint64_t x79 = (x77 + x67);
+ { uint64_t x80 = (x79 >> 0x15);
+ { uint32_t x81 = ((uint32_t)x79 & 0x1fffff);
+ { uint64_t x82 = (x80 + x66);
+ { uint64_t x83 = (x82 >> 0x14);
+ { uint32_t x84 = ((uint32_t)x82 & 0xfffff);
+ { uint64_t x85 = (x83 + x65);
+ { uint64_t x86 = (x85 >> 0x14);
+ { uint32_t x87 = ((uint32_t)x85 & 0xfffff);
+ { uint64_t x88 = (x86 + x64);
+ { uint64_t x89 = (x88 >> 0x15);
+ { uint32_t x90 = ((uint32_t)x88 & 0x1fffff);
+ { uint64_t x91 = (x89 + x63);
+ { uint64_t x92 = (x91 >> 0x14);
+ { uint32_t x93 = ((uint32_t)x91 & 0xfffff);
+ { uint64_t x94 = (x92 + x62);
+ { uint64_t x95 = (x94 >> 0x14);
+ { uint32_t x96 = ((uint32_t)x94 & 0xfffff);
+ { uint64_t x97 = (x95 + x61);
+ { uint32_t x98 = (uint32_t) (x97 >> 0x15);
+ { uint32_t x99 = ((uint32_t)x97 & 0x1fffff);
+ { uint64_t x100 = (x98 + x60);
+ { uint64_t x101 = (x100 >> 0x14);
+ { uint32_t x102 = ((uint32_t)x100 & 0xfffff);
+ { uint64_t x103 = (x101 + x59);
+ { uint64_t x104 = (x103 >> 0x14);
+ { uint32_t x105 = ((uint32_t)x103 & 0xfffff);
+ { uint64_t x106 = (x104 + x58);
+ { uint32_t x107 = (uint32_t) (x106 >> 0x15);
+ { uint32_t x108 = ((uint32_t)x106 & 0x1fffff);
+ { uint64_t x109 = (x107 + x57);
+ { uint32_t x110 = (uint32_t) (x109 >> 0x14);
+ { uint32_t x111 = ((uint32_t)x109 & 0xfffff);
+ { uint64_t x112 = (x110 + x56);
+ { uint32_t x113 = (uint32_t) (x112 >> 0x14);
+ { uint32_t x114 = ((uint32_t)x112 & 0xfffff);
+ { uint64_t x115 = (x113 + x55);
+ { uint32_t x116 = (uint32_t) (x115 >> 0x15);
+ { uint32_t x117 = ((uint32_t)x115 & 0x1fffff);
+ { uint64_t x118 = (x116 + x54);
+ { uint32_t x119 = (uint32_t) (x118 >> 0x14);
+ { uint32_t x120 = ((uint32_t)x118 & 0xfffff);
+ { uint64_t x121 = (x119 + x53);
+ { uint32_t x122 = (uint32_t) (x121 >> 0x14);
+ { uint32_t x123 = ((uint32_t)x121 & 0xfffff);
+ { uint64_t x124 = (x122 + x52);
+ { uint32_t x125 = (uint32_t) (x124 >> 0x15);
+ { uint32_t x126 = ((uint32_t)x124 & 0x1fffff);
+ { uint64_t x127 = (x125 + x51);
+ { uint32_t x128 = (uint32_t) (x127 >> 0x14);
+ { uint32_t x129 = ((uint32_t)x127 & 0xfffff);
+ { uint64_t x130 = (x128 + x50);
+ { uint32_t x131 = (uint32_t) (x130 >> 0x14);
+ { uint32_t x132 = ((uint32_t)x130 & 0xfffff);
+ { uint64_t x133 = (x131 + x49);
+ { uint32_t x134 = (uint32_t) (x133 >> 0x15);
+ { uint32_t x135 = ((uint32_t)x133 & 0x1fffff);
+ { uint64_t x136 = (x134 + x48);
+ { uint32_t x137 = (uint32_t) (x136 >> 0x14);
+ { uint32_t x138 = ((uint32_t)x136 & 0xfffff);
+ { uint64_t x139 = (x137 + x47);
+ { uint32_t x140 = (uint32_t) (x139 >> 0x14);
+ { uint32_t x141 = ((uint32_t)x139 & 0xfffff);
+ { uint64_t x142 = (x72 + ((uint64_t)0x11 * x140));
+ { uint32_t x143 = (uint32_t) (x142 >> 0x15);
+ { uint32_t x144 = ((uint32_t)x142 & 0x1fffff);
+ { uint32_t x145 = (x143 + x75);
+ { uint32_t x146 = (x145 >> 0x14);
+ { uint32_t x147 = (x145 & 0xfffff);
+ out[0] = x144;
+ out[1] = x147;
+ out[2] = (x146 + x78);
+ out[3] = x81;
+ out[4] = x84;
+ out[5] = x87;
+ out[6] = x90;
+ out[7] = x93;
+ out[8] = x96;
+ out[9] = x99;
+ out[10] = x102;
+ out[11] = x105;
+ out[12] = x108;
+ out[13] = x111;
+ out[14] = x114;
+ out[15] = x117;
+ out[16] = x120;
+ out[17] = x123;
+ out[18] = x126;
+ out[19] = x129;
+ out[20] = x132;
+ out[21] = x135;
+ out[22] = x138;
+ out[23] = x141;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e489m21/freeze.c b/src/Specific/solinas32_2e489m21/freeze.c
new file mode 100644
index 000000000..1e62bf219
--- /dev/null
+++ b/src/Specific/solinas32_2e489m21/freeze.c
@@ -0,0 +1,139 @@
+static void freeze(uint32_t out[27], const uint32_t in1[27]) {
+ { const uint32_t x51 = in1[26];
+ { const uint32_t x52 = in1[25];
+ { const uint32_t x50 = in1[24];
+ { const uint32_t x48 = in1[23];
+ { const uint32_t x46 = in1[22];
+ { const uint32_t x44 = in1[21];
+ { const uint32_t x42 = in1[20];
+ { const uint32_t x40 = in1[19];
+ { const uint32_t x38 = 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];
+ { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffeb);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x4, 0x3ffff);
+ { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x6, 0x3ffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x8, 0x3ffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x10, 0x3ffff);
+ { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x12, 0x3ffff);
+ { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x14, 0x3ffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x16, 0x3ffff);
+ { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x18, 0x3ffff);
+ { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x20, 0x7ffff);
+ { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x22, 0x3ffff);
+ { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x24, 0x3ffff);
+ { uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x26, 0x3ffff);
+ { uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x28, 0x3ffff);
+ { uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x30, 0x3ffff);
+ { uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x32, 0x3ffff);
+ { uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x34, 0x3ffff);
+ { uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x36, 0x3ffff);
+ { uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x38, 0x7ffff);
+ { uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x40, 0x3ffff);
+ { uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x42, 0x3ffff);
+ { uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x44, 0x3ffff);
+ { uint32_t x120, uint8_t x121 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x118, Return x46, 0x3ffff);
+ { uint32_t x123, uint8_t x124 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x48, 0x3ffff);
+ { uint32_t x126, uint8_t x127 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x124, Return x50, 0x3ffff);
+ { uint32_t x129, uint8_t x130 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x52, 0x3ffff);
+ { uint32_t x132, uint8_t x133 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x51, 0x3ffff);
+ { uint32_t x134 = (uint32_t)cmovznz(x133, 0x0, 0xffffffff);
+ { uint32_t x135 = (x134 & 0x7ffeb);
+ { uint32_t x137, uint8_t x138 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x54, Return x135);
+ { uint32_t x139 = (x134 & 0x3ffff);
+ { uint32_t x141, uint8_t x142 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x138, Return x57, Return x139);
+ { uint32_t x143 = (x134 & 0x3ffff);
+ { uint32_t x145, uint8_t x146 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x142, Return x60, Return x143);
+ { uint32_t x147 = (x134 & 0x3ffff);
+ { uint32_t x149, uint8_t x150 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x146, Return x63, Return x147);
+ { uint32_t x151 = (x134 & 0x3ffff);
+ { uint32_t x153, uint8_t x154 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x150, Return x66, Return x151);
+ { uint32_t x155 = (x134 & 0x3ffff);
+ { uint32_t x157, uint8_t x158 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x154, Return x69, Return x155);
+ { uint32_t x159 = (x134 & 0x3ffff);
+ { uint32_t x161, uint8_t x162 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x158, Return x72, Return x159);
+ { uint32_t x163 = (x134 & 0x3ffff);
+ { uint32_t x165, uint8_t x166 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x162, Return x75, Return x163);
+ { uint32_t x167 = (x134 & 0x3ffff);
+ { uint32_t x169, uint8_t x170 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x166, Return x78, Return x167);
+ { uint32_t x171 = (x134 & 0x7ffff);
+ { uint32_t x173, uint8_t x174 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x170, Return x81, Return x171);
+ { uint32_t x175 = (x134 & 0x3ffff);
+ { uint32_t x177, uint8_t x178 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x174, Return x84, Return x175);
+ { uint32_t x179 = (x134 & 0x3ffff);
+ { uint32_t x181, uint8_t x182 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x178, Return x87, Return x179);
+ { uint32_t x183 = (x134 & 0x3ffff);
+ { uint32_t x185, uint8_t x186 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x182, Return x90, Return x183);
+ { uint32_t x187 = (x134 & 0x3ffff);
+ { uint32_t x189, uint8_t x190 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x186, Return x93, Return x187);
+ { uint32_t x191 = (x134 & 0x3ffff);
+ { uint32_t x193, uint8_t x194 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x190, Return x96, Return x191);
+ { uint32_t x195 = (x134 & 0x3ffff);
+ { uint32_t x197, uint8_t x198 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x194, Return x99, Return x195);
+ { uint32_t x199 = (x134 & 0x3ffff);
+ { uint32_t x201, uint8_t x202 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x198, Return x102, Return x199);
+ { uint32_t x203 = (x134 & 0x3ffff);
+ { uint32_t x205, uint8_t x206 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x202, Return x105, Return x203);
+ { uint32_t x207 = (x134 & 0x7ffff);
+ { uint32_t x209, uint8_t x210 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x206, Return x108, Return x207);
+ { uint32_t x211 = (x134 & 0x3ffff);
+ { uint32_t x213, uint8_t x214 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x210, Return x111, Return x211);
+ { uint32_t x215 = (x134 & 0x3ffff);
+ { uint32_t x217, uint8_t x218 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x214, Return x114, Return x215);
+ { uint32_t x219 = (x134 & 0x3ffff);
+ { uint32_t x221, uint8_t x222 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x218, Return x117, Return x219);
+ { uint32_t x223 = (x134 & 0x3ffff);
+ { uint32_t x225, uint8_t x226 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x222, Return x120, Return x223);
+ { uint32_t x227 = (x134 & 0x3ffff);
+ { uint32_t x229, uint8_t x230 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x226, Return x123, Return x227);
+ { uint32_t x231 = (x134 & 0x3ffff);
+ { uint32_t x233, uint8_t x234 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x230, Return x126, Return x231);
+ { uint32_t x235 = (x134 & 0x3ffff);
+ { uint32_t x237, uint8_t x238 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x234, Return x129, Return x235);
+ { uint32_t x239 = (x134 & 0x3ffff);
+ { uint32_t x241, uint8_t _ = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x238, Return x132, Return x239);
+ out[0] = x137;
+ out[1] = x141;
+ out[2] = x145;
+ out[3] = x149;
+ out[4] = x153;
+ out[5] = x157;
+ out[6] = x161;
+ out[7] = x165;
+ out[8] = x169;
+ out[9] = x173;
+ out[10] = x177;
+ out[11] = x181;
+ out[12] = x185;
+ out[13] = x189;
+ out[14] = x193;
+ out[15] = x197;
+ out[16] = x201;
+ out[17] = x205;
+ out[18] = x209;
+ out[19] = x213;
+ out[20] = x217;
+ out[21] = x221;
+ out[22] = x225;
+ out[23] = x229;
+ out[24] = x233;
+ out[25] = x237;
+ out[26] = x241;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e489m21/freezeDisplay.log b/src/Specific/solinas32_2e489m21/freezeDisplay.log
index ba11f88d5..28517afec 100644
--- a/src/Specific/solinas32_2e489m21/freezeDisplay.log
+++ b/src/Specific/solinas32_2e489m21/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x51, x52, x50, x48, x46, x44, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 524267);
+ uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffeb);
uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x4, 0x3ffff);
uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x6, 0x3ffff);
uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x8, 0x3ffff);
@@ -30,7 +30,7 @@ Interp-η
uint32_t x129, uint8_t x130 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x52, 0x3ffff);
uint32_t x132, uint8_t x133 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x130, Return x51, 0x3ffff);
uint32_t x134 = (uint32_t)cmovznz(x133, 0x0, 0xffffffff);
- uint32_t x135 = (x134 & Const 524267);
+ uint32_t x135 = (x134 & 0x7ffeb);
uint32_t x137, uint8_t x138 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x54, Return x135);
uint32_t x139 = (x134 & 0x3ffff);
uint32_t x141, uint8_t x142 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x138, Return x57, Return x139);
diff --git a/src/Specific/solinas32_2e495m31/freeze.c b/src/Specific/solinas32_2e495m31/freeze.c
index c915429a4..6559bc11a 100644
--- a/src/Specific/solinas32_2e495m31/freeze.c
+++ b/src/Specific/solinas32_2e495m31/freeze.c
@@ -18,7 +18,7 @@ static void freeze(uint32_t out[19], const uint32_t in1[19]) {
{ const uint32_t x6 = in1[2];
{ const uint32_t x4 = in1[1];
{ const uint32_t x2 = in1[0];
- { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 134217697);
+ { uint32_t x38, uint8_t x39 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffe1);
{ uint32_t x41, uint8_t x42 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x39, Return x4, 0x3ffffff);
{ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x42, Return x6, 0x3ffffff);
{ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x8, 0x3ffffff);
@@ -38,7 +38,7 @@ static void freeze(uint32_t out[19], const uint32_t in1[19]) {
{ uint32_t x89, uint8_t x90 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x36, 0x3ffffff);
{ uint32_t x92, uint8_t x93 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x35, 0x3ffffff);
{ uint32_t x94 = (uint32_t)cmovznz(x93, 0x0, 0xffffffff);
- { uint32_t x95 = (x94 & Const 134217697);
+ { uint32_t x95 = (x94 & 0x7ffffe1);
{ uint32_t x97, uint8_t x98 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x38, Return x95);
{ uint32_t x99 = (x94 & 0x3ffffff);
{ uint32_t x101, uint8_t x102 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x98, Return x41, Return x99);
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/freeze.c b/src/Specific/solinas32_2e510m290x2e496m1/freeze.c
new file mode 100644
index 000000000..95d84da79
--- /dev/null
+++ b/src/Specific/solinas32_2e510m290x2e496m1/freeze.c
@@ -0,0 +1,124 @@
+static void freeze(uint32_t out[24], const uint32_t in1[24]) {
+ { const uint32_t x45 = in1[23];
+ { const uint32_t x46 = in1[22];
+ { const uint32_t x44 = in1[21];
+ { const uint32_t x42 = in1[20];
+ { const uint32_t x40 = in1[19];
+ { const uint32_t x38 = 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];
+ { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0x1fffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0x1fffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x1fffff);
+ { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x10, 0x3fffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x12, 0x1fffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x14, 0x1fffff);
+ { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x16, 0x1fffff);
+ { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x18, 0x3fffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x20, 0x1fffff);
+ { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x22, 0x1fffff);
+ { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x24, 0x1fffff);
+ { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x26, 0x3fffff);
+ { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x28, 0x1fffff);
+ { uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x30, 0x1fffff);
+ { uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x32, 0x1fffff);
+ { uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x34, 0x3fffff);
+ { uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x36, 0x1fffff);
+ { uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x38, 0x1fffff);
+ { uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x40, 0x1fffff);
+ { uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0x3fffff);
+ { uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x1fffff);
+ { uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
+ { uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1f6eff);
+ { uint32_t x119 = (uint32_t)cmovznz(x118, 0x0, 0xffffffff);
+ { uint32_t x120 = (x119 & 0x3fffff);
+ { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
+ { uint32_t x124 = (x119 & 0x1fffff);
+ { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
+ { uint32_t x128 = (x119 & 0x1fffff);
+ { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x54, Return x128);
+ { uint32_t x132 = (x119 & 0x1fffff);
+ { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x57, Return x132);
+ { uint32_t x136 = (x119 & 0x3fffff);
+ { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x60, Return x136);
+ { uint32_t x140 = (x119 & 0x1fffff);
+ { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x63, Return x140);
+ { uint32_t x144 = (x119 & 0x1fffff);
+ { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x66, Return x144);
+ { uint32_t x148 = (x119 & 0x1fffff);
+ { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x69, Return x148);
+ { uint32_t x152 = (x119 & 0x3fffff);
+ { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x72, Return x152);
+ { uint32_t x156 = (x119 & 0x1fffff);
+ { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x75, Return x156);
+ { uint32_t x160 = (x119 & 0x1fffff);
+ { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x78, Return x160);
+ { uint32_t x164 = (x119 & 0x1fffff);
+ { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x81, Return x164);
+ { uint32_t x168 = (x119 & 0x3fffff);
+ { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x84, Return x168);
+ { uint32_t x172 = (x119 & 0x1fffff);
+ { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x87, Return x172);
+ { uint32_t x176 = (x119 & 0x1fffff);
+ { uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x90, Return x176);
+ { uint32_t x180 = (x119 & 0x1fffff);
+ { uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x93, Return x180);
+ { uint32_t x184 = (x119 & 0x3fffff);
+ { uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x96, Return x184);
+ { uint32_t x188 = (x119 & 0x1fffff);
+ { uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x99, Return x188);
+ { uint32_t x192 = (x119 & 0x1fffff);
+ { uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x102, Return x192);
+ { uint32_t x196 = (x119 & 0x1fffff);
+ { uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x105, Return x196);
+ { uint32_t x200 = (x119 & 0x3fffff);
+ { uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x108, Return x200);
+ { uint32_t x204 = (x119 & 0x1fffff);
+ { uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
+ { uint32_t x208 = (x119 & 0x1fffff);
+ { uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
+ { uint32_t x212 = (x119 & 0x1f6eff);
+ { uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
+ out[0] = x122;
+ out[1] = x126;
+ out[2] = x130;
+ out[3] = x134;
+ out[4] = x138;
+ out[5] = x142;
+ out[6] = x146;
+ out[7] = x150;
+ out[8] = x154;
+ out[9] = x158;
+ out[10] = x162;
+ out[11] = x166;
+ out[12] = x170;
+ out[13] = x174;
+ out[14] = x178;
+ out[15] = x182;
+ out[16] = x186;
+ out[17] = x190;
+ out[18] = x194;
+ out[19] = x198;
+ out[20] = x202;
+ out[21] = x206;
+ out[22] = x210;
+ out[23] = x214;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.log b/src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.log
index ca70eb40b..4619f6faf 100644
--- a/src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.log
+++ b/src/Specific/solinas32_2e510m290x2e496m1/freezeDisplay.log
@@ -25,7 +25,7 @@ Interp-η
uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0x3fffff);
uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x1fffff);
uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
- uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, Const 2060031);
+ uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1f6eff);
uint32_t x119 = (uint32_t)cmovznz(x118, 0x0, 0xffffffff);
uint32_t x120 = (x119 & 0x3fffff);
uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
@@ -73,7 +73,7 @@ Interp-η
uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
uint32_t x208 = (x119 & 0x1fffff);
uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
- uint32_t x212 = (x119 & Const 2060031);
+ uint32_t x212 = (x119 & 0x1f6eff);
uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
(Return x214, Return x210, Return x206, Return x202, Return x198, Return x194, Return x190, Return x186, Return x182, Return x178, Return x174, Return x170, Return x166, Return x162, Return x158, Return x154, Return x150, Return x146, Return x142, Return x138, Return x134, Return x130, Return x126, Return x122))
x
diff --git a/src/Specific/solinas32_2e511m481/freeze.c b/src/Specific/solinas32_2e511m481/freeze.c
new file mode 100644
index 000000000..19faae65b
--- /dev/null
+++ b/src/Specific/solinas32_2e511m481/freeze.c
@@ -0,0 +1,144 @@
+static void freeze(uint32_t out[28], const uint32_t in1[28]) {
+ { const uint32_t x53 = in1[27];
+ { const uint32_t x54 = in1[26];
+ { const uint32_t x52 = in1[25];
+ { const uint32_t x50 = in1[24];
+ { const uint32_t x48 = in1[23];
+ { const uint32_t x46 = in1[22];
+ { const uint32_t x44 = in1[21];
+ { const uint32_t x42 = in1[20];
+ { const uint32_t x40 = in1[19];
+ { const uint32_t x38 = 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];
+ { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fe1f);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x4, 0x3ffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x6, 0x3ffff);
+ { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x8, 0x3ffff);
+ { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x10, 0x7ffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x12, 0x3ffff);
+ { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x14, 0x3ffff);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x16, 0x3ffff);
+ { uint32_t x80, uint8_t x81 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x18, 0x7ffff);
+ { uint32_t x83, uint8_t x84 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x20, 0x3ffff);
+ { uint32_t x86, uint8_t x87 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x22, 0x3ffff);
+ { uint32_t x89, uint8_t x90 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x24, 0x3ffff);
+ { uint32_t x92, uint8_t x93 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x26, 0x7ffff);
+ { uint32_t x95, uint8_t x96 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x28, 0x3ffff);
+ { uint32_t x98, uint8_t x99 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x30, 0x3ffff);
+ { uint32_t x101, uint8_t x102 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x32, 0x3ffff);
+ { uint32_t x104, uint8_t x105 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x34, 0x7ffff);
+ { uint32_t x107, uint8_t x108 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x36, 0x3ffff);
+ { uint32_t x110, uint8_t x111 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x108, Return x38, 0x3ffff);
+ { uint32_t x113, uint8_t x114 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x111, Return x40, 0x3ffff);
+ { uint32_t x116, uint8_t x117 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x114, Return x42, 0x7ffff);
+ { uint32_t x119, uint8_t x120 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x44, 0x3ffff);
+ { uint32_t x122, uint8_t x123 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x120, Return x46, 0x3ffff);
+ { uint32_t x125, uint8_t x126 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x48, 0x3ffff);
+ { uint32_t x128, uint8_t x129 = Op (Syntax.SubWithGetBorrow 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x126, Return x50, 0x7ffff);
+ { uint32_t x131, uint8_t x132 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x52, 0x3ffff);
+ { uint32_t x134, uint8_t x135 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x132, Return x54, 0x3ffff);
+ { uint32_t x137, uint8_t x138 = Op (Syntax.SubWithGetBorrow 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x53, 0x3ffff);
+ { uint32_t x139 = (uint32_t)cmovznz(x138, 0x0, 0xffffffff);
+ { uint32_t x140 = (x139 & 0x7fe1f);
+ { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x56, Return x140);
+ { uint32_t x144 = (x139 & 0x3ffff);
+ { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x59, Return x144);
+ { uint32_t x148 = (x139 & 0x3ffff);
+ { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x62, Return x148);
+ { uint32_t x152 = (x139 & 0x3ffff);
+ { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x65, Return x152);
+ { uint32_t x156 = (x139 & 0x7ffff);
+ { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x68, Return x156);
+ { uint32_t x160 = (x139 & 0x3ffff);
+ { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x71, Return x160);
+ { uint32_t x164 = (x139 & 0x3ffff);
+ { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x74, Return x164);
+ { uint32_t x168 = (x139 & 0x3ffff);
+ { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x77, Return x168);
+ { uint32_t x172 = (x139 & 0x7ffff);
+ { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x80, Return x172);
+ { uint32_t x176 = (x139 & 0x3ffff);
+ { uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x83, Return x176);
+ { uint32_t x180 = (x139 & 0x3ffff);
+ { uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x86, Return x180);
+ { uint32_t x184 = (x139 & 0x3ffff);
+ { uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x89, Return x184);
+ { uint32_t x188 = (x139 & 0x7ffff);
+ { uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x92, Return x188);
+ { uint32_t x192 = (x139 & 0x3ffff);
+ { uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x95, Return x192);
+ { uint32_t x196 = (x139 & 0x3ffff);
+ { uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x98, Return x196);
+ { uint32_t x200 = (x139 & 0x3ffff);
+ { uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x101, Return x200);
+ { uint32_t x204 = (x139 & 0x7ffff);
+ { uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x104, Return x204);
+ { uint32_t x208 = (x139 & 0x3ffff);
+ { uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x107, Return x208);
+ { uint32_t x212 = (x139 & 0x3ffff);
+ { uint32_t x214, uint8_t x215 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x110, Return x212);
+ { uint32_t x216 = (x139 & 0x3ffff);
+ { uint32_t x218, uint8_t x219 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x215, Return x113, Return x216);
+ { uint32_t x220 = (x139 & 0x7ffff);
+ { uint32_t x222, uint8_t x223 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x219, Return x116, Return x220);
+ { uint32_t x224 = (x139 & 0x3ffff);
+ { uint32_t x226, uint8_t x227 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x223, Return x119, Return x224);
+ { uint32_t x228 = (x139 & 0x3ffff);
+ { uint32_t x230, uint8_t x231 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x227, Return x122, Return x228);
+ { uint32_t x232 = (x139 & 0x3ffff);
+ { uint32_t x234, uint8_t x235 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x231, Return x125, Return x232);
+ { uint32_t x236 = (x139 & 0x7ffff);
+ { uint32_t x238, uint8_t x239 = Op (Syntax.AddWithGetCarry 19 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x235, Return x128, Return x236);
+ { uint32_t x240 = (x139 & 0x3ffff);
+ { uint32_t x242, uint8_t x243 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x239, Return x131, Return x240);
+ { uint32_t x244 = (x139 & 0x3ffff);
+ { uint32_t x246, uint8_t x247 = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x243, Return x134, Return x244);
+ { uint32_t x248 = (x139 & 0x3ffff);
+ { uint32_t x250, uint8_t _ = Op (Syntax.AddWithGetCarry 18 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x247, Return x137, Return x248);
+ out[0] = x142;
+ out[1] = x146;
+ out[2] = x150;
+ out[3] = x154;
+ out[4] = x158;
+ out[5] = x162;
+ out[6] = x166;
+ out[7] = x170;
+ out[8] = x174;
+ out[9] = x178;
+ out[10] = x182;
+ out[11] = x186;
+ out[12] = x190;
+ out[13] = x194;
+ out[14] = x198;
+ out[15] = x202;
+ out[16] = x206;
+ out[17] = x210;
+ out[18] = x214;
+ out[19] = x218;
+ out[20] = x222;
+ out[21] = x226;
+ out[22] = x230;
+ out[23] = x234;
+ out[24] = x238;
+ out[25] = x242;
+ out[26] = x246;
+ out[27] = x250;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/freeze.c b/src/Specific/solinas32_2e512m491x2e496m1/freeze.c
new file mode 100644
index 000000000..4d3f913da
--- /dev/null
+++ b/src/Specific/solinas32_2e512m491x2e496m1/freeze.c
@@ -0,0 +1,124 @@
+static void freeze(uint32_t out[24], const uint32_t in1[24]) {
+ { const uint32_t x45 = in1[23];
+ { const uint32_t x46 = in1[22];
+ { const uint32_t x44 = in1[21];
+ { const uint32_t x42 = in1[20];
+ { const uint32_t x40 = in1[19];
+ { const uint32_t x38 = 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];
+ { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffff);
+ { uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0x1fffff);
+ { uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0x1fffff);
+ { uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x3fffff);
+ { uint32_t x60, uint8_t x61 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x58, Return x10, 0x1fffff);
+ { uint32_t x63, uint8_t x64 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x61, Return x12, 0x1fffff);
+ { uint32_t x66, uint8_t x67 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x64, Return x14, 0x3fffff);
+ { uint32_t x69, uint8_t x70 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x67, Return x16, 0x1fffff);
+ { uint32_t x72, uint8_t x73 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x70, Return x18, 0x1fffff);
+ { uint32_t x75, uint8_t x76 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x73, Return x20, 0x3fffff);
+ { uint32_t x78, uint8_t x79 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x76, Return x22, 0x1fffff);
+ { uint32_t x81, uint8_t x82 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x79, Return x24, 0x1fffff);
+ { uint32_t x84, uint8_t x85 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x82, Return x26, 0x3fffff);
+ { uint32_t x87, uint8_t x88 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x85, Return x28, 0x1fffff);
+ { uint32_t x90, uint8_t x91 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x88, Return x30, 0x1fffff);
+ { uint32_t x93, uint8_t x94 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x91, Return x32, 0x3fffff);
+ { uint32_t x96, uint8_t x97 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x94, Return x34, 0x1fffff);
+ { uint32_t x99, uint8_t x100 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x97, Return x36, 0x1fffff);
+ { uint32_t x102, uint8_t x103 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x100, Return x38, 0x3fffff);
+ { uint32_t x105, uint8_t x106 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x103, Return x40, 0x1fffff);
+ { uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0x1fffff);
+ { uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x3fffff);
+ { uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
+ { uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1fc29f);
+ { uint32_t x119 = (uint32_t)cmovznz(x118, 0x0, 0xffffffff);
+ { uint32_t x120 = (x119 & 0x3fffff);
+ { uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
+ { uint32_t x124 = (x119 & 0x1fffff);
+ { uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
+ { uint32_t x128 = (x119 & 0x1fffff);
+ { uint32_t x130, uint8_t x131 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x127, Return x54, Return x128);
+ { uint32_t x132 = (x119 & 0x3fffff);
+ { uint32_t x134, uint8_t x135 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x131, Return x57, Return x132);
+ { uint32_t x136 = (x119 & 0x1fffff);
+ { uint32_t x138, uint8_t x139 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x135, Return x60, Return x136);
+ { uint32_t x140 = (x119 & 0x1fffff);
+ { uint32_t x142, uint8_t x143 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x139, Return x63, Return x140);
+ { uint32_t x144 = (x119 & 0x3fffff);
+ { uint32_t x146, uint8_t x147 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x143, Return x66, Return x144);
+ { uint32_t x148 = (x119 & 0x1fffff);
+ { uint32_t x150, uint8_t x151 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x147, Return x69, Return x148);
+ { uint32_t x152 = (x119 & 0x1fffff);
+ { uint32_t x154, uint8_t x155 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x151, Return x72, Return x152);
+ { uint32_t x156 = (x119 & 0x3fffff);
+ { uint32_t x158, uint8_t x159 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x155, Return x75, Return x156);
+ { uint32_t x160 = (x119 & 0x1fffff);
+ { uint32_t x162, uint8_t x163 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x159, Return x78, Return x160);
+ { uint32_t x164 = (x119 & 0x1fffff);
+ { uint32_t x166, uint8_t x167 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x163, Return x81, Return x164);
+ { uint32_t x168 = (x119 & 0x3fffff);
+ { uint32_t x170, uint8_t x171 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x167, Return x84, Return x168);
+ { uint32_t x172 = (x119 & 0x1fffff);
+ { uint32_t x174, uint8_t x175 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x171, Return x87, Return x172);
+ { uint32_t x176 = (x119 & 0x1fffff);
+ { uint32_t x178, uint8_t x179 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x175, Return x90, Return x176);
+ { uint32_t x180 = (x119 & 0x3fffff);
+ { uint32_t x182, uint8_t x183 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x179, Return x93, Return x180);
+ { uint32_t x184 = (x119 & 0x1fffff);
+ { uint32_t x186, uint8_t x187 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x183, Return x96, Return x184);
+ { uint32_t x188 = (x119 & 0x1fffff);
+ { uint32_t x190, uint8_t x191 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x187, Return x99, Return x188);
+ { uint32_t x192 = (x119 & 0x3fffff);
+ { uint32_t x194, uint8_t x195 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x191, Return x102, Return x192);
+ { uint32_t x196 = (x119 & 0x1fffff);
+ { uint32_t x198, uint8_t x199 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x195, Return x105, Return x196);
+ { uint32_t x200 = (x119 & 0x1fffff);
+ { uint32_t x202, uint8_t x203 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x199, Return x108, Return x200);
+ { uint32_t x204 = (x119 & 0x3fffff);
+ { uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
+ { uint32_t x208 = (x119 & 0x1fffff);
+ { uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
+ { uint32_t x212 = (x119 & 0x1fc29f);
+ { uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
+ out[0] = x122;
+ out[1] = x126;
+ out[2] = x130;
+ out[3] = x134;
+ out[4] = x138;
+ out[5] = x142;
+ out[6] = x146;
+ out[7] = x150;
+ out[8] = x154;
+ out[9] = x158;
+ out[10] = x162;
+ out[11] = x166;
+ out[12] = x170;
+ out[13] = x174;
+ out[14] = x178;
+ out[15] = x182;
+ out[16] = x186;
+ out[17] = x190;
+ out[18] = x194;
+ out[19] = x198;
+ out[20] = x202;
+ out[21] = x206;
+ out[22] = x210;
+ out[23] = x214;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.log b/src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.log
index c0769880c..978df2136 100644
--- a/src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.log
+++ b/src/Specific/solinas32_2e512m491x2e496m1/freezeDisplay.log
@@ -25,7 +25,7 @@ Interp-η
uint32_t x108, uint8_t x109 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x106, Return x42, 0x1fffff);
uint32_t x111, uint8_t x112 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x109, Return x44, 0x3fffff);
uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
- uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, Const 2081439);
+ uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1fc29f);
uint32_t x119 = (uint32_t)cmovznz(x118, 0x0, 0xffffffff);
uint32_t x120 = (x119 & 0x3fffff);
uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
@@ -73,7 +73,7 @@ Interp-η
uint32_t x206, uint8_t x207 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x203, Return x111, Return x204);
uint32_t x208 = (x119 & 0x1fffff);
uint32_t x210, uint8_t x211 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x207, Return x114, Return x208);
- uint32_t x212 = (x119 & Const 2081439);
+ uint32_t x212 = (x119 & 0x1fc29f);
uint32_t x214, uint8_t _ = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x211, Return x117, Return x212);
(Return x214, Return x210, Return x206, Return x202, Return x198, Return x194, Return x190, Return x186, Return x182, Return x178, Return x174, Return x170, Return x166, Return x162, Return x158, Return x154, Return x150, Return x146, Return x142, Return x138, Return x134, Return x130, Return x126, Return x122))
x
diff --git a/src/Specific/solinas32_2e512m569/fesquare.c b/src/Specific/solinas32_2e512m569/fesquare.c
new file mode 100644
index 000000000..e1d0ea01d
--- /dev/null
+++ b/src/Specific/solinas32_2e512m569/fesquare.c
@@ -0,0 +1,152 @@
+static void fesquare(uint32_t out[24], const uint32_t in1[24]) {
+ { const uint32_t x45 = in1[23];
+ { const uint32_t x46 = in1[22];
+ { const uint32_t x44 = in1[21];
+ { const uint32_t x42 = in1[20];
+ { const uint32_t x40 = in1[19];
+ { const uint32_t x38 = 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 x47 = (((uint64_t)x2 * x45) + ((0x2 * ((uint64_t)x4 * x46)) + (((uint64_t)x6 * x44) + (((uint64_t)x8 * x42) + ((0x2 * ((uint64_t)x10 * x40)) + (((uint64_t)x12 * x38) + (((uint64_t)x14 * x36) + ((0x2 * ((uint64_t)x16 * x34)) + (((uint64_t)x18 * x32) + (((uint64_t)x20 * x30) + ((0x2 * ((uint64_t)x22 * x28)) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + ((0x2 * ((uint64_t)x28 * x22)) + (((uint64_t)x30 * x20) + (((uint64_t)x32 * x18) + ((0x2 * ((uint64_t)x34 * x16)) + (((uint64_t)x36 * x14) + (((uint64_t)x38 * x12) + ((0x2 * ((uint64_t)x40 * x10)) + (((uint64_t)x42 * x8) + (((uint64_t)x44 * x6) + ((0x2 * ((uint64_t)x46 * x4)) + ((uint64_t)x45 * x2))))))))))))))))))))))));
+ { uint64_t x48 = ((((uint64_t)x2 * x46) + (((uint64_t)x4 * x44) + (((uint64_t)x6 * x42) + (((uint64_t)x8 * x40) + (((uint64_t)x10 * x38) + (((uint64_t)x12 * x36) + (((uint64_t)x14 * x34) + (((uint64_t)x16 * x32) + (((uint64_t)x18 * x30) + (((uint64_t)x20 * x28) + (((uint64_t)x22 * x26) + (((uint64_t)x24 * x24) + (((uint64_t)x26 * x22) + (((uint64_t)x28 * x20) + (((uint64_t)x30 * x18) + (((uint64_t)x32 * x16) + (((uint64_t)x34 * x14) + (((uint64_t)x36 * x12) + (((uint64_t)x38 * x10) + (((uint64_t)x40 * x8) + (((uint64_t)x42 * x6) + (((uint64_t)x44 * x4) + ((uint64_t)x46 * x2))))))))))))))))))))))) + (0x239 * ((uint64_t)x45 * x45)));
+ { uint64_t x49 = ((((uint64_t)x2 * x44) + ((0x2 * ((uint64_t)x4 * x42)) + ((0x2 * ((uint64_t)x6 * x40)) + (((uint64_t)x8 * x38) + ((0x2 * ((uint64_t)x10 * x36)) + ((0x2 * ((uint64_t)x12 * x34)) + (((uint64_t)x14 * x32) + ((0x2 * ((uint64_t)x16 * x30)) + ((0x2 * ((uint64_t)x18 * x28)) + (((uint64_t)x20 * x26) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + (((uint64_t)x26 * x20) + ((0x2 * ((uint64_t)x28 * x18)) + ((0x2 * ((uint64_t)x30 * x16)) + (((uint64_t)x32 * x14) + ((0x2 * ((uint64_t)x34 * x12)) + ((0x2 * ((uint64_t)x36 * x10)) + (((uint64_t)x38 * x8) + ((0x2 * ((uint64_t)x40 * x6)) + ((0x2 * ((uint64_t)x42 * x4)) + ((uint64_t)x44 * x2)))))))))))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x46 * x45)) + (0x2 * ((uint64_t)x45 * x46)))));
+ { uint64_t x50 = ((((uint64_t)x2 * x42) + ((0x2 * ((uint64_t)x4 * x40)) + (((uint64_t)x6 * x38) + (((uint64_t)x8 * x36) + ((0x2 * ((uint64_t)x10 * x34)) + (((uint64_t)x12 * x32) + (((uint64_t)x14 * x30) + ((0x2 * ((uint64_t)x16 * x28)) + (((uint64_t)x18 * x26) + (((uint64_t)x20 * x24) + ((0x2 * ((uint64_t)x22 * x22)) + (((uint64_t)x24 * x20) + (((uint64_t)x26 * x18) + ((0x2 * ((uint64_t)x28 * x16)) + (((uint64_t)x30 * x14) + (((uint64_t)x32 * x12) + ((0x2 * ((uint64_t)x34 * x10)) + (((uint64_t)x36 * x8) + (((uint64_t)x38 * x6) + ((0x2 * ((uint64_t)x40 * x4)) + ((uint64_t)x42 * x2))))))))))))))))))))) + (0x239 * (((uint64_t)x44 * x45) + ((0x2 * ((uint64_t)x46 * x46)) + ((uint64_t)x45 * x44)))));
+ { uint64_t x51 = ((((uint64_t)x2 * x40) + (((uint64_t)x4 * x38) + (((uint64_t)x6 * x36) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + (((uint64_t)x12 * x30) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + (((uint64_t)x20 * x22) + (((uint64_t)x22 * x20) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + (((uint64_t)x30 * x12) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + (((uint64_t)x36 * x6) + (((uint64_t)x38 * x4) + ((uint64_t)x40 * x2)))))))))))))))))))) + (0x239 * (((uint64_t)x42 * x45) + (((uint64_t)x44 * x46) + (((uint64_t)x46 * x44) + ((uint64_t)x45 * x42))))));
+ { uint64_t x52 = ((((uint64_t)x2 * x38) + ((0x2 * ((uint64_t)x4 * x36)) + ((0x2 * ((uint64_t)x6 * x34)) + (((uint64_t)x8 * x32) + ((0x2 * ((uint64_t)x10 * x30)) + ((0x2 * ((uint64_t)x12 * x28)) + (((uint64_t)x14 * x26) + ((0x2 * ((uint64_t)x16 * x24)) + ((0x2 * ((uint64_t)x18 * x22)) + (((uint64_t)x20 * x20) + ((0x2 * ((uint64_t)x22 * x18)) + ((0x2 * ((uint64_t)x24 * x16)) + (((uint64_t)x26 * x14) + ((0x2 * ((uint64_t)x28 * x12)) + ((0x2 * ((uint64_t)x30 * x10)) + (((uint64_t)x32 * x8) + ((0x2 * ((uint64_t)x34 * x6)) + ((0x2 * ((uint64_t)x36 * x4)) + ((uint64_t)x38 * x2))))))))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x40 * x45)) + ((0x2 * ((uint64_t)x42 * x46)) + (((uint64_t)x44 * x44) + ((0x2 * ((uint64_t)x46 * x42)) + (0x2 * ((uint64_t)x45 * x40))))))));
+ { uint64_t x53 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + (((uint64_t)x6 * x32) + (((uint64_t)x8 * x30) + ((0x2 * ((uint64_t)x10 * x28)) + (((uint64_t)x12 * x26) + (((uint64_t)x14 * x24) + ((0x2 * ((uint64_t)x16 * x22)) + (((uint64_t)x18 * x20) + (((uint64_t)x20 * x18) + ((0x2 * ((uint64_t)x22 * x16)) + (((uint64_t)x24 * x14) + (((uint64_t)x26 * x12) + ((0x2 * ((uint64_t)x28 * x10)) + (((uint64_t)x30 * x8) + (((uint64_t)x32 * x6) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0x239 * (((uint64_t)x38 * x45) + ((0x2 * ((uint64_t)x40 * x46)) + (((uint64_t)x42 * x44) + (((uint64_t)x44 * x42) + ((0x2 * ((uint64_t)x46 * x40)) + ((uint64_t)x45 * x38))))))));
+ { uint64_t x54 = ((((uint64_t)x2 * x34) + (((uint64_t)x4 * x32) + (((uint64_t)x6 * x30) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + (((uint64_t)x12 * x24) + (((uint64_t)x14 * x22) + (((uint64_t)x16 * x20) + (((uint64_t)x18 * x18) + (((uint64_t)x20 * x16) + (((uint64_t)x22 * x14) + (((uint64_t)x24 * x12) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + (((uint64_t)x30 * x6) + (((uint64_t)x32 * x4) + ((uint64_t)x34 * x2))))))))))))))))) + (0x239 * (((uint64_t)x36 * x45) + (((uint64_t)x38 * x46) + (((uint64_t)x40 * x44) + (((uint64_t)x42 * x42) + (((uint64_t)x44 * x40) + (((uint64_t)x46 * x38) + ((uint64_t)x45 * x36)))))))));
+ { uint64_t x55 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + ((0x2 * ((uint64_t)x6 * x28)) + (((uint64_t)x8 * x26) + ((0x2 * ((uint64_t)x10 * x24)) + ((0x2 * ((uint64_t)x12 * x22)) + (((uint64_t)x14 * x20) + ((0x2 * ((uint64_t)x16 * x18)) + ((0x2 * ((uint64_t)x18 * x16)) + (((uint64_t)x20 * x14) + ((0x2 * ((uint64_t)x22 * x12)) + ((0x2 * ((uint64_t)x24 * x10)) + (((uint64_t)x26 * x8) + ((0x2 * ((uint64_t)x28 * x6)) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x34 * x45)) + ((0x2 * ((uint64_t)x36 * x46)) + (((uint64_t)x38 * x44) + ((0x2 * ((uint64_t)x40 * x42)) + ((0x2 * ((uint64_t)x42 * x40)) + (((uint64_t)x44 * x38) + ((0x2 * ((uint64_t)x46 * x36)) + (0x2 * ((uint64_t)x45 * x34)))))))))));
+ { uint64_t x56 = ((((uint64_t)x2 * x30) + ((0x2 * ((uint64_t)x4 * x28)) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + ((0x2 * ((uint64_t)x10 * x22)) + (((uint64_t)x12 * x20) + (((uint64_t)x14 * x18) + ((0x2 * ((uint64_t)x16 * x16)) + (((uint64_t)x18 * x14) + (((uint64_t)x20 * x12) + ((0x2 * ((uint64_t)x22 * x10)) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + ((0x2 * ((uint64_t)x28 * x4)) + ((uint64_t)x30 * x2))))))))))))))) + (0x239 * (((uint64_t)x32 * x45) + ((0x2 * ((uint64_t)x34 * x46)) + (((uint64_t)x36 * x44) + (((uint64_t)x38 * x42) + ((0x2 * ((uint64_t)x40 * x40)) + (((uint64_t)x42 * x38) + (((uint64_t)x44 * x36) + ((0x2 * ((uint64_t)x46 * x34)) + ((uint64_t)x45 * x32)))))))))));
+ { uint64_t x57 = ((((uint64_t)x2 * x28) + (((uint64_t)x4 * x26) + (((uint64_t)x6 * x24) + (((uint64_t)x8 * x22) + (((uint64_t)x10 * x20) + (((uint64_t)x12 * x18) + (((uint64_t)x14 * x16) + (((uint64_t)x16 * x14) + (((uint64_t)x18 * x12) + (((uint64_t)x20 * x10) + (((uint64_t)x22 * x8) + (((uint64_t)x24 * x6) + (((uint64_t)x26 * x4) + ((uint64_t)x28 * x2)))))))))))))) + (0x239 * (((uint64_t)x30 * x45) + (((uint64_t)x32 * x46) + (((uint64_t)x34 * x44) + (((uint64_t)x36 * x42) + (((uint64_t)x38 * x40) + (((uint64_t)x40 * x38) + (((uint64_t)x42 * x36) + (((uint64_t)x44 * x34) + (((uint64_t)x46 * x32) + ((uint64_t)x45 * x30))))))))))));
+ { uint64_t x58 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + (((uint64_t)x8 * x20) + ((0x2 * ((uint64_t)x10 * x18)) + ((0x2 * ((uint64_t)x12 * x16)) + (((uint64_t)x14 * x14) + ((0x2 * ((uint64_t)x16 * x12)) + ((0x2 * ((uint64_t)x18 * x10)) + (((uint64_t)x20 * x8) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0x239 * ((0x2 * ((uint64_t)x28 * x45)) + ((0x2 * ((uint64_t)x30 * x46)) + (((uint64_t)x32 * x44) + ((0x2 * ((uint64_t)x34 * x42)) + ((0x2 * ((uint64_t)x36 * x40)) + (((uint64_t)x38 * x38) + ((0x2 * ((uint64_t)x40 * x36)) + ((0x2 * ((uint64_t)x42 * x34)) + (((uint64_t)x44 * x32) + ((0x2 * ((uint64_t)x46 * x30)) + (0x2 * ((uint64_t)x45 * x28))))))))))))));
+ { uint64_t x59 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + (((uint64_t)x6 * x20) + (((uint64_t)x8 * x18) + ((0x2 * ((uint64_t)x10 * x16)) + (((uint64_t)x12 * x14) + (((uint64_t)x14 * x12) + ((0x2 * ((uint64_t)x16 * x10)) + (((uint64_t)x18 * x8) + (((uint64_t)x20 * x6) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0x239 * (((uint64_t)x26 * x45) + ((0x2 * ((uint64_t)x28 * x46)) + (((uint64_t)x30 * x44) + (((uint64_t)x32 * x42) + ((0x2 * ((uint64_t)x34 * x40)) + (((uint64_t)x36 * x38) + (((uint64_t)x38 * x36) + ((0x2 * ((uint64_t)x40 * x34)) + (((uint64_t)x42 * x32) + (((uint64_t)x44 * x30) + ((0x2 * ((uint64_t)x46 * x28)) + ((uint64_t)x45 * x26))))))))))))));
+ { uint64_t x60 = ((((uint64_t)x2 * x22) + (((uint64_t)x4 * x20) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + (((uint64_t)x12 * x12) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + (((uint64_t)x20 * x4) + ((uint64_t)x22 * x2))))))))))) + (0x239 * (((uint64_t)x24 * x45) + (((uint64_t)x26 * x46) + (((uint64_t)x28 * x44) + (((uint64_t)x30 * x42) + (((uint64_t)x32 * x40) + (((uint64_t)x34 * x38) + (((uint64_t)x36 * x36) + (((uint64_t)x38 * x34) + (((uint64_t)x40 * x32) + (((uint64_t)x42 * x30) + (((uint64_t)x44 * x28) + (((uint64_t)x46 * x26) + ((uint64_t)x45 * x24)))))))))))))));
+ { uint64_t x61 = ((((uint64_t)x2 * x20) + ((0x2 * ((uint64_t)x4 * x18)) + ((0x2 * ((uint64_t)x6 * x16)) + (((uint64_t)x8 * x14) + ((0x2 * ((uint64_t)x10 * x12)) + ((0x2 * ((uint64_t)x12 * x10)) + (((uint64_t)x14 * x8) + ((0x2 * ((uint64_t)x16 * x6)) + ((0x2 * ((uint64_t)x18 * x4)) + ((uint64_t)x20 * x2)))))))))) + (0x239 * ((0x2 * ((uint64_t)x22 * x45)) + ((0x2 * ((uint64_t)x24 * x46)) + (((uint64_t)x26 * x44) + ((0x2 * ((uint64_t)x28 * x42)) + ((0x2 * ((uint64_t)x30 * x40)) + (((uint64_t)x32 * x38) + ((0x2 * ((uint64_t)x34 * x36)) + ((0x2 * ((uint64_t)x36 * x34)) + (((uint64_t)x38 * x32) + ((0x2 * ((uint64_t)x40 * x30)) + ((0x2 * ((uint64_t)x42 * x28)) + (((uint64_t)x44 * x26) + ((0x2 * ((uint64_t)x46 * x24)) + (0x2 * ((uint64_t)x45 * x22)))))))))))))))));
+ { uint64_t x62 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + (((uint64_t)x6 * x14) + (((uint64_t)x8 * x12) + ((0x2 * ((uint64_t)x10 * x10)) + (((uint64_t)x12 * x8) + (((uint64_t)x14 * x6) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0x239 * (((uint64_t)x20 * x45) + ((0x2 * ((uint64_t)x22 * x46)) + (((uint64_t)x24 * x44) + (((uint64_t)x26 * x42) + ((0x2 * ((uint64_t)x28 * x40)) + (((uint64_t)x30 * x38) + (((uint64_t)x32 * x36) + ((0x2 * ((uint64_t)x34 * x34)) + (((uint64_t)x36 * x32) + (((uint64_t)x38 * x30) + ((0x2 * ((uint64_t)x40 * x28)) + (((uint64_t)x42 * x26) + (((uint64_t)x44 * x24) + ((0x2 * ((uint64_t)x46 * x22)) + ((uint64_t)x45 * x20)))))))))))))))));
+ { uint64_t x63 = ((((uint64_t)x2 * x16) + (((uint64_t)x4 * x14) + (((uint64_t)x6 * x12) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (((uint64_t)x12 * x6) + (((uint64_t)x14 * x4) + ((uint64_t)x16 * x2)))))))) + (0x239 * (((uint64_t)x18 * x45) + (((uint64_t)x20 * x46) + (((uint64_t)x22 * x44) + (((uint64_t)x24 * x42) + (((uint64_t)x26 * x40) + (((uint64_t)x28 * x38) + (((uint64_t)x30 * x36) + (((uint64_t)x32 * x34) + (((uint64_t)x34 * x32) + (((uint64_t)x36 * x30) + (((uint64_t)x38 * x28) + (((uint64_t)x40 * x26) + (((uint64_t)x42 * x24) + (((uint64_t)x44 * x22) + (((uint64_t)x46 * x20) + ((uint64_t)x45 * x18))))))))))))))))));
+ { uint64_t x64 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0x239 * ((0x2 * ((uint64_t)x16 * x45)) + ((0x2 * ((uint64_t)x18 * x46)) + (((uint64_t)x20 * x44) + ((0x2 * ((uint64_t)x22 * x42)) + ((0x2 * ((uint64_t)x24 * x40)) + (((uint64_t)x26 * x38) + ((0x2 * ((uint64_t)x28 * x36)) + ((0x2 * ((uint64_t)x30 * x34)) + (((uint64_t)x32 * x32) + ((0x2 * ((uint64_t)x34 * x30)) + ((0x2 * ((uint64_t)x36 * x28)) + (((uint64_t)x38 * x26) + ((0x2 * ((uint64_t)x40 * x24)) + ((0x2 * ((uint64_t)x42 * x22)) + (((uint64_t)x44 * x20) + ((0x2 * ((uint64_t)x46 * x18)) + (0x2 * ((uint64_t)x45 * x16))))))))))))))))))));
+ { uint64_t x65 = ((((uint64_t)x2 * x12) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x12 * x2)))))) + (0x239 * (((uint64_t)x14 * x45) + ((0x2 * ((uint64_t)x16 * x46)) + (((uint64_t)x18 * x44) + (((uint64_t)x20 * x42) + ((0x2 * ((uint64_t)x22 * x40)) + (((uint64_t)x24 * x38) + (((uint64_t)x26 * x36) + ((0x2 * ((uint64_t)x28 * x34)) + (((uint64_t)x30 * x32) + (((uint64_t)x32 * x30) + ((0x2 * ((uint64_t)x34 * x28)) + (((uint64_t)x36 * x26) + (((uint64_t)x38 * x24) + ((0x2 * ((uint64_t)x40 * x22)) + (((uint64_t)x42 * x20) + (((uint64_t)x44 * x18) + ((0x2 * ((uint64_t)x46 * x16)) + ((uint64_t)x45 * x14))))))))))))))))))));
+ { uint64_t x66 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x239 * (((uint64_t)x12 * x45) + (((uint64_t)x14 * x46) + (((uint64_t)x16 * x44) + (((uint64_t)x18 * x42) + (((uint64_t)x20 * x40) + (((uint64_t)x22 * x38) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + (((uint64_t)x30 * x30) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + (((uint64_t)x38 * x22) + (((uint64_t)x40 * x20) + (((uint64_t)x42 * x18) + (((uint64_t)x44 * x16) + (((uint64_t)x46 * x14) + ((uint64_t)x45 * x12)))))))))))))))))))));
+ { uint64_t x67 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x239 * ((0x2 * ((uint64_t)x10 * x45)) + ((0x2 * ((uint64_t)x12 * x46)) + (((uint64_t)x14 * x44) + ((0x2 * ((uint64_t)x16 * x42)) + ((0x2 * ((uint64_t)x18 * x40)) + (((uint64_t)x20 * x38) + ((0x2 * ((uint64_t)x22 * x36)) + ((0x2 * ((uint64_t)x24 * x34)) + (((uint64_t)x26 * x32) + ((0x2 * ((uint64_t)x28 * x30)) + ((0x2 * ((uint64_t)x30 * x28)) + (((uint64_t)x32 * x26) + ((0x2 * ((uint64_t)x34 * x24)) + ((0x2 * ((uint64_t)x36 * x22)) + (((uint64_t)x38 * x20) + ((0x2 * ((uint64_t)x40 * x18)) + ((0x2 * ((uint64_t)x42 * x16)) + (((uint64_t)x44 * x14) + ((0x2 * ((uint64_t)x46 * x12)) + (0x2 * ((uint64_t)x45 * x10)))))))))))))))))))))));
+ { uint64_t x68 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x239 * (((uint64_t)x8 * x45) + ((0x2 * ((uint64_t)x10 * x46)) + (((uint64_t)x12 * x44) + (((uint64_t)x14 * x42) + ((0x2 * ((uint64_t)x16 * x40)) + (((uint64_t)x18 * x38) + (((uint64_t)x20 * x36) + ((0x2 * ((uint64_t)x22 * x34)) + (((uint64_t)x24 * x32) + (((uint64_t)x26 * x30) + ((0x2 * ((uint64_t)x28 * x28)) + (((uint64_t)x30 * x26) + (((uint64_t)x32 * x24) + ((0x2 * ((uint64_t)x34 * x22)) + (((uint64_t)x36 * x20) + (((uint64_t)x38 * x18) + ((0x2 * ((uint64_t)x40 * x16)) + (((uint64_t)x42 * x14) + (((uint64_t)x44 * x12) + ((0x2 * ((uint64_t)x46 * x10)) + ((uint64_t)x45 * x8)))))))))))))))))))))));
+ { uint64_t x69 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x239 * (((uint64_t)x6 * x45) + (((uint64_t)x8 * x46) + (((uint64_t)x10 * x44) + (((uint64_t)x12 * x42) + (((uint64_t)x14 * x40) + (((uint64_t)x16 * x38) + (((uint64_t)x18 * x36) + (((uint64_t)x20 * x34) + (((uint64_t)x22 * x32) + (((uint64_t)x24 * x30) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + (((uint64_t)x30 * x24) + (((uint64_t)x32 * x22) + (((uint64_t)x34 * x20) + (((uint64_t)x36 * x18) + (((uint64_t)x38 * x16) + (((uint64_t)x40 * x14) + (((uint64_t)x42 * x12) + (((uint64_t)x44 * x10) + (((uint64_t)x46 * x8) + ((uint64_t)x45 * x6))))))))))))))))))))))));
+ { uint64_t x70 = (((uint64_t)x2 * x2) + (0x239 * ((0x2 * ((uint64_t)x4 * x45)) + ((0x2 * ((uint64_t)x6 * x46)) + (((uint64_t)x8 * x44) + ((0x2 * ((uint64_t)x10 * x42)) + ((0x2 * ((uint64_t)x12 * x40)) + (((uint64_t)x14 * x38) + ((0x2 * ((uint64_t)x16 * x36)) + ((0x2 * ((uint64_t)x18 * x34)) + (((uint64_t)x20 * x32) + ((0x2 * ((uint64_t)x22 * x30)) + ((0x2 * ((uint64_t)x24 * x28)) + (((uint64_t)x26 * x26) + ((0x2 * ((uint64_t)x28 * x24)) + ((0x2 * ((uint64_t)x30 * x22)) + (((uint64_t)x32 * x20) + ((0x2 * ((uint64_t)x34 * x18)) + ((0x2 * ((uint64_t)x36 * x16)) + (((uint64_t)x38 * x14) + ((0x2 * ((uint64_t)x40 * x12)) + ((0x2 * ((uint64_t)x42 * x10)) + (((uint64_t)x44 * x8) + ((0x2 * ((uint64_t)x46 * x6)) + (0x2 * ((uint64_t)x45 * x4))))))))))))))))))))))))));
+ { uint64_t x71 = (x70 >> 0x16);
+ { uint32_t x72 = ((uint32_t)x70 & 0x3fffff);
+ { uint64_t x73 = (x71 + x69);
+ { uint64_t x74 = (x73 >> 0x15);
+ { uint32_t x75 = ((uint32_t)x73 & 0x1fffff);
+ { uint64_t x76 = (x74 + x68);
+ { uint64_t x77 = (x76 >> 0x15);
+ { uint32_t x78 = ((uint32_t)x76 & 0x1fffff);
+ { uint64_t x79 = (x77 + x67);
+ { uint64_t x80 = (x79 >> 0x16);
+ { uint32_t x81 = ((uint32_t)x79 & 0x3fffff);
+ { uint64_t x82 = (x80 + x66);
+ { uint64_t x83 = (x82 >> 0x15);
+ { uint32_t x84 = ((uint32_t)x82 & 0x1fffff);
+ { uint64_t x85 = (x83 + x65);
+ { uint64_t x86 = (x85 >> 0x15);
+ { uint32_t x87 = ((uint32_t)x85 & 0x1fffff);
+ { uint64_t x88 = (x86 + x64);
+ { uint64_t x89 = (x88 >> 0x16);
+ { uint32_t x90 = ((uint32_t)x88 & 0x3fffff);
+ { uint64_t x91 = (x89 + x63);
+ { uint64_t x92 = (x91 >> 0x15);
+ { uint32_t x93 = ((uint32_t)x91 & 0x1fffff);
+ { uint64_t x94 = (x92 + x62);
+ { uint64_t x95 = (x94 >> 0x15);
+ { uint32_t x96 = ((uint32_t)x94 & 0x1fffff);
+ { uint64_t x97 = (x95 + x61);
+ { uint64_t x98 = (x97 >> 0x16);
+ { uint32_t x99 = ((uint32_t)x97 & 0x3fffff);
+ { uint64_t x100 = (x98 + x60);
+ { uint64_t x101 = (x100 >> 0x15);
+ { uint32_t x102 = ((uint32_t)x100 & 0x1fffff);
+ { uint64_t x103 = (x101 + x59);
+ { uint64_t x104 = (x103 >> 0x15);
+ { uint32_t x105 = ((uint32_t)x103 & 0x1fffff);
+ { uint64_t x106 = (x104 + x58);
+ { uint64_t x107 = (x106 >> 0x16);
+ { uint32_t x108 = ((uint32_t)x106 & 0x3fffff);
+ { uint64_t x109 = (x107 + x57);
+ { uint64_t x110 = (x109 >> 0x15);
+ { uint32_t x111 = ((uint32_t)x109 & 0x1fffff);
+ { uint64_t x112 = (x110 + x56);
+ { uint64_t x113 = (x112 >> 0x15);
+ { uint32_t x114 = ((uint32_t)x112 & 0x1fffff);
+ { uint64_t x115 = (x113 + x55);
+ { uint64_t x116 = (x115 >> 0x16);
+ { uint32_t x117 = ((uint32_t)x115 & 0x3fffff);
+ { uint64_t x118 = (x116 + x54);
+ { uint64_t x119 = (x118 >> 0x15);
+ { uint32_t x120 = ((uint32_t)x118 & 0x1fffff);
+ { uint64_t x121 = (x119 + x53);
+ { uint64_t x122 = (x121 >> 0x15);
+ { uint32_t x123 = ((uint32_t)x121 & 0x1fffff);
+ { uint64_t x124 = (x122 + x52);
+ { uint64_t x125 = (x124 >> 0x16);
+ { uint32_t x126 = ((uint32_t)x124 & 0x3fffff);
+ { uint64_t x127 = (x125 + x51);
+ { uint64_t x128 = (x127 >> 0x15);
+ { uint32_t x129 = ((uint32_t)x127 & 0x1fffff);
+ { uint64_t x130 = (x128 + x50);
+ { uint64_t x131 = (x130 >> 0x15);
+ { uint32_t x132 = ((uint32_t)x130 & 0x1fffff);
+ { uint64_t x133 = (x131 + x49);
+ { uint64_t x134 = (x133 >> 0x16);
+ { uint32_t x135 = ((uint32_t)x133 & 0x3fffff);
+ { uint64_t x136 = (x134 + x48);
+ { uint64_t x137 = (x136 >> 0x15);
+ { uint32_t x138 = ((uint32_t)x136 & 0x1fffff);
+ { uint64_t x139 = (x137 + x47);
+ { uint32_t x140 = (uint32_t) (x139 >> 0x15);
+ { uint32_t x141 = ((uint32_t)x139 & 0x1fffff);
+ { uint64_t x142 = (x72 + ((uint64_t)0x239 * x140));
+ { uint32_t x143 = (uint32_t) (x142 >> 0x16);
+ { uint32_t x144 = ((uint32_t)x142 & 0x3fffff);
+ { uint32_t x145 = (x143 + x75);
+ { uint32_t x146 = (x145 >> 0x15);
+ { uint32_t x147 = (x145 & 0x1fffff);
+ out[0] = x144;
+ out[1] = x147;
+ out[2] = (x146 + x78);
+ out[3] = x81;
+ out[4] = x84;
+ out[5] = x87;
+ out[6] = x90;
+ out[7] = x93;
+ out[8] = x96;
+ out[9] = x99;
+ out[10] = x102;
+ out[11] = x105;
+ out[12] = x108;
+ out[13] = x111;
+ out[14] = x114;
+ out[15] = x117;
+ out[16] = x120;
+ out[17] = x123;
+ out[18] = x126;
+ out[19] = x129;
+ out[20] = x132;
+ out[21] = x135;
+ out[22] = x138;
+ out[23] = x141;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e512m569/freeze.c b/src/Specific/solinas32_2e512m569/freeze.c
index 98cbbf001..17b83cc6c 100644
--- a/src/Specific/solinas32_2e512m569/freeze.c
+++ b/src/Specific/solinas32_2e512m569/freeze.c
@@ -23,7 +23,7 @@ static void freeze(uint32_t out[24], const uint32_t in1[24]) {
{ const uint32_t x6 = in1[2];
{ const uint32_t x4 = in1[1];
{ const uint32_t x2 = in1[0];
- { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4193735);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffdc7);
{ uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0x1fffff);
{ uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0x1fffff);
{ uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x3fffff);
@@ -48,7 +48,7 @@ static void freeze(uint32_t out[24], const uint32_t in1[24]) {
{ uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
{ uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1fffff);
{ uint32_t x119 = (uint32_t)cmovznz(x118, 0x0, 0xffffffff);
- { uint32_t x120 = (x119 & Const 4193735);
+ { uint32_t x120 = (x119 & 0x3ffdc7);
{ uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
{ uint32_t x124 = (x119 & 0x1fffff);
{ uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
diff --git a/src/Specific/solinas32_2e512m569/freezeDisplay.log b/src/Specific/solinas32_2e512m569/freezeDisplay.log
index 28c467151..93577ad27 100644
--- a/src/Specific/solinas32_2e512m569/freezeDisplay.log
+++ b/src/Specific/solinas32_2e512m569/freezeDisplay.log
@@ -2,7 +2,7 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x45, x46, x44, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
- uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4193735);
+ uint32_t x48, uint8_t x49 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffdc7);
uint32_t x51, uint8_t x52 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x4, 0x1fffff);
uint32_t x54, uint8_t x55 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x52, Return x6, 0x1fffff);
uint32_t x57, uint8_t x58 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x55, Return x8, 0x3fffff);
@@ -27,7 +27,7 @@ Interp-η
uint32_t x114, uint8_t x115 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x112, Return x46, 0x1fffff);
uint32_t x117, uint8_t x118 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x115, Return x45, 0x1fffff);
uint32_t x119 = (uint32_t)cmovznz(x118, 0x0, 0xffffffff);
- uint32_t x120 = (x119 & Const 4193735);
+ uint32_t x120 = (x119 & 0x3ffdc7);
uint32_t x122, uint8_t x123 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x48, Return x120);
uint32_t x124 = (x119 & 0x1fffff);
uint32_t x126, uint8_t x127 = Op (Syntax.AddWithGetCarry 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x123, Return x51, Return x124);
diff --git a/src/Specific/solinas32_2e521m1/femul.c b/src/Specific/solinas32_2e521m1/femul.c
new file mode 100644
index 000000000..5d3dd9fd8
--- /dev/null
+++ b/src/Specific/solinas32_2e521m1/femul.c
@@ -0,0 +1,148 @@
+static void femul(uint32_t out[20], const uint32_t in1[20], const uint32_t in2[20]) {
+ { const uint32_t x40 = 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 x78 = in2[19];
+ { const uint32_t x79 = in2[18];
+ { const uint32_t x77 = in2[17];
+ { const uint32_t x75 = in2[16];
+ { const uint32_t x73 = in2[15];
+ { const uint32_t x71 = in2[14];
+ { const uint32_t x69 = in2[13];
+ { const uint32_t x67 = in2[12];
+ { const uint32_t x65 = in2[11];
+ { const uint32_t x63 = in2[10];
+ { const uint32_t x61 = in2[9];
+ { const uint32_t x59 = in2[8];
+ { const uint32_t x57 = in2[7];
+ { const uint32_t x55 = in2[6];
+ { const uint32_t x53 = in2[5];
+ { const uint32_t x51 = in2[4];
+ { const uint32_t x49 = in2[3];
+ { const uint32_t x47 = in2[2];
+ { const uint32_t x45 = in2[1];
+ { const uint32_t x43 = in2[0];
+ { uint64_t x80 = (((uint64_t)x5 * x78) + ((0x2 * ((uint64_t)x7 * x79)) + ((0x2 * ((uint64_t)x9 * x77)) + ((0x2 * ((uint64_t)x11 * x75)) + ((0x2 * ((uint64_t)x13 * x73)) + ((0x2 * ((uint64_t)x15 * x71)) + ((0x2 * ((uint64_t)x17 * x69)) + ((0x2 * ((uint64_t)x19 * x67)) + ((0x2 * ((uint64_t)x21 * x65)) + ((0x2 * ((uint64_t)x23 * x63)) + ((0x2 * ((uint64_t)x25 * x61)) + ((0x2 * ((uint64_t)x27 * x59)) + ((0x2 * ((uint64_t)x29 * x57)) + ((0x2 * ((uint64_t)x31 * x55)) + ((0x2 * ((uint64_t)x33 * x53)) + ((0x2 * ((uint64_t)x35 * x51)) + ((0x2 * ((uint64_t)x37 * x49)) + ((0x2 * ((uint64_t)x39 * x47)) + ((0x2 * ((uint64_t)x41 * x45)) + ((uint64_t)x40 * x43))))))))))))))))))));
+ { uint64_t x81 = ((((uint64_t)x5 * x79) + ((0x2 * ((uint64_t)x7 * x77)) + ((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)) + ((uint64_t)x41 * x43))))))))))))))))))) + ((uint64_t)x40 * x78));
+ { uint64_t x82 = ((((uint64_t)x5 * x77) + ((0x2 * ((uint64_t)x7 * x75)) + ((0x2 * ((uint64_t)x9 * x73)) + ((0x2 * ((uint64_t)x11 * x71)) + ((0x2 * ((uint64_t)x13 * x69)) + ((0x2 * ((uint64_t)x15 * x67)) + ((0x2 * ((uint64_t)x17 * x65)) + ((0x2 * ((uint64_t)x19 * x63)) + ((0x2 * ((uint64_t)x21 * x61)) + ((0x2 * ((uint64_t)x23 * x59)) + ((0x2 * ((uint64_t)x25 * x57)) + ((0x2 * ((uint64_t)x27 * x55)) + ((0x2 * ((uint64_t)x29 * x53)) + ((0x2 * ((uint64_t)x31 * x51)) + ((0x2 * ((uint64_t)x33 * x49)) + ((0x2 * ((uint64_t)x35 * x47)) + ((0x2 * ((uint64_t)x37 * x45)) + ((uint64_t)x39 * x43)))))))))))))))))) + (((uint64_t)x41 * x78) + ((uint64_t)x40 * x79)));
+ { uint64_t x83 = ((((uint64_t)x5 * x75) + ((0x2 * ((uint64_t)x7 * x73)) + ((0x2 * ((uint64_t)x9 * x71)) + ((0x2 * ((uint64_t)x11 * x69)) + ((0x2 * ((uint64_t)x13 * x67)) + ((0x2 * ((uint64_t)x15 * x65)) + ((0x2 * ((uint64_t)x17 * x63)) + ((0x2 * ((uint64_t)x19 * x61)) + ((0x2 * ((uint64_t)x21 * x59)) + ((0x2 * ((uint64_t)x23 * x57)) + ((0x2 * ((uint64_t)x25 * x55)) + ((0x2 * ((uint64_t)x27 * x53)) + ((0x2 * ((uint64_t)x29 * x51)) + ((0x2 * ((uint64_t)x31 * x49)) + ((0x2 * ((uint64_t)x33 * x47)) + ((0x2 * ((uint64_t)x35 * x45)) + ((uint64_t)x37 * x43))))))))))))))))) + (((uint64_t)x39 * x78) + (((uint64_t)x41 * x79) + ((uint64_t)x40 * x77))));
+ { uint64_t x84 = ((((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)) + ((0x2 * ((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)) + ((0x2 * ((uint64_t)x33 * x45)) + ((uint64_t)x35 * x43)))))))))))))))) + (((uint64_t)x37 * x78) + (((uint64_t)x39 * x79) + (((uint64_t)x41 * x77) + ((uint64_t)x40 * x75)))));
+ { uint64_t x85 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + ((0x2 * ((uint64_t)x13 * x63)) + ((0x2 * ((uint64_t)x15 * x61)) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + ((0x2 * ((uint64_t)x21 * x55)) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((0x2 * ((uint64_t)x29 * x47)) + ((0x2 * ((uint64_t)x31 * x45)) + ((uint64_t)x33 * x43))))))))))))))) + (((uint64_t)x35 * x78) + (((uint64_t)x37 * x79) + (((uint64_t)x39 * x77) + (((uint64_t)x41 * x75) + ((uint64_t)x40 * x73))))));
+ { uint64_t x86 = ((((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)) + ((0x2 * ((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)) + ((uint64_t)x31 * x43)))))))))))))) + (((uint64_t)x33 * x78) + (((uint64_t)x35 * x79) + (((uint64_t)x37 * x77) + (((uint64_t)x39 * x75) + (((uint64_t)x41 * x73) + ((uint64_t)x40 * x71)))))));
+ { uint64_t x87 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + ((0x2 * ((uint64_t)x9 * x63)) + ((0x2 * ((uint64_t)x11 * x61)) + ((0x2 * ((uint64_t)x13 * x59)) + ((0x2 * ((uint64_t)x15 * x57)) + ((0x2 * ((uint64_t)x17 * x55)) + ((0x2 * ((uint64_t)x19 * x53)) + ((0x2 * ((uint64_t)x21 * x51)) + ((0x2 * ((uint64_t)x23 * x49)) + ((0x2 * ((uint64_t)x25 * x47)) + ((0x2 * ((uint64_t)x27 * x45)) + ((uint64_t)x29 * x43))))))))))))) + (((uint64_t)x31 * x78) + (((uint64_t)x33 * x79) + (((uint64_t)x35 * x77) + (((uint64_t)x37 * x75) + (((uint64_t)x39 * x73) + (((uint64_t)x41 * x71) + ((uint64_t)x40 * x69))))))));
+ { uint64_t x88 = ((((uint64_t)x5 * x65) + ((0x2 * ((uint64_t)x7 * x63)) + ((0x2 * ((uint64_t)x9 * x61)) + ((0x2 * ((uint64_t)x11 * x59)) + ((0x2 * ((uint64_t)x13 * x57)) + ((0x2 * ((uint64_t)x15 * x55)) + ((0x2 * ((uint64_t)x17 * x53)) + ((0x2 * ((uint64_t)x19 * x51)) + ((0x2 * ((uint64_t)x21 * x49)) + ((0x2 * ((uint64_t)x23 * x47)) + ((0x2 * ((uint64_t)x25 * x45)) + ((uint64_t)x27 * x43)))))))))))) + (((uint64_t)x29 * x78) + (((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)x40 * x67)))))))));
+ { uint64_t x89 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + ((0x2 * ((uint64_t)x13 * x55)) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((0x2 * ((uint64_t)x21 * x47)) + ((0x2 * ((uint64_t)x23 * x45)) + ((uint64_t)x25 * x43))))))))))) + (((uint64_t)x27 * x78) + (((uint64_t)x29 * x79) + (((uint64_t)x31 * x77) + (((uint64_t)x33 * x75) + (((uint64_t)x35 * x73) + (((uint64_t)x37 * x71) + (((uint64_t)x39 * x69) + (((uint64_t)x41 * x67) + ((uint64_t)x40 * x65))))))))));
+ { uint64_t x90 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + ((0x2 * ((uint64_t)x11 * x55)) + ((0x2 * ((uint64_t)x13 * x53)) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((0x2 * ((uint64_t)x19 * x47)) + ((0x2 * ((uint64_t)x21 * x45)) + ((uint64_t)x23 * x43)))))))))) + (((uint64_t)x25 * x78) + (((uint64_t)x27 * x79) + (((uint64_t)x29 * x77) + (((uint64_t)x31 * x75) + (((uint64_t)x33 * x73) + (((uint64_t)x35 * x71) + (((uint64_t)x37 * x69) + (((uint64_t)x39 * x67) + (((uint64_t)x41 * x65) + ((uint64_t)x40 * x63)))))))))));
+ { uint64_t x91 = ((((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)) + ((0x2 * ((uint64_t)x19 * x45)) + ((uint64_t)x21 * x43))))))))) + (((uint64_t)x23 * x78) + (((uint64_t)x25 * x79) + (((uint64_t)x27 * x77) + (((uint64_t)x29 * x75) + (((uint64_t)x31 * x73) + (((uint64_t)x33 * x71) + (((uint64_t)x35 * x69) + (((uint64_t)x37 * x67) + (((uint64_t)x39 * x65) + (((uint64_t)x41 * x63) + ((uint64_t)x40 * x61))))))))))));
+ { uint64_t x92 = ((((uint64_t)x5 * x57) + ((0x2 * ((uint64_t)x7 * x55)) + ((0x2 * ((uint64_t)x9 * x53)) + ((0x2 * ((uint64_t)x11 * x51)) + ((0x2 * ((uint64_t)x13 * x49)) + ((0x2 * ((uint64_t)x15 * x47)) + ((0x2 * ((uint64_t)x17 * x45)) + ((uint64_t)x19 * x43)))))))) + (((uint64_t)x21 * x78) + (((uint64_t)x23 * x79) + (((uint64_t)x25 * x77) + (((uint64_t)x27 * x75) + (((uint64_t)x29 * x73) + (((uint64_t)x31 * x71) + (((uint64_t)x33 * x69) + (((uint64_t)x35 * x67) + (((uint64_t)x37 * x65) + (((uint64_t)x39 * x63) + (((uint64_t)x41 * x61) + ((uint64_t)x40 * x59)))))))))))));
+ { uint64_t x93 = ((((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)) + ((uint64_t)x17 * x43))))))) + (((uint64_t)x19 * x78) + (((uint64_t)x21 * x79) + (((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) + (((uint64_t)x37 * x63) + (((uint64_t)x39 * x61) + (((uint64_t)x41 * x59) + ((uint64_t)x40 * x57))))))))))))));
+ { uint64_t x94 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((0x2 * ((uint64_t)x11 * x47)) + ((0x2 * ((uint64_t)x13 * x45)) + ((uint64_t)x15 * x43)))))) + (((uint64_t)x17 * x78) + (((uint64_t)x19 * x79) + (((uint64_t)x21 * x77) + (((uint64_t)x23 * x75) + (((uint64_t)x25 * x73) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + (((uint64_t)x33 * x65) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + (((uint64_t)x39 * x59) + (((uint64_t)x41 * x57) + ((uint64_t)x40 * x55)))))))))))))));
+ { uint64_t x95 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((0x2 * ((uint64_t)x9 * x47)) + ((0x2 * ((uint64_t)x11 * x45)) + ((uint64_t)x13 * x43))))) + (((uint64_t)x15 * x78) + (((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)x40 * x53))))))))))))))));
+ { uint64_t x96 = ((((uint64_t)x5 * x49) + ((0x2 * ((uint64_t)x7 * x47)) + ((0x2 * ((uint64_t)x9 * x45)) + ((uint64_t)x11 * x43)))) + (((uint64_t)x13 * x78) + (((uint64_t)x15 * x79) + (((uint64_t)x17 * x77) + (((uint64_t)x19 * x75) + (((uint64_t)x21 * x73) + (((uint64_t)x23 * x71) + (((uint64_t)x25 * x69) + (((uint64_t)x27 * x67) + (((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)x41 * x53) + ((uint64_t)x40 * x51)))))))))))))))));
+ { uint64_t x97 = ((((uint64_t)x5 * x47) + ((0x2 * ((uint64_t)x7 * x45)) + ((uint64_t)x9 * x43))) + (((uint64_t)x11 * x78) + (((uint64_t)x13 * x79) + (((uint64_t)x15 * x77) + (((uint64_t)x17 * x75) + (((uint64_t)x19 * x73) + (((uint64_t)x21 * x71) + (((uint64_t)x23 * x69) + (((uint64_t)x25 * x67) + (((uint64_t)x27 * x65) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + (((uint64_t)x33 * x59) + (((uint64_t)x35 * x57) + (((uint64_t)x37 * x55) + (((uint64_t)x39 * x53) + (((uint64_t)x41 * x51) + ((uint64_t)x40 * x49))))))))))))))))));
+ { uint64_t x98 = ((((uint64_t)x5 * x45) + ((uint64_t)x7 * x43)) + (((uint64_t)x9 * x78) + (((uint64_t)x11 * x79) + (((uint64_t)x13 * x77) + (((uint64_t)x15 * x75) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + (((uint64_t)x23 * x67) + (((uint64_t)x25 * x65) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + (((uint64_t)x33 * x57) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + (((uint64_t)x39 * x51) + (((uint64_t)x41 * x49) + ((uint64_t)x40 * x47)))))))))))))))))));
+ { uint64_t x99 = (((uint64_t)x5 * x43) + ((0x2 * ((uint64_t)x7 * x78)) + ((0x2 * ((uint64_t)x9 * x79)) + ((0x2 * ((uint64_t)x11 * x77)) + ((0x2 * ((uint64_t)x13 * x75)) + ((0x2 * ((uint64_t)x15 * x73)) + ((0x2 * ((uint64_t)x17 * x71)) + ((0x2 * ((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)) + ((0x2 * ((uint64_t)x33 * x55)) + ((0x2 * ((uint64_t)x35 * x53)) + ((0x2 * ((uint64_t)x37 * x51)) + ((0x2 * ((uint64_t)x39 * x49)) + ((0x2 * ((uint64_t)x41 * x47)) + (0x2 * ((uint64_t)x40 * x45)))))))))))))))))))));
+ { uint64_t x100 = (x99 >> 0x1b);
+ { uint32_t x101 = ((uint32_t)x99 & 0x7ffffff);
+ { uint64_t x102 = (x100 + x98);
+ { uint64_t x103 = (x102 >> 0x1a);
+ { uint32_t x104 = ((uint32_t)x102 & 0x3ffffff);
+ { uint64_t x105 = (x103 + x97);
+ { uint64_t x106 = (x105 >> 0x1a);
+ { uint32_t x107 = ((uint32_t)x105 & 0x3ffffff);
+ { uint64_t x108 = (x106 + x96);
+ { uint64_t x109 = (x108 >> 0x1a);
+ { uint32_t x110 = ((uint32_t)x108 & 0x3ffffff);
+ { uint64_t x111 = (x109 + x95);
+ { uint64_t x112 = (x111 >> 0x1a);
+ { uint32_t x113 = ((uint32_t)x111 & 0x3ffffff);
+ { uint64_t x114 = (x112 + x94);
+ { uint64_t x115 = (x114 >> 0x1a);
+ { uint32_t x116 = ((uint32_t)x114 & 0x3ffffff);
+ { uint64_t x117 = (x115 + x93);
+ { uint64_t x118 = (x117 >> 0x1a);
+ { uint32_t x119 = ((uint32_t)x117 & 0x3ffffff);
+ { uint64_t x120 = (x118 + x92);
+ { uint64_t x121 = (x120 >> 0x1a);
+ { uint32_t x122 = ((uint32_t)x120 & 0x3ffffff);
+ { uint64_t x123 = (x121 + x91);
+ { uint64_t x124 = (x123 >> 0x1a);
+ { uint32_t x125 = ((uint32_t)x123 & 0x3ffffff);
+ { uint64_t x126 = (x124 + x90);
+ { uint64_t x127 = (x126 >> 0x1a);
+ { uint32_t x128 = ((uint32_t)x126 & 0x3ffffff);
+ { uint64_t x129 = (x127 + x89);
+ { uint64_t x130 = (x129 >> 0x1a);
+ { uint32_t x131 = ((uint32_t)x129 & 0x3ffffff);
+ { uint64_t x132 = (x130 + x88);
+ { uint64_t x133 = (x132 >> 0x1a);
+ { uint32_t x134 = ((uint32_t)x132 & 0x3ffffff);
+ { uint64_t x135 = (x133 + x87);
+ { uint64_t x136 = (x135 >> 0x1a);
+ { uint32_t x137 = ((uint32_t)x135 & 0x3ffffff);
+ { uint64_t x138 = (x136 + x86);
+ { uint64_t x139 = (x138 >> 0x1a);
+ { uint32_t x140 = ((uint32_t)x138 & 0x3ffffff);
+ { uint64_t x141 = (x139 + x85);
+ { uint64_t x142 = (x141 >> 0x1a);
+ { uint32_t x143 = ((uint32_t)x141 & 0x3ffffff);
+ { uint64_t x144 = (x142 + x84);
+ { uint64_t x145 = (x144 >> 0x1a);
+ { uint32_t x146 = ((uint32_t)x144 & 0x3ffffff);
+ { uint64_t x147 = (x145 + x83);
+ { uint64_t x148 = (x147 >> 0x1a);
+ { uint32_t x149 = ((uint32_t)x147 & 0x3ffffff);
+ { uint64_t x150 = (x148 + x82);
+ { uint64_t x151 = (x150 >> 0x1a);
+ { uint32_t x152 = ((uint32_t)x150 & 0x3ffffff);
+ { uint64_t x153 = (x151 + x81);
+ { uint64_t x154 = (x153 >> 0x1a);
+ { uint32_t x155 = ((uint32_t)x153 & 0x3ffffff);
+ { uint64_t x156 = (x154 + x80);
+ { uint64_t x157 = (x156 >> 0x1a);
+ { uint32_t x158 = ((uint32_t)x156 & 0x3ffffff);
+ { uint64_t x159 = (x101 + x157);
+ { uint32_t x160 = (uint32_t) (x159 >> 0x1b);
+ { uint32_t x161 = ((uint32_t)x159 & 0x7ffffff);
+ { uint32_t x162 = (x160 + x104);
+ { uint32_t x163 = (x162 >> 0x1a);
+ { uint32_t x164 = (x162 & 0x3ffffff);
+ out[0] = x161;
+ out[1] = x164;
+ out[2] = (x163 + x107);
+ out[3] = x110;
+ out[4] = x113;
+ out[5] = x116;
+ out[6] = x119;
+ out[7] = x122;
+ out[8] = x125;
+ out[9] = x128;
+ out[10] = x131;
+ out[11] = x134;
+ out[12] = x137;
+ out[13] = x140;
+ out[14] = x143;
+ out[15] = x146;
+ out[16] = x149;
+ out[17] = x152;
+ out[18] = x155;
+ out[19] = x158;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e127m1/feadd.c b/src/Specific/solinas64_2e127m1/feadd.c
new file mode 100644
index 000000000..725c1f205
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1/feadd.c
@@ -0,0 +1,12 @@
+static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = (x5 + x9);
+ out[1] = (x7 + x11);
+ out[2] = (x6 + x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e127m1/feaddDisplay.log b/src/Specific/solinas64_2e127m1/feaddDisplay.log
new file mode 100644
index 000000000..64fb467ef
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ ((x6 + x10), (x7 + x11), (x5 + x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e127m1/fesub.c b/src/Specific/solinas64_2e127m1/fesub.c
new file mode 100644
index 000000000..5f8e95fb5
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1/fesub.c
@@ -0,0 +1,12 @@
+static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = ((Const 17592186044414 + x5) - x9);
+ out[1] = ((Const 8796093022206 + x7) - x11);
+ out[2] = ((Const 8796093022206 + x6) - x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e127m1/fesubDisplay.log b/src/Specific/solinas64_2e127m1/fesubDisplay.log
new file mode 100644
index 000000000..d75d25535
--- /dev/null
+++ b/src/Specific/solinas64_2e127m1/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ (((Const 8796093022206 + x6) - x10), ((Const 8796093022206 + x7) - x11), ((Const 17592186044414 + x5) - x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e129m25/feadd.c b/src/Specific/solinas64_2e129m25/feadd.c
new file mode 100644
index 000000000..725c1f205
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25/feadd.c
@@ -0,0 +1,12 @@
+static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = (x5 + x9);
+ out[1] = (x7 + x11);
+ out[2] = (x6 + x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e129m25/feaddDisplay.log b/src/Specific/solinas64_2e129m25/feaddDisplay.log
new file mode 100644
index 000000000..64fb467ef
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ ((x6 + x10), (x7 + x11), (x5 + x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e129m25/fesub.c b/src/Specific/solinas64_2e129m25/fesub.c
new file mode 100644
index 000000000..06b38e2ae
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25/fesub.c
@@ -0,0 +1,12 @@
+static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = ((Const 17592186044366 + x5) - x9);
+ out[1] = ((Const 17592186044414 + x7) - x11);
+ out[2] = ((Const 17592186044414 + x6) - x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e129m25/fesubDisplay.log b/src/Specific/solinas64_2e129m25/fesubDisplay.log
new file mode 100644
index 000000000..153df42c2
--- /dev/null
+++ b/src/Specific/solinas64_2e129m25/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ (((Const 17592186044414 + x6) - x10), ((Const 17592186044414 + x7) - x11), ((Const 17592186044366 + x5) - x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e130m5/feadd.c b/src/Specific/solinas64_2e130m5/feadd.c
new file mode 100644
index 000000000..725c1f205
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5/feadd.c
@@ -0,0 +1,12 @@
+static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = (x5 + x9);
+ out[1] = (x7 + x11);
+ out[2] = (x6 + x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e130m5/feaddDisplay.log b/src/Specific/solinas64_2e130m5/feaddDisplay.log
new file mode 100644
index 000000000..64fb467ef
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ ((x6 + x10), (x7 + x11), (x5 + x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e130m5/fesub.c b/src/Specific/solinas64_2e130m5/fesub.c
new file mode 100644
index 000000000..b9e72fcc9
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5/fesub.c
@@ -0,0 +1,12 @@
+static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = ((Const 35184372088822 + x5) - x9);
+ out[1] = ((Const 17592186044414 + x7) - x11);
+ out[2] = ((Const 17592186044414 + x6) - x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e130m5/fesubDisplay.log b/src/Specific/solinas64_2e130m5/fesubDisplay.log
new file mode 100644
index 000000000..70a105f3a
--- /dev/null
+++ b/src/Specific/solinas64_2e130m5/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ (((Const 17592186044414 + x6) - x10), ((Const 17592186044414 + x7) - x11), ((Const 35184372088822 + x5) - x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e137m13/feadd.c b/src/Specific/solinas64_2e137m13/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e137m13/feaddDisplay.log b/src/Specific/solinas64_2e137m13/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e137m13/fesub.c b/src/Specific/solinas64_2e137m13/fesub.c
new file mode 100644
index 000000000..849cad8b2
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 68719476710 + x5) - x11);
+ out[1] = ((Const 34359738366 + x7) - x13);
+ out[2] = ((Const 34359738366 + x9) - x15);
+ out[3] = ((Const 34359738366 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e137m13/fesubDisplay.log b/src/Specific/solinas64_2e137m13/fesubDisplay.log
new file mode 100644
index 000000000..d6a451175
--- /dev/null
+++ b/src/Specific/solinas64_2e137m13/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 34359738366 + x8) - x14), ((Const 34359738366 + x9) - x15), ((Const 34359738366 + x7) - x13), ((Const 68719476710 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e140m27/feadd.c b/src/Specific/solinas64_2e140m27/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e140m27/feaddDisplay.log b/src/Specific/solinas64_2e140m27/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e140m27/fesub.c b/src/Specific/solinas64_2e140m27/fesub.c
new file mode 100644
index 000000000..1f40ffbce
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 68719476682 + x5) - x11);
+ out[1] = ((Const 68719476734 + x7) - x13);
+ out[2] = ((Const 68719476734 + x9) - x15);
+ out[3] = ((Const 68719476734 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e140m27/fesubDisplay.log b/src/Specific/solinas64_2e140m27/fesubDisplay.log
new file mode 100644
index 000000000..e5ded268f
--- /dev/null
+++ b/src/Specific/solinas64_2e140m27/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 68719476734 + x8) - x14), ((Const 68719476734 + x9) - x15), ((Const 68719476734 + x7) - x13), ((Const 68719476682 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e141m9/feadd.c b/src/Specific/solinas64_2e141m9/feadd.c
new file mode 100644
index 000000000..725c1f205
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9/feadd.c
@@ -0,0 +1,12 @@
+static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = (x5 + x9);
+ out[1] = (x7 + x11);
+ out[2] = (x6 + x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e141m9/feaddDisplay.log b/src/Specific/solinas64_2e141m9/feaddDisplay.log
new file mode 100644
index 000000000..64fb467ef
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ ((x6 + x10), (x7 + x11), (x5 + x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e141m9/fesub.c b/src/Specific/solinas64_2e141m9/fesub.c
new file mode 100644
index 000000000..b9eada947
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9/fesub.c
@@ -0,0 +1,12 @@
+static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = ((Const 281474976710638 + x5) - x9);
+ out[1] = ((Const 281474976710654 + x7) - x11);
+ out[2] = ((Const 281474976710654 + x6) - x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e141m9/fesubDisplay.log b/src/Specific/solinas64_2e141m9/fesubDisplay.log
new file mode 100644
index 000000000..b47ac81d4
--- /dev/null
+++ b/src/Specific/solinas64_2e141m9/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ (((Const 281474976710654 + x6) - x10), ((Const 281474976710654 + x7) - x11), ((Const 281474976710638 + x5) - x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m3/feadd.c b/src/Specific/solinas64_2e150m3/feadd.c
new file mode 100644
index 000000000..725c1f205
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3/feadd.c
@@ -0,0 +1,12 @@
+static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = (x5 + x9);
+ out[1] = (x7 + x11);
+ out[2] = (x6 + x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e150m3/feaddDisplay.log b/src/Specific/solinas64_2e150m3/feaddDisplay.log
new file mode 100644
index 000000000..64fb467ef
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ ((x6 + x10), (x7 + x11), (x5 + x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m3/fesub.c b/src/Specific/solinas64_2e150m3/fesub.c
new file mode 100644
index 000000000..d5bf051b4
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3/fesub.c
@@ -0,0 +1,12 @@
+static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = ((Const 2251799813685242 + x5) - x9);
+ out[1] = ((Const 2251799813685246 + x7) - x11);
+ out[2] = ((Const 2251799813685246 + x6) - x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e150m3/fesubDisplay.log b/src/Specific/solinas64_2e150m3/fesubDisplay.log
new file mode 100644
index 000000000..8c977fe6b
--- /dev/null
+++ b/src/Specific/solinas64_2e150m3/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ (((Const 2251799813685246 + x6) - x10), ((Const 2251799813685246 + x7) - x11), ((Const 2251799813685242 + x5) - x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m5/feadd.c b/src/Specific/solinas64_2e150m5/feadd.c
new file mode 100644
index 000000000..725c1f205
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5/feadd.c
@@ -0,0 +1,12 @@
+static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = (x5 + x9);
+ out[1] = (x7 + x11);
+ out[2] = (x6 + x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e150m5/feaddDisplay.log b/src/Specific/solinas64_2e150m5/feaddDisplay.log
new file mode 100644
index 000000000..64fb467ef
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ ((x6 + x10), (x7 + x11), (x5 + x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m5/fesub.c b/src/Specific/solinas64_2e150m5/fesub.c
new file mode 100644
index 000000000..4d6281085
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5/fesub.c
@@ -0,0 +1,12 @@
+static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = ((Const 2251799813685238 + x5) - x9);
+ out[1] = ((Const 2251799813685246 + x7) - x11);
+ out[2] = ((Const 2251799813685246 + x6) - x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e150m5/fesubDisplay.log b/src/Specific/solinas64_2e150m5/fesubDisplay.log
new file mode 100644
index 000000000..2a6d10e3c
--- /dev/null
+++ b/src/Specific/solinas64_2e150m5/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ (((Const 2251799813685246 + x6) - x10), ((Const 2251799813685246 + x7) - x11), ((Const 2251799813685238 + x5) - x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e152m17/feadd.c b/src/Specific/solinas64_2e152m17/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e152m17/feaddDisplay.log b/src/Specific/solinas64_2e152m17/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e152m17/fesub.c b/src/Specific/solinas64_2e152m17/fesub.c
new file mode 100644
index 000000000..5f47aef9c
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 549755813854 + x5) - x11);
+ out[1] = ((Const 549755813886 + x7) - x13);
+ out[2] = ((Const 549755813886 + x9) - x15);
+ out[3] = ((Const 549755813886 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e152m17/fesubDisplay.log b/src/Specific/solinas64_2e152m17/fesubDisplay.log
new file mode 100644
index 000000000..fa8ed8270
--- /dev/null
+++ b/src/Specific/solinas64_2e152m17/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 549755813886 + x8) - x14), ((Const 549755813886 + x9) - x15), ((Const 549755813886 + x7) - x13), ((Const 549755813854 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e158m15/feadd.c b/src/Specific/solinas64_2e158m15/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e158m15/feaddDisplay.log b/src/Specific/solinas64_2e158m15/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e158m15/fesub.c b/src/Specific/solinas64_2e158m15/fesub.c
new file mode 100644
index 000000000..40726db3e
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 2199023255522 + x5) - x11);
+ out[1] = ((Const 1099511627774 + x7) - x13);
+ out[2] = ((Const 2199023255550 + x9) - x15);
+ out[3] = ((Const 1099511627774 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e158m15/fesubDisplay.log b/src/Specific/solinas64_2e158m15/fesubDisplay.log
new file mode 100644
index 000000000..28107c90f
--- /dev/null
+++ b/src/Specific/solinas64_2e158m15/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 1099511627774 + x8) - x14), ((Const 2199023255550 + x9) - x15), ((Const 1099511627774 + x7) - x13), ((Const 2199023255522 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e165m25/feadd.c b/src/Specific/solinas64_2e165m25/feadd.c
new file mode 100644
index 000000000..725c1f205
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25/feadd.c
@@ -0,0 +1,12 @@
+static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = (x5 + x9);
+ out[1] = (x7 + x11);
+ out[2] = (x6 + x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e165m25/feaddDisplay.log b/src/Specific/solinas64_2e165m25/feaddDisplay.log
new file mode 100644
index 000000000..64fb467ef
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ ((x6 + x10), (x7 + x11), (x5 + x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e165m25/fesub.c b/src/Specific/solinas64_2e165m25/fesub.c
new file mode 100644
index 000000000..20797c504
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25/fesub.c
@@ -0,0 +1,12 @@
+static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = ((Const 72057594037927886 + x5) - x9);
+ out[1] = ((0xfffffffffffffe + x7) - x11);
+ out[2] = ((0xfffffffffffffe + x6) - x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e165m25/fesubDisplay.log b/src/Specific/solinas64_2e165m25/fesubDisplay.log
new file mode 100644
index 000000000..09ed125f0
--- /dev/null
+++ b/src/Specific/solinas64_2e165m25/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ (((0xfffffffffffffe + x6) - x10), ((0xfffffffffffffe + x7) - x11), ((Const 72057594037927886 + x5) - x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e166m5/feadd.c b/src/Specific/solinas64_2e166m5/feadd.c
new file mode 100644
index 000000000..725c1f205
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5/feadd.c
@@ -0,0 +1,12 @@
+static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = (x5 + x9);
+ out[1] = (x7 + x11);
+ out[2] = (x6 + x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e166m5/feaddDisplay.log b/src/Specific/solinas64_2e166m5/feaddDisplay.log
new file mode 100644
index 000000000..64fb467ef
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ ((x6 + x10), (x7 + x11), (x5 + x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e166m5/fesub.c b/src/Specific/solinas64_2e166m5/fesub.c
new file mode 100644
index 000000000..ce25cf73f
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5/fesub.c
@@ -0,0 +1,12 @@
+static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = ((Const 144115188075855862 + x5) - x9);
+ out[1] = ((0xfffffffffffffe + x7) - x11);
+ out[2] = ((0xfffffffffffffe + x6) - x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e166m5/fesubDisplay.log b/src/Specific/solinas64_2e166m5/fesubDisplay.log
new file mode 100644
index 000000000..3a20d4dbf
--- /dev/null
+++ b/src/Specific/solinas64_2e166m5/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ (((0xfffffffffffffe + x6) - x10), ((0xfffffffffffffe + x7) - x11), ((Const 144115188075855862 + x5) - x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e171m19/feadd.c b/src/Specific/solinas64_2e171m19/feadd.c
new file mode 100644
index 000000000..725c1f205
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19/feadd.c
@@ -0,0 +1,12 @@
+static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = (x5 + x9);
+ out[1] = (x7 + x11);
+ out[2] = (x6 + x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e171m19/feaddDisplay.log b/src/Specific/solinas64_2e171m19/feaddDisplay.log
new file mode 100644
index 000000000..64fb467ef
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ ((x6 + x10), (x7 + x11), (x5 + x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e171m19/fesub.c b/src/Specific/solinas64_2e171m19/fesub.c
new file mode 100644
index 000000000..f958f21fe
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19/fesub.c
@@ -0,0 +1,12 @@
+static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = ((Const 288230376151711706 + x5) - x9);
+ out[1] = ((Const 288230376151711742 + x7) - x11);
+ out[2] = ((Const 288230376151711742 + x6) - x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e171m19/fesubDisplay.log b/src/Specific/solinas64_2e171m19/fesubDisplay.log
new file mode 100644
index 000000000..a092985c8
--- /dev/null
+++ b/src/Specific/solinas64_2e171m19/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ (((Const 288230376151711742 + x6) - x10), ((Const 288230376151711742 + x7) - x11), ((Const 288230376151711706 + x5) - x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m17/feadd.c b/src/Specific/solinas64_2e174m17/feadd.c
new file mode 100644
index 000000000..725c1f205
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17/feadd.c
@@ -0,0 +1,12 @@
+static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = (x5 + x9);
+ out[1] = (x7 + x11);
+ out[2] = (x6 + x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e174m17/feaddDisplay.log b/src/Specific/solinas64_2e174m17/feaddDisplay.log
new file mode 100644
index 000000000..64fb467ef
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ ((x6 + x10), (x7 + x11), (x5 + x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m17/fesub.c b/src/Specific/solinas64_2e174m17/fesub.c
new file mode 100644
index 000000000..b7c6fcec8
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17/fesub.c
@@ -0,0 +1,12 @@
+static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = ((Const 576460752303423454 + x5) - x9);
+ out[1] = ((Const 576460752303423486 + x7) - x11);
+ out[2] = ((Const 576460752303423486 + x6) - x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e174m17/fesubDisplay.log b/src/Specific/solinas64_2e174m17/fesubDisplay.log
new file mode 100644
index 000000000..dcc4852c9
--- /dev/null
+++ b/src/Specific/solinas64_2e174m17/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ (((Const 576460752303423486 + x6) - x10), ((Const 576460752303423486 + x7) - x11), ((Const 576460752303423454 + x5) - x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m3/feadd.c b/src/Specific/solinas64_2e174m3/feadd.c
new file mode 100644
index 000000000..725c1f205
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3/feadd.c
@@ -0,0 +1,12 @@
+static void feadd(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = (x5 + x9);
+ out[1] = (x7 + x11);
+ out[2] = (x6 + x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e174m3/feaddDisplay.log b/src/Specific/solinas64_2e174m3/feaddDisplay.log
new file mode 100644
index 000000000..64fb467ef
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ ((x6 + x10), (x7 + x11), (x5 + x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m3/fesub.c b/src/Specific/solinas64_2e174m3/fesub.c
new file mode 100644
index 000000000..09d400b92
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3/fesub.c
@@ -0,0 +1,12 @@
+static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3]) {
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x10 = in2[2];
+ { const uint64_t x11 = in2[1];
+ { const uint64_t x9 = in2[0];
+ out[0] = ((Const 576460752303423482 + x5) - x9);
+ out[1] = ((Const 576460752303423486 + x7) - x11);
+ out[2] = ((Const 576460752303423486 + x6) - x10);
+ }}}}}}
+}
diff --git a/src/Specific/solinas64_2e174m3/fesubDisplay.log b/src/Specific/solinas64_2e174m3/fesubDisplay.log
new file mode 100644
index 000000000..55f1c63c8
--- /dev/null
+++ b/src/Specific/solinas64_2e174m3/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x6, x7, x5, (x10, x11, x9))%core,
+ (((Const 576460752303423486 + x6) - x10), ((Const 576460752303423486 + x7) - x11), ((Const 576460752303423482 + x5) - x9)))
+(x, x0)%core
+ : word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e189m25/feadd.c b/src/Specific/solinas64_2e189m25/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e189m25/feaddDisplay.log b/src/Specific/solinas64_2e189m25/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e189m25/fesub.c b/src/Specific/solinas64_2e189m25/fesub.c
new file mode 100644
index 000000000..5123b6cdc
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 562949953421262 + x5) - x11);
+ out[1] = ((Const 281474976710654 + x7) - x13);
+ out[2] = ((Const 281474976710654 + x9) - x15);
+ out[3] = ((Const 281474976710654 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e189m25/fesubDisplay.log b/src/Specific/solinas64_2e189m25/fesubDisplay.log
new file mode 100644
index 000000000..d916d0327
--- /dev/null
+++ b/src/Specific/solinas64_2e189m25/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 281474976710654 + x8) - x14), ((Const 281474976710654 + x9) - x15), ((Const 281474976710654 + x7) - x13), ((Const 562949953421262 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e190m11/feadd.c b/src/Specific/solinas64_2e190m11/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e190m11/feaddDisplay.log b/src/Specific/solinas64_2e190m11/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e190m11/fesub.c b/src/Specific/solinas64_2e190m11/fesub.c
new file mode 100644
index 000000000..6b1c268d2
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 562949953421290 + x5) - x11);
+ out[1] = ((Const 281474976710654 + x7) - x13);
+ out[2] = ((Const 562949953421310 + x9) - x15);
+ out[3] = ((Const 281474976710654 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e190m11/fesubDisplay.log b/src/Specific/solinas64_2e190m11/fesubDisplay.log
new file mode 100644
index 000000000..0acc401d0
--- /dev/null
+++ b/src/Specific/solinas64_2e190m11/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 281474976710654 + x8) - x14), ((Const 562949953421310 + x9) - x15), ((Const 281474976710654 + x7) - x13), ((Const 562949953421290 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e191m19/feadd.c b/src/Specific/solinas64_2e191m19/feadd.c
new file mode 100644
index 000000000..a05766e0b
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19/feadd.c
@@ -0,0 +1,18 @@
+static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x18 = in2[4];
+ { const uint64_t x19 = in2[3];
+ { const uint64_t x17 = in2[2];
+ { const uint64_t x15 = in2[1];
+ { const uint64_t x13 = in2[0];
+ out[0] = (x5 + x13);
+ out[1] = (x7 + x15);
+ out[2] = (x9 + x17);
+ out[3] = (x11 + x19);
+ out[4] = (x10 + x18);
+ }}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e191m19/feaddDisplay.log b/src/Specific/solinas64_2e191m19/feaddDisplay.log
new file mode 100644
index 000000000..bce3421b2
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
+ ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e191m19/fesub.c b/src/Specific/solinas64_2e191m19/fesub.c
new file mode 100644
index 000000000..c42e6ba88
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19/fesub.c
@@ -0,0 +1,18 @@
+static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x18 = in2[4];
+ { const uint64_t x19 = in2[3];
+ { const uint64_t x17 = in2[2];
+ { const uint64_t x15 = in2[1];
+ { const uint64_t x13 = in2[0];
+ out[0] = ((Const 1099511627738 + x5) - x13);
+ out[1] = ((Const 549755813886 + x7) - x15);
+ out[2] = ((Const 549755813886 + x9) - x17);
+ out[3] = ((Const 549755813886 + x11) - x19);
+ out[4] = ((Const 549755813886 + x10) - x18);
+ }}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e191m19/fesubDisplay.log b/src/Specific/solinas64_2e191m19/fesubDisplay.log
new file mode 100644
index 000000000..ca0c2dcf9
--- /dev/null
+++ b/src/Specific/solinas64_2e191m19/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
+ (((Const 549755813886 + x10) - x18), ((Const 549755813886 + x11) - x19), ((Const 549755813886 + x9) - x17), ((Const 549755813886 + x7) - x15), ((Const 1099511627738 + x5) - x13)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e192m2e64m1/feadd.c b/src/Specific/solinas64_2e192m2e64m1/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e192m2e64m1/feaddDisplay.log b/src/Specific/solinas64_2e192m2e64m1/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e192m2e64m1/fesub.c b/src/Specific/solinas64_2e192m2e64m1/fesub.c
new file mode 100644
index 000000000..cc9fcda07
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 562949953421310 + x5) - x11);
+ out[1] = ((Const 562949953290238 + x7) - x13);
+ out[2] = ((Const 562949953421310 + x9) - x15);
+ out[3] = ((Const 562949953421310 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e192m2e64m1/fesubDisplay.log b/src/Specific/solinas64_2e192m2e64m1/fesubDisplay.log
new file mode 100644
index 000000000..00506e7de
--- /dev/null
+++ b/src/Specific/solinas64_2e192m2e64m1/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 562949953421310 + x8) - x14), ((Const 562949953421310 + x9) - x15), ((Const 562949953290238 + x7) - x13), ((Const 562949953421310 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e194m33/feadd.c b/src/Specific/solinas64_2e194m33/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e194m33/feaddDisplay.log b/src/Specific/solinas64_2e194m33/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e194m33/fesub.c b/src/Specific/solinas64_2e194m33/fesub.c
new file mode 100644
index 000000000..8c6592554
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 1125899906842558 + x5) - x11);
+ out[1] = ((Const 562949953421310 + x7) - x13);
+ out[2] = ((Const 1125899906842622 + x9) - x15);
+ out[3] = ((Const 562949953421310 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e194m33/fesubDisplay.log b/src/Specific/solinas64_2e194m33/fesubDisplay.log
new file mode 100644
index 000000000..606d06032
--- /dev/null
+++ b/src/Specific/solinas64_2e194m33/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 562949953421310 + x8) - x14), ((Const 1125899906842622 + x9) - x15), ((Const 562949953421310 + x7) - x13), ((Const 1125899906842558 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e196m15/feadd.c b/src/Specific/solinas64_2e196m15/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e196m15/feaddDisplay.log b/src/Specific/solinas64_2e196m15/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e196m15/fesub.c b/src/Specific/solinas64_2e196m15/fesub.c
new file mode 100644
index 000000000..700f5d341
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 1125899906842594 + x5) - x11);
+ out[1] = ((Const 1125899906842622 + x7) - x13);
+ out[2] = ((Const 1125899906842622 + x9) - x15);
+ out[3] = ((Const 1125899906842622 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e196m15/fesubDisplay.log b/src/Specific/solinas64_2e196m15/fesubDisplay.log
new file mode 100644
index 000000000..0314e70e1
--- /dev/null
+++ b/src/Specific/solinas64_2e196m15/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 1125899906842622 + x8) - x14), ((Const 1125899906842622 + x9) - x15), ((Const 1125899906842622 + x7) - x13), ((Const 1125899906842594 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e198m17/feadd.c b/src/Specific/solinas64_2e198m17/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e198m17/feaddDisplay.log b/src/Specific/solinas64_2e198m17/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e198m17/fesub.c b/src/Specific/solinas64_2e198m17/fesub.c
new file mode 100644
index 000000000..70778e29f
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 2251799813685214 + x5) - x11);
+ out[1] = ((Const 1125899906842622 + x7) - x13);
+ out[2] = ((Const 2251799813685246 + x9) - x15);
+ out[3] = ((Const 1125899906842622 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e198m17/fesubDisplay.log b/src/Specific/solinas64_2e198m17/fesubDisplay.log
new file mode 100644
index 000000000..5e49eb374
--- /dev/null
+++ b/src/Specific/solinas64_2e198m17/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 1125899906842622 + x8) - x14), ((Const 2251799813685246 + x9) - x15), ((Const 1125899906842622 + x7) - x13), ((Const 2251799813685214 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/feadd.c b/src/Specific/solinas64_2e205m45x2e198m1/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e205m45x2e198m1/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.log b/src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e205m45x2e198m1/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/fesub.c b/src/Specific/solinas64_2e205m45x2e198m1/fesub.c
new file mode 100644
index 000000000..90a6e763c
--- /dev/null
+++ b/src/Specific/solinas64_2e205m45x2e198m1/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 9007199254740990 + x5) - x11);
+ out[1] = ((0xffffffffffffe + x7) - x13);
+ out[2] = ((0xffffffffffffe + x9) - x15);
+ out[3] = ((Const 2920302883373054 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.log b/src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.log
new file mode 100644
index 000000000..7d329c1bb
--- /dev/null
+++ b/src/Specific/solinas64_2e205m45x2e198m1/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 2920302883373054 + x8) - x14), ((0xffffffffffffe + x9) - x15), ((0xffffffffffffe + x7) - x13), ((Const 9007199254740990 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e206m5/feadd.c b/src/Specific/solinas64_2e206m5/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e206m5/feaddDisplay.log b/src/Specific/solinas64_2e206m5/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e206m5/fesub.c b/src/Specific/solinas64_2e206m5/fesub.c
new file mode 100644
index 000000000..98a6bdece
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 9007199254740982 + x5) - x11);
+ out[1] = ((0xffffffffffffe + x7) - x13);
+ out[2] = ((Const 9007199254740990 + x9) - x15);
+ out[3] = ((0xffffffffffffe + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e206m5/fesubDisplay.log b/src/Specific/solinas64_2e206m5/fesubDisplay.log
new file mode 100644
index 000000000..445c7da96
--- /dev/null
+++ b/src/Specific/solinas64_2e206m5/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((0xffffffffffffe + x8) - x14), ((Const 9007199254740990 + x9) - x15), ((0xffffffffffffe + x7) - x13), ((Const 9007199254740982 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e212m29/feadd.c b/src/Specific/solinas64_2e212m29/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e212m29/feaddDisplay.log b/src/Specific/solinas64_2e212m29/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e212m29/fesub.c b/src/Specific/solinas64_2e212m29/fesub.c
new file mode 100644
index 000000000..8cfd53ef8
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 18014398509481926 + x5) - x11);
+ out[1] = ((0x3ffffffffffffe + x7) - x13);
+ out[2] = ((0x3ffffffffffffe + x9) - x15);
+ out[3] = ((0x3ffffffffffffe + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e212m29/fesubDisplay.log b/src/Specific/solinas64_2e212m29/fesubDisplay.log
new file mode 100644
index 000000000..e88b91ff1
--- /dev/null
+++ b/src/Specific/solinas64_2e212m29/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((0x3ffffffffffffe + x8) - x14), ((0x3ffffffffffffe + x9) - x15), ((0x3ffffffffffffe + x7) - x13), ((Const 18014398509481926 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e213m3/feadd.c b/src/Specific/solinas64_2e213m3/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e213m3/feaddDisplay.log b/src/Specific/solinas64_2e213m3/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e213m3/fesub.c b/src/Specific/solinas64_2e213m3/fesub.c
new file mode 100644
index 000000000..38c0506c2
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 36028797018963962 + x5) - x11);
+ out[1] = ((0x3ffffffffffffe + x7) - x13);
+ out[2] = ((0x3ffffffffffffe + x9) - x15);
+ out[3] = ((0x3ffffffffffffe + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e213m3/fesubDisplay.log b/src/Specific/solinas64_2e213m3/fesubDisplay.log
new file mode 100644
index 000000000..026fa6f15
--- /dev/null
+++ b/src/Specific/solinas64_2e213m3/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((0x3ffffffffffffe + x8) - x14), ((0x3ffffffffffffe + x9) - x15), ((0x3ffffffffffffe + x7) - x13), ((Const 36028797018963962 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e216m2e108m1/feadd.c b/src/Specific/solinas64_2e216m2e108m1/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e216m2e108m1/feaddDisplay.log b/src/Specific/solinas64_2e216m2e108m1/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e216m2e108m1/fesub.c b/src/Specific/solinas64_2e216m2e108m1/fesub.c
new file mode 100644
index 000000000..e6fabc42b
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 36028797018963966 + x5) - x11);
+ out[1] = ((Const 36028797018963966 + x7) - x13);
+ out[2] = ((Const 36028797018963964 + x9) - x15);
+ out[3] = ((Const 36028797018963966 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e216m2e108m1/fesubDisplay.log b/src/Specific/solinas64_2e216m2e108m1/fesubDisplay.log
new file mode 100644
index 000000000..e0a155a5a
--- /dev/null
+++ b/src/Specific/solinas64_2e216m2e108m1/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 36028797018963966 + x8) - x14), ((Const 36028797018963964 + x9) - x15), ((Const 36028797018963966 + x7) - x13), ((Const 36028797018963966 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e221m3/feadd.c b/src/Specific/solinas64_2e221m3/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e221m3/feaddDisplay.log b/src/Specific/solinas64_2e221m3/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e221m3/fesub.c b/src/Specific/solinas64_2e221m3/fesub.c
new file mode 100644
index 000000000..407b52175
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 144115188075855866 + x5) - x11);
+ out[1] = ((0xfffffffffffffe + x7) - x13);
+ out[2] = ((0xfffffffffffffe + x9) - x15);
+ out[3] = ((0xfffffffffffffe + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e221m3/fesubDisplay.log b/src/Specific/solinas64_2e221m3/fesubDisplay.log
new file mode 100644
index 000000000..c2867843f
--- /dev/null
+++ b/src/Specific/solinas64_2e221m3/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((0xfffffffffffffe + x8) - x14), ((0xfffffffffffffe + x9) - x15), ((0xfffffffffffffe + x7) - x13), ((Const 144115188075855866 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e222m117/feadd.c b/src/Specific/solinas64_2e222m117/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e222m117/feaddDisplay.log b/src/Specific/solinas64_2e222m117/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e222m117/fesub.c b/src/Specific/solinas64_2e222m117/fesub.c
new file mode 100644
index 000000000..74a04060a
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 144115188075855638 + x5) - x11);
+ out[1] = ((0xfffffffffffffe + x7) - x13);
+ out[2] = ((0x1fffffffffffffe + x9) - x15);
+ out[3] = ((0xfffffffffffffe + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e222m117/fesubDisplay.log b/src/Specific/solinas64_2e222m117/fesubDisplay.log
new file mode 100644
index 000000000..304edaf24
--- /dev/null
+++ b/src/Specific/solinas64_2e222m117/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((0xfffffffffffffe + x8) - x14), ((0x1fffffffffffffe + x9) - x15), ((0xfffffffffffffe + x7) - x13), ((Const 144115188075855638 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e224m2e96p1/feadd.c b/src/Specific/solinas64_2e224m2e96p1/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e224m2e96p1/feaddDisplay.log b/src/Specific/solinas64_2e224m2e96p1/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e226m5/feadd.c b/src/Specific/solinas64_2e226m5/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e226m5/feaddDisplay.log b/src/Specific/solinas64_2e226m5/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e226m5/fesub.c b/src/Specific/solinas64_2e226m5/fesub.c
new file mode 100644
index 000000000..0038451f5
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 288230376151711734 + x5) - x11);
+ out[1] = ((0x1fffffffffffffe + x7) - x13);
+ out[2] = ((Const 288230376151711742 + x9) - x15);
+ out[3] = ((0x1fffffffffffffe + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e226m5/fesubDisplay.log b/src/Specific/solinas64_2e226m5/fesubDisplay.log
new file mode 100644
index 000000000..381e827c8
--- /dev/null
+++ b/src/Specific/solinas64_2e226m5/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((0x1fffffffffffffe + x8) - x14), ((Const 288230376151711742 + x9) - x15), ((0x1fffffffffffffe + x7) - x13), ((Const 288230376151711734 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e230m27/feadd.c b/src/Specific/solinas64_2e230m27/feadd.c
new file mode 100644
index 000000000..d304c298a
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27/feadd.c
@@ -0,0 +1,15 @@
+static void feadd(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = (x5 + x11);
+ out[1] = (x7 + x13);
+ out[2] = (x9 + x15);
+ out[3] = (x8 + x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e230m27/feaddDisplay.log b/src/Specific/solinas64_2e230m27/feaddDisplay.log
new file mode 100644
index 000000000..d42ef91c3
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ ((x8 + x14), (x9 + x15), (x7 + x13), (x5 + x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e230m27/fesub.c b/src/Specific/solinas64_2e230m27/fesub.c
new file mode 100644
index 000000000..c93827c7d
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27/fesub.c
@@ -0,0 +1,15 @@
+static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4]) {
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x14 = in2[3];
+ { const uint64_t x15 = in2[2];
+ { const uint64_t x13 = in2[1];
+ { const uint64_t x11 = in2[0];
+ out[0] = ((Const 576460752303423434 + x5) - x11);
+ out[1] = ((Const 288230376151711742 + x7) - x13);
+ out[2] = ((Const 576460752303423486 + x9) - x15);
+ out[3] = ((Const 288230376151711742 + x8) - x14);
+ }}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e230m27/fesubDisplay.log b/src/Specific/solinas64_2e230m27/fesubDisplay.log
new file mode 100644
index 000000000..0705a9ed8
--- /dev/null
+++ b/src/Specific/solinas64_2e230m27/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
+ (((Const 288230376151711742 + x8) - x14), ((Const 576460752303423486 + x9) - x15), ((Const 288230376151711742 + x7) - x13), ((Const 576460752303423434 + x5) - x11)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e235m15/feadd.c b/src/Specific/solinas64_2e235m15/feadd.c
new file mode 100644
index 000000000..a05766e0b
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15/feadd.c
@@ -0,0 +1,18 @@
+static void feadd(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x18 = in2[4];
+ { const uint64_t x19 = in2[3];
+ { const uint64_t x17 = in2[2];
+ { const uint64_t x15 = in2[1];
+ { const uint64_t x13 = in2[0];
+ out[0] = (x5 + x13);
+ out[1] = (x7 + x15);
+ out[2] = (x9 + x17);
+ out[3] = (x11 + x19);
+ out[4] = (x10 + x18);
+ }}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e235m15/feaddDisplay.log b/src/Specific/solinas64_2e235m15/feaddDisplay.log
new file mode 100644
index 000000000..bce3421b2
--- /dev/null
+++ b/src/Specific/solinas64_2e235m15/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
+ ((x10 + x18), (x11 + x19), (x9 + x17), (x7 + x15), (x5 + x13)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)