aboutsummaryrefslogtreecommitdiff
path: root/src/Specific/solinas32_2e511m187_22limbs
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-11-14 15:54:15 -0500
committerGravatar Jason Gross <jgross@mit.edu>2017-11-14 15:54:15 -0500
commit4d98d4bcd43c026ee7a74208dfc68e582bdfa122 (patch)
tree405e541018308cb7c1fd8594987f20696aaad301 /src/Specific/solinas32_2e511m187_22limbs
parentc21d39f35ed774dc7f2405d79acbc21086ee2ef1 (diff)
Update display logs and c files
Diffstat (limited to 'src/Specific/solinas32_2e511m187_22limbs')
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/feadd.c69
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/femul.c162
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/femulDisplay.log100
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/fesquare.c140
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/fesquareDisplay.log100
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/fesub.c69
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/freeze.c114
-rw-r--r--src/Specific/solinas32_2e511m187_22limbs/freezeDisplay.log74
10 files changed, 842 insertions, 0 deletions
diff --git a/src/Specific/solinas32_2e511m187_22limbs/feadd.c b/src/Specific/solinas32_2e511m187_22limbs/feadd.c
new file mode 100644
index 000000000..3d8fcaced
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/feadd.c
@@ -0,0 +1,69 @@
+static void feadd(uint32_t out[22], const uint32_t in1[22], const uint32_t in2[22]) {
+ { const uint32_t x44 = in1[21];
+ { const uint32_t x45 = in1[20];
+ { const uint32_t x43 = in1[19];
+ { const uint32_t x41 = in1[18];
+ { const uint32_t x39 = in1[17];
+ { const uint32_t x37 = in1[16];
+ { const uint32_t x35 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x86 = in2[21];
+ { const uint32_t x87 = in2[20];
+ { const uint32_t x85 = in2[19];
+ { const uint32_t x83 = in2[18];
+ { const uint32_t x81 = in2[17];
+ { const uint32_t x79 = in2[16];
+ { const uint32_t x77 = in2[15];
+ { const uint32_t x75 = in2[14];
+ { const uint32_t x73 = in2[13];
+ { const uint32_t x71 = in2[12];
+ { const uint32_t x69 = in2[11];
+ { const uint32_t x67 = in2[10];
+ { const uint32_t x65 = in2[9];
+ { const uint32_t x63 = in2[8];
+ { const uint32_t x61 = in2[7];
+ { const uint32_t x59 = in2[6];
+ { const uint32_t x57 = in2[5];
+ { const uint32_t x55 = in2[4];
+ { const uint32_t x53 = in2[3];
+ { const uint32_t x51 = in2[2];
+ { const uint32_t x49 = in2[1];
+ { const uint32_t x47 = in2[0];
+ out[0] = (x5 + x47);
+ out[1] = (x7 + x49);
+ out[2] = (x9 + x51);
+ out[3] = (x11 + x53);
+ out[4] = (x13 + x55);
+ out[5] = (x15 + x57);
+ out[6] = (x17 + x59);
+ out[7] = (x19 + x61);
+ out[8] = (x21 + x63);
+ out[9] = (x23 + x65);
+ out[10] = (x25 + x67);
+ out[11] = (x27 + x69);
+ out[12] = (x29 + x71);
+ out[13] = (x31 + x73);
+ out[14] = (x33 + x75);
+ out[15] = (x35 + x77);
+ out[16] = (x37 + x79);
+ out[17] = (x39 + x81);
+ out[18] = (x41 + x83);
+ out[19] = (x43 + x85);
+ out[20] = (x45 + x87);
+ out[21] = (x44 + x86);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e511m187_22limbs/feaddDisplay.log b/src/Specific/solinas32_2e511m187_22limbs/feaddDisplay.log
new file mode 100644
index 000000000..721ed2e79
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x44, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x86, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47))%core,
+ ((x44 + x86), (x45 + x87), (x43 + x85), (x41 + x83), (x39 + x81), (x37 + x79), (x35 + x77), (x33 + x75), (x31 + x73), (x29 + x71), (x27 + x69), (x25 + x67), (x23 + x65), (x21 + x63), (x19 + x61), (x17 + x59), (x15 + x57), (x13 + x55), (x11 + x53), (x9 + x51), (x7 + x49), (x5 + x47)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e511m187_22limbs/femul.c b/src/Specific/solinas32_2e511m187_22limbs/femul.c
new file mode 100644
index 000000000..ea126d46e
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/femul.c
@@ -0,0 +1,162 @@
+static void femul(uint32_t out[22], const uint32_t in1[22], const uint32_t in2[22]) {
+ { const uint32_t x44 = in1[21];
+ { const uint32_t x45 = in1[20];
+ { const uint32_t x43 = in1[19];
+ { const uint32_t x41 = in1[18];
+ { const uint32_t x39 = in1[17];
+ { const uint32_t x37 = in1[16];
+ { const uint32_t x35 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x86 = in2[21];
+ { const uint32_t x87 = in2[20];
+ { const uint32_t x85 = in2[19];
+ { const uint32_t x83 = in2[18];
+ { const uint32_t x81 = in2[17];
+ { const uint32_t x79 = in2[16];
+ { const uint32_t x77 = in2[15];
+ { const uint32_t x75 = in2[14];
+ { const uint32_t x73 = in2[13];
+ { const uint32_t x71 = in2[12];
+ { const uint32_t x69 = in2[11];
+ { const uint32_t x67 = in2[10];
+ { const uint32_t x65 = in2[9];
+ { const uint32_t x63 = in2[8];
+ { const uint32_t x61 = in2[7];
+ { const uint32_t x59 = in2[6];
+ { const uint32_t x57 = in2[5];
+ { const uint32_t x55 = in2[4];
+ { const uint32_t x53 = in2[3];
+ { const uint32_t x51 = in2[2];
+ { const uint32_t x49 = in2[1];
+ { const uint32_t x47 = in2[0];
+ { uint64_t x88 = (((uint64_t)x5 * x86) + ((0x2 * ((uint64_t)x7 * x87)) + ((0x2 * ((uint64_t)x9 * x85)) + ((0x2 * ((uint64_t)x11 * x83)) + (((uint64_t)x13 * x81) + ((0x2 * ((uint64_t)x15 * x79)) + ((0x2 * ((uint64_t)x17 * x77)) + ((0x2 * ((uint64_t)x19 * x75)) + (((uint64_t)x21 * x73) + ((0x2 * ((uint64_t)x23 * x71)) + ((0x2 * ((uint64_t)x25 * x69)) + ((0x2 * ((uint64_t)x27 * x67)) + ((0x2 * ((uint64_t)x29 * x65)) + (((uint64_t)x31 * x63) + ((0x2 * ((uint64_t)x33 * x61)) + ((0x2 * ((uint64_t)x35 * x59)) + ((0x2 * ((uint64_t)x37 * x57)) + (((uint64_t)x39 * x55) + ((0x2 * ((uint64_t)x41 * x53)) + ((0x2 * ((uint64_t)x43 * x51)) + ((0x2 * ((uint64_t)x45 * x49)) + ((uint64_t)x44 * x47))))))))))))))))))))));
+ { uint64_t x89 = ((((uint64_t)x5 * x87) + ((0x2 * ((uint64_t)x7 * x85)) + ((0x2 * ((uint64_t)x9 * x83)) + (((uint64_t)x11 * x81) + (((uint64_t)x13 * x79) + ((0x2 * ((uint64_t)x15 * x77)) + ((0x2 * ((uint64_t)x17 * x75)) + (((uint64_t)x19 * x73) + (((uint64_t)x21 * x71) + ((0x2 * ((uint64_t)x23 * x69)) + ((0x2 * ((uint64_t)x25 * x67)) + ((0x2 * ((uint64_t)x27 * x65)) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + ((0x2 * ((uint64_t)x33 * x59)) + ((0x2 * ((uint64_t)x35 * x57)) + (((uint64_t)x37 * x55) + (((uint64_t)x39 * x53) + ((0x2 * ((uint64_t)x41 * x51)) + ((0x2 * ((uint64_t)x43 * x49)) + ((uint64_t)x45 * x47))))))))))))))))))))) + (0xbb * ((uint64_t)x44 * x86)));
+ { uint64_t x90 = ((((uint64_t)x5 * x85) + ((0x2 * ((uint64_t)x7 * x83)) + (((uint64_t)x9 * x81) + (((uint64_t)x11 * x79) + (((uint64_t)x13 * x77) + ((0x2 * ((uint64_t)x15 * x75)) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + ((0x2 * ((uint64_t)x23 * x67)) + ((0x2 * ((uint64_t)x25 * x65)) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + ((0x2 * ((uint64_t)x33 * x57)) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + (((uint64_t)x39 * x51) + ((0x2 * ((uint64_t)x41 * x49)) + ((uint64_t)x43 * x47)))))))))))))))))))) + (0xbb * (((uint64_t)x45 * x86) + ((uint64_t)x44 * x87))));
+ { uint64_t x91 = ((((uint64_t)x5 * x83) + (((uint64_t)x7 * x81) + (((uint64_t)x9 * x79) + (((uint64_t)x11 * x77) + (((uint64_t)x13 * x75) + (((uint64_t)x15 * x73) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + ((0x2 * ((uint64_t)x23 * x65)) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + (((uint64_t)x39 * x49) + ((uint64_t)x41 * x47))))))))))))))))))) + (0xbb * (((uint64_t)x43 * x86) + (((uint64_t)x45 * x87) + ((uint64_t)x44 * x85)))));
+ { uint64_t x92 = ((((uint64_t)x5 * x81) + ((0x2 * ((uint64_t)x7 * x79)) + ((0x2 * ((uint64_t)x9 * x77)) + ((0x2 * ((uint64_t)x11 * x75)) + (((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)) + (((uint64_t)x31 * x55) + ((0x2 * ((uint64_t)x33 * x53)) + ((0x2 * ((uint64_t)x35 * x51)) + ((0x2 * ((uint64_t)x37 * x49)) + ((uint64_t)x39 * x47)))))))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x41 * x86)) + ((0x2 * ((uint64_t)x43 * x87)) + ((0x2 * ((uint64_t)x45 * x85)) + (0x2 * ((uint64_t)x44 * x83)))))));
+ { uint64_t x93 = ((((uint64_t)x5 * x79) + ((0x2 * ((uint64_t)x7 * x77)) + ((0x2 * ((uint64_t)x9 * x75)) + (((uint64_t)x11 * x73) + (((uint64_t)x13 * x71) + ((0x2 * ((uint64_t)x15 * x69)) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + (((uint64_t)x21 * x63) + ((0x2 * ((uint64_t)x23 * x61)) + ((0x2 * ((uint64_t)x25 * x59)) + ((0x2 * ((uint64_t)x27 * x57)) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + ((0x2 * ((uint64_t)x33 * x51)) + ((0x2 * ((uint64_t)x35 * x49)) + ((uint64_t)x37 * x47))))))))))))))))) + (0xbb * (((uint64_t)x39 * x86) + ((0x2 * ((uint64_t)x41 * x87)) + ((0x2 * ((uint64_t)x43 * x85)) + ((0x2 * ((uint64_t)x45 * x83)) + ((uint64_t)x44 * x81)))))));
+ { uint64_t x94 = ((((uint64_t)x5 * x77) + ((0x2 * ((uint64_t)x7 * x75)) + (((uint64_t)x9 * x73) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + ((0x2 * ((uint64_t)x15 * x67)) + ((0x2 * ((uint64_t)x17 * x65)) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + ((0x2 * ((uint64_t)x23 * x59)) + ((0x2 * ((uint64_t)x25 * x57)) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + ((0x2 * ((uint64_t)x33 * x49)) + ((uint64_t)x35 * x47)))))))))))))))) + (0xbb * (((uint64_t)x37 * x86) + (((uint64_t)x39 * x87) + ((0x2 * ((uint64_t)x41 * x85)) + ((0x2 * ((uint64_t)x43 * x83)) + (((uint64_t)x45 * x81) + ((uint64_t)x44 * x79))))))));
+ { uint64_t x95 = ((((uint64_t)x5 * x75) + (((uint64_t)x7 * x73) + (((uint64_t)x9 * x71) + (((uint64_t)x11 * x69) + (((uint64_t)x13 * x67) + ((0x2 * ((uint64_t)x15 * x65)) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + ((0x2 * ((uint64_t)x23 * x57)) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + ((uint64_t)x33 * x47))))))))))))))) + (0xbb * (((uint64_t)x35 * x86) + (((uint64_t)x37 * x87) + (((uint64_t)x39 * x85) + ((0x2 * ((uint64_t)x41 * x83)) + (((uint64_t)x43 * x81) + (((uint64_t)x45 * x79) + ((uint64_t)x44 * x77)))))))));
+ { uint64_t x96 = ((((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)) + ((uint64_t)x31 * x47)))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x33 * x86)) + ((0x2 * ((uint64_t)x35 * x87)) + ((0x2 * ((uint64_t)x37 * x85)) + ((0x2 * ((uint64_t)x39 * x83)) + ((0x2 * ((uint64_t)x41 * x81)) + ((0x2 * ((uint64_t)x43 * x79)) + ((0x2 * ((uint64_t)x45 * x77)) + (0x2 * ((uint64_t)x44 * x75)))))))))));
+ { uint64_t x97 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + (((uint64_t)x13 * x63) + ((0x2 * ((uint64_t)x15 * x61)) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + (((uint64_t)x21 * x55) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((uint64_t)x29 * x47))))))))))))) + (0xbb * (((uint64_t)x31 * x86) + ((0x2 * ((uint64_t)x33 * x87)) + ((0x2 * ((uint64_t)x35 * x85)) + ((0x2 * ((uint64_t)x37 * x83)) + (((uint64_t)x39 * x81) + ((0x2 * ((uint64_t)x41 * x79)) + ((0x2 * ((uint64_t)x43 * x77)) + ((0x2 * ((uint64_t)x45 * x75)) + ((uint64_t)x44 * x73)))))))))));
+ { uint64_t x98 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + ((0x2 * ((uint64_t)x15 * x59)) + ((0x2 * ((uint64_t)x17 * x57)) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((uint64_t)x27 * x47)))))))))))) + (0xbb * (((uint64_t)x29 * x86) + (((uint64_t)x31 * x87) + ((0x2 * ((uint64_t)x33 * x85)) + ((0x2 * ((uint64_t)x35 * x83)) + (((uint64_t)x37 * x81) + (((uint64_t)x39 * x79) + ((0x2 * ((uint64_t)x41 * x77)) + ((0x2 * ((uint64_t)x43 * x75)) + (((uint64_t)x45 * x73) + ((uint64_t)x44 * x71))))))))))));
+ { uint64_t x99 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + ((0x2 * ((uint64_t)x15 * x57)) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + ((0x2 * ((uint64_t)x23 * x49)) + ((uint64_t)x25 * x47))))))))))) + (0xbb * (((uint64_t)x27 * x86) + (((uint64_t)x29 * x87) + (((uint64_t)x31 * x85) + ((0x2 * ((uint64_t)x33 * x83)) + (((uint64_t)x35 * x81) + (((uint64_t)x37 * x79) + (((uint64_t)x39 * x77) + ((0x2 * ((uint64_t)x41 * x75)) + (((uint64_t)x43 * x73) + (((uint64_t)x45 * x71) + ((uint64_t)x44 * x69)))))))))))));
+ { uint64_t x100 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + ((uint64_t)x23 * x47)))))))))) + (0xbb * (((uint64_t)x25 * x86) + (((uint64_t)x27 * x87) + (((uint64_t)x29 * x85) + (((uint64_t)x31 * x83) + (((uint64_t)x33 * x81) + (((uint64_t)x35 * x79) + (((uint64_t)x37 * x77) + (((uint64_t)x39 * x75) + (((uint64_t)x41 * x73) + (((uint64_t)x43 * x71) + (((uint64_t)x45 * x69) + ((uint64_t)x44 * x67))))))))))))));
+ { uint64_t x101 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + (((uint64_t)x13 * x55) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((uint64_t)x21 * x47))))))))) + (0xbb * ((0x2 * ((uint64_t)x23 * x86)) + ((0x2 * ((uint64_t)x25 * x87)) + ((0x2 * ((uint64_t)x27 * x85)) + ((0x2 * ((uint64_t)x29 * x83)) + (((uint64_t)x31 * x81) + ((0x2 * ((uint64_t)x33 * x79)) + ((0x2 * ((uint64_t)x35 * x77)) + ((0x2 * ((uint64_t)x37 * x75)) + (((uint64_t)x39 * x73) + ((0x2 * ((uint64_t)x41 * x71)) + ((0x2 * ((uint64_t)x43 * x69)) + ((0x2 * ((uint64_t)x45 * x67)) + (0x2 * ((uint64_t)x44 * x65))))))))))))))));
+ { uint64_t x102 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((uint64_t)x19 * x47)))))))) + (0xbb * (((uint64_t)x21 * x86) + ((0x2 * ((uint64_t)x23 * x87)) + ((0x2 * ((uint64_t)x25 * x85)) + ((0x2 * ((uint64_t)x27 * x83)) + (((uint64_t)x29 * x81) + (((uint64_t)x31 * x79) + ((0x2 * ((uint64_t)x33 * x77)) + ((0x2 * ((uint64_t)x35 * x75)) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + ((0x2 * ((uint64_t)x41 * x69)) + ((0x2 * ((uint64_t)x43 * x67)) + ((0x2 * ((uint64_t)x45 * x65)) + ((uint64_t)x44 * x63))))))))))))))));
+ { uint64_t x103 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + ((0x2 * ((uint64_t)x15 * x49)) + ((uint64_t)x17 * x47))))))) + (0xbb * (((uint64_t)x19 * x86) + (((uint64_t)x21 * x87) + ((0x2 * ((uint64_t)x23 * x85)) + ((0x2 * ((uint64_t)x25 * x83)) + (((uint64_t)x27 * x81) + (((uint64_t)x29 * x79) + (((uint64_t)x31 * x77) + ((0x2 * ((uint64_t)x33 * x75)) + (((uint64_t)x35 * x73) + (((uint64_t)x37 * x71) + (((uint64_t)x39 * x69) + ((0x2 * ((uint64_t)x41 * x67)) + ((0x2 * ((uint64_t)x43 * x65)) + (((uint64_t)x45 * x63) + ((uint64_t)x44 * x61)))))))))))))))));
+ { uint64_t x104 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + ((uint64_t)x15 * x47)))))) + (0xbb * (((uint64_t)x17 * x86) + (((uint64_t)x19 * x87) + (((uint64_t)x21 * x85) + ((0x2 * ((uint64_t)x23 * x83)) + (((uint64_t)x25 * x81) + (((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) + ((0x2 * ((uint64_t)x41 * x65)) + (((uint64_t)x43 * x63) + (((uint64_t)x45 * x61) + ((uint64_t)x44 * x59))))))))))))))))));
+ { uint64_t x105 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((uint64_t)x13 * x47))))) + (0xbb * ((0x2 * ((uint64_t)x15 * x86)) + ((0x2 * ((uint64_t)x17 * x87)) + ((0x2 * ((uint64_t)x19 * x85)) + ((0x2 * ((uint64_t)x21 * x83)) + ((0x2 * ((uint64_t)x23 * x81)) + ((0x2 * ((uint64_t)x25 * x79)) + ((0x2 * ((uint64_t)x27 * x77)) + ((0x2 * ((uint64_t)x29 * x75)) + (((uint64_t)x31 * x73) + ((0x2 * ((uint64_t)x33 * x71)) + ((0x2 * ((uint64_t)x35 * x69)) + ((0x2 * ((uint64_t)x37 * x67)) + ((0x2 * ((uint64_t)x39 * x65)) + ((0x2 * ((uint64_t)x41 * x63)) + ((0x2 * ((uint64_t)x43 * x61)) + ((0x2 * ((uint64_t)x45 * x59)) + (0x2 * ((uint64_t)x44 * x57))))))))))))))))))));
+ { uint64_t x106 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((uint64_t)x11 * x47)))) + (0xbb * (((uint64_t)x13 * x86) + ((0x2 * ((uint64_t)x15 * x87)) + ((0x2 * ((uint64_t)x17 * x85)) + ((0x2 * ((uint64_t)x19 * x83)) + (((uint64_t)x21 * x81) + ((0x2 * ((uint64_t)x23 * x79)) + ((0x2 * ((uint64_t)x25 * x77)) + ((0x2 * ((uint64_t)x27 * x75)) + (((uint64_t)x29 * x73) + (((uint64_t)x31 * x71) + ((0x2 * ((uint64_t)x33 * x69)) + ((0x2 * ((uint64_t)x35 * x67)) + ((0x2 * ((uint64_t)x37 * x65)) + (((uint64_t)x39 * x63) + ((0x2 * ((uint64_t)x41 * x61)) + ((0x2 * ((uint64_t)x43 * x59)) + ((0x2 * ((uint64_t)x45 * x57)) + ((uint64_t)x44 * x55))))))))))))))))))));
+ { uint64_t x107 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((uint64_t)x9 * x47))) + (0xbb * (((uint64_t)x11 * x86) + (((uint64_t)x13 * x87) + ((0x2 * ((uint64_t)x15 * x85)) + ((0x2 * ((uint64_t)x17 * x83)) + (((uint64_t)x19 * x81) + (((uint64_t)x21 * x79) + ((0x2 * ((uint64_t)x23 * x77)) + ((0x2 * ((uint64_t)x25 * x75)) + (((uint64_t)x27 * x73) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + ((0x2 * ((uint64_t)x33 * x67)) + ((0x2 * ((uint64_t)x35 * x65)) + (((uint64_t)x37 * x63) + (((uint64_t)x39 * x61) + ((0x2 * ((uint64_t)x41 * x59)) + ((0x2 * ((uint64_t)x43 * x57)) + (((uint64_t)x45 * x55) + ((uint64_t)x44 * x53)))))))))))))))))))));
+ { uint64_t x108 = ((((uint64_t)x5 * x49) + ((uint64_t)x7 * x47)) + (0xbb * (((uint64_t)x9 * x86) + (((uint64_t)x11 * x87) + (((uint64_t)x13 * x85) + ((0x2 * ((uint64_t)x15 * x83)) + (((uint64_t)x17 * x81) + (((uint64_t)x19 * x79) + (((uint64_t)x21 * x77) + ((0x2 * ((uint64_t)x23 * x75)) + (((uint64_t)x25 * x73) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + ((0x2 * ((uint64_t)x33 * x65)) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + (((uint64_t)x39 * x59) + ((0x2 * ((uint64_t)x41 * x57)) + (((uint64_t)x43 * x55) + (((uint64_t)x45 * x53) + ((uint64_t)x44 * x51))))))))))))))))))))));
+ { uint64_t x109 = (((uint64_t)x5 * x47) + (0xbb * ((0x2 * ((uint64_t)x7 * x86)) + ((0x2 * ((uint64_t)x9 * x87)) + ((0x2 * ((uint64_t)x11 * x85)) + ((0x2 * ((uint64_t)x13 * x83)) + ((0x2 * ((uint64_t)x15 * x81)) + ((0x2 * ((uint64_t)x17 * x79)) + ((0x2 * ((uint64_t)x19 * x77)) + ((0x2 * ((uint64_t)x21 * x75)) + ((0x2 * ((uint64_t)x23 * x73)) + ((0x2 * ((uint64_t)x25 * x71)) + ((0x2 * ((uint64_t)x27 * x69)) + ((0x2 * ((uint64_t)x29 * x67)) + ((0x2 * ((uint64_t)x31 * x65)) + ((0x2 * ((uint64_t)x33 * x63)) + ((0x2 * ((uint64_t)x35 * x61)) + ((0x2 * ((uint64_t)x37 * x59)) + ((0x2 * ((uint64_t)x39 * x57)) + ((0x2 * ((uint64_t)x41 * x55)) + ((0x2 * ((uint64_t)x43 * x53)) + ((0x2 * ((uint64_t)x45 * x51)) + (0x2 * ((uint64_t)x44 * x49))))))))))))))))))))))));
+ { uint64_t x110 = (x109 >> 0x18);
+ { uint32_t x111 = ((uint32_t)x109 & 0xffffff);
+ { uint64_t x112 = (x110 + x108);
+ { uint64_t x113 = (x112 >> 0x17);
+ { uint32_t x114 = ((uint32_t)x112 & 0x7fffff);
+ { uint64_t x115 = (x113 + x107);
+ { uint64_t x116 = (x115 >> 0x17);
+ { uint32_t x117 = ((uint32_t)x115 & 0x7fffff);
+ { uint64_t x118 = (x116 + x106);
+ { uint64_t x119 = (x118 >> 0x17);
+ { uint32_t x120 = ((uint32_t)x118 & 0x7fffff);
+ { uint64_t x121 = (x119 + x105);
+ { uint64_t x122 = (x121 >> 0x18);
+ { uint32_t x123 = ((uint32_t)x121 & 0xffffff);
+ { uint64_t x124 = (x122 + x104);
+ { uint64_t x125 = (x124 >> 0x17);
+ { uint32_t x126 = ((uint32_t)x124 & 0x7fffff);
+ { uint64_t x127 = (x125 + x103);
+ { uint64_t x128 = (x127 >> 0x17);
+ { uint32_t x129 = ((uint32_t)x127 & 0x7fffff);
+ { uint64_t x130 = (x128 + x102);
+ { uint64_t x131 = (x130 >> 0x17);
+ { uint32_t x132 = ((uint32_t)x130 & 0x7fffff);
+ { uint64_t x133 = (x131 + x101);
+ { uint64_t x134 = (x133 >> 0x18);
+ { uint32_t x135 = ((uint32_t)x133 & 0xffffff);
+ { uint64_t x136 = (x134 + x100);
+ { uint64_t x137 = (x136 >> 0x17);
+ { uint32_t x138 = ((uint32_t)x136 & 0x7fffff);
+ { uint64_t x139 = (x137 + x99);
+ { uint64_t x140 = (x139 >> 0x17);
+ { uint32_t x141 = ((uint32_t)x139 & 0x7fffff);
+ { uint64_t x142 = (x140 + x98);
+ { uint64_t x143 = (x142 >> 0x17);
+ { uint32_t x144 = ((uint32_t)x142 & 0x7fffff);
+ { uint64_t x145 = (x143 + x97);
+ { uint64_t x146 = (x145 >> 0x17);
+ { uint32_t x147 = ((uint32_t)x145 & 0x7fffff);
+ { uint64_t x148 = (x146 + x96);
+ { uint64_t x149 = (x148 >> 0x18);
+ { uint32_t x150 = ((uint32_t)x148 & 0xffffff);
+ { uint64_t x151 = (x149 + x95);
+ { uint64_t x152 = (x151 >> 0x17);
+ { uint32_t x153 = ((uint32_t)x151 & 0x7fffff);
+ { uint64_t x154 = (x152 + x94);
+ { uint64_t x155 = (x154 >> 0x17);
+ { uint32_t x156 = ((uint32_t)x154 & 0x7fffff);
+ { uint64_t x157 = (x155 + x93);
+ { uint64_t x158 = (x157 >> 0x17);
+ { uint32_t x159 = ((uint32_t)x157 & 0x7fffff);
+ { uint64_t x160 = (x158 + x92);
+ { uint64_t x161 = (x160 >> 0x18);
+ { uint32_t x162 = ((uint32_t)x160 & 0xffffff);
+ { uint64_t x163 = (x161 + x91);
+ { uint64_t x164 = (x163 >> 0x17);
+ { uint32_t x165 = ((uint32_t)x163 & 0x7fffff);
+ { uint64_t x166 = (x164 + x90);
+ { uint64_t x167 = (x166 >> 0x17);
+ { uint32_t x168 = ((uint32_t)x166 & 0x7fffff);
+ { uint64_t x169 = (x167 + x89);
+ { uint64_t x170 = (x169 >> 0x17);
+ { uint32_t x171 = ((uint32_t)x169 & 0x7fffff);
+ { uint64_t x172 = (x170 + x88);
+ { uint64_t x173 = (x172 >> 0x17);
+ { uint32_t x174 = ((uint32_t)x172 & 0x7fffff);
+ { uint64_t x175 = (x111 + (0xbb * x173));
+ { uint32_t x176 = (uint32_t) (x175 >> 0x18);
+ { uint32_t x177 = ((uint32_t)x175 & 0xffffff);
+ { uint32_t x178 = (x176 + x114);
+ { uint32_t x179 = (x178 >> 0x17);
+ { uint32_t x180 = (x178 & 0x7fffff);
+ out[0] = x177;
+ out[1] = x180;
+ out[2] = (x179 + x117);
+ out[3] = x120;
+ out[4] = x123;
+ out[5] = x126;
+ out[6] = x129;
+ out[7] = x132;
+ out[8] = x135;
+ out[9] = x138;
+ out[10] = x141;
+ out[11] = x144;
+ out[12] = x147;
+ out[13] = x150;
+ out[14] = x153;
+ out[15] = x156;
+ out[16] = x159;
+ out[17] = x162;
+ out[18] = x165;
+ out[19] = x168;
+ out[20] = x171;
+ out[21] = x174;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e511m187_22limbs/femulDisplay.log b/src/Specific/solinas32_2e511m187_22limbs/femulDisplay.log
new file mode 100644
index 000000000..ae153fcc0
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/femulDisplay.log
@@ -0,0 +1,100 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x44, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x86, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47))%core,
+ uint64_t x88 = (((uint64_t)x5 * x86) + ((0x2 * ((uint64_t)x7 * x87)) + ((0x2 * ((uint64_t)x9 * x85)) + ((0x2 * ((uint64_t)x11 * x83)) + (((uint64_t)x13 * x81) + ((0x2 * ((uint64_t)x15 * x79)) + ((0x2 * ((uint64_t)x17 * x77)) + ((0x2 * ((uint64_t)x19 * x75)) + (((uint64_t)x21 * x73) + ((0x2 * ((uint64_t)x23 * x71)) + ((0x2 * ((uint64_t)x25 * x69)) + ((0x2 * ((uint64_t)x27 * x67)) + ((0x2 * ((uint64_t)x29 * x65)) + (((uint64_t)x31 * x63) + ((0x2 * ((uint64_t)x33 * x61)) + ((0x2 * ((uint64_t)x35 * x59)) + ((0x2 * ((uint64_t)x37 * x57)) + (((uint64_t)x39 * x55) + ((0x2 * ((uint64_t)x41 * x53)) + ((0x2 * ((uint64_t)x43 * x51)) + ((0x2 * ((uint64_t)x45 * x49)) + ((uint64_t)x44 * x47))))))))))))))))))))));
+ uint64_t x89 = ((((uint64_t)x5 * x87) + ((0x2 * ((uint64_t)x7 * x85)) + ((0x2 * ((uint64_t)x9 * x83)) + (((uint64_t)x11 * x81) + (((uint64_t)x13 * x79) + ((0x2 * ((uint64_t)x15 * x77)) + ((0x2 * ((uint64_t)x17 * x75)) + (((uint64_t)x19 * x73) + (((uint64_t)x21 * x71) + ((0x2 * ((uint64_t)x23 * x69)) + ((0x2 * ((uint64_t)x25 * x67)) + ((0x2 * ((uint64_t)x27 * x65)) + (((uint64_t)x29 * x63) + (((uint64_t)x31 * x61) + ((0x2 * ((uint64_t)x33 * x59)) + ((0x2 * ((uint64_t)x35 * x57)) + (((uint64_t)x37 * x55) + (((uint64_t)x39 * x53) + ((0x2 * ((uint64_t)x41 * x51)) + ((0x2 * ((uint64_t)x43 * x49)) + ((uint64_t)x45 * x47))))))))))))))))))))) + (0xbb * ((uint64_t)x44 * x86)));
+ uint64_t x90 = ((((uint64_t)x5 * x85) + ((0x2 * ((uint64_t)x7 * x83)) + (((uint64_t)x9 * x81) + (((uint64_t)x11 * x79) + (((uint64_t)x13 * x77) + ((0x2 * ((uint64_t)x15 * x75)) + (((uint64_t)x17 * x73) + (((uint64_t)x19 * x71) + (((uint64_t)x21 * x69) + ((0x2 * ((uint64_t)x23 * x67)) + ((0x2 * ((uint64_t)x25 * x65)) + (((uint64_t)x27 * x63) + (((uint64_t)x29 * x61) + (((uint64_t)x31 * x59) + ((0x2 * ((uint64_t)x33 * x57)) + (((uint64_t)x35 * x55) + (((uint64_t)x37 * x53) + (((uint64_t)x39 * x51) + ((0x2 * ((uint64_t)x41 * x49)) + ((uint64_t)x43 * x47)))))))))))))))))))) + (0xbb * (((uint64_t)x45 * x86) + ((uint64_t)x44 * x87))));
+ uint64_t x91 = ((((uint64_t)x5 * x83) + (((uint64_t)x7 * x81) + (((uint64_t)x9 * x79) + (((uint64_t)x11 * x77) + (((uint64_t)x13 * x75) + (((uint64_t)x15 * x73) + (((uint64_t)x17 * x71) + (((uint64_t)x19 * x69) + (((uint64_t)x21 * x67) + ((0x2 * ((uint64_t)x23 * x65)) + (((uint64_t)x25 * x63) + (((uint64_t)x27 * x61) + (((uint64_t)x29 * x59) + (((uint64_t)x31 * x57) + (((uint64_t)x33 * x55) + (((uint64_t)x35 * x53) + (((uint64_t)x37 * x51) + (((uint64_t)x39 * x49) + ((uint64_t)x41 * x47))))))))))))))))))) + (0xbb * (((uint64_t)x43 * x86) + (((uint64_t)x45 * x87) + ((uint64_t)x44 * x85)))));
+ uint64_t x92 = ((((uint64_t)x5 * x81) + ((0x2 * ((uint64_t)x7 * x79)) + ((0x2 * ((uint64_t)x9 * x77)) + ((0x2 * ((uint64_t)x11 * x75)) + (((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)) + (((uint64_t)x31 * x55) + ((0x2 * ((uint64_t)x33 * x53)) + ((0x2 * ((uint64_t)x35 * x51)) + ((0x2 * ((uint64_t)x37 * x49)) + ((uint64_t)x39 * x47)))))))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x41 * x86)) + ((0x2 * ((uint64_t)x43 * x87)) + ((0x2 * ((uint64_t)x45 * x85)) + (0x2 * ((uint64_t)x44 * x83)))))));
+ uint64_t x93 = ((((uint64_t)x5 * x79) + ((0x2 * ((uint64_t)x7 * x77)) + ((0x2 * ((uint64_t)x9 * x75)) + (((uint64_t)x11 * x73) + (((uint64_t)x13 * x71) + ((0x2 * ((uint64_t)x15 * x69)) + ((0x2 * ((uint64_t)x17 * x67)) + ((0x2 * ((uint64_t)x19 * x65)) + (((uint64_t)x21 * x63) + ((0x2 * ((uint64_t)x23 * x61)) + ((0x2 * ((uint64_t)x25 * x59)) + ((0x2 * ((uint64_t)x27 * x57)) + (((uint64_t)x29 * x55) + (((uint64_t)x31 * x53) + ((0x2 * ((uint64_t)x33 * x51)) + ((0x2 * ((uint64_t)x35 * x49)) + ((uint64_t)x37 * x47))))))))))))))))) + (0xbb * (((uint64_t)x39 * x86) + ((0x2 * ((uint64_t)x41 * x87)) + ((0x2 * ((uint64_t)x43 * x85)) + ((0x2 * ((uint64_t)x45 * x83)) + ((uint64_t)x44 * x81)))))));
+ uint64_t x94 = ((((uint64_t)x5 * x77) + ((0x2 * ((uint64_t)x7 * x75)) + (((uint64_t)x9 * x73) + (((uint64_t)x11 * x71) + (((uint64_t)x13 * x69) + ((0x2 * ((uint64_t)x15 * x67)) + ((0x2 * ((uint64_t)x17 * x65)) + (((uint64_t)x19 * x63) + (((uint64_t)x21 * x61) + ((0x2 * ((uint64_t)x23 * x59)) + ((0x2 * ((uint64_t)x25 * x57)) + (((uint64_t)x27 * x55) + (((uint64_t)x29 * x53) + (((uint64_t)x31 * x51) + ((0x2 * ((uint64_t)x33 * x49)) + ((uint64_t)x35 * x47)))))))))))))))) + (0xbb * (((uint64_t)x37 * x86) + (((uint64_t)x39 * x87) + ((0x2 * ((uint64_t)x41 * x85)) + ((0x2 * ((uint64_t)x43 * x83)) + (((uint64_t)x45 * x81) + ((uint64_t)x44 * x79))))))));
+ uint64_t x95 = ((((uint64_t)x5 * x75) + (((uint64_t)x7 * x73) + (((uint64_t)x9 * x71) + (((uint64_t)x11 * x69) + (((uint64_t)x13 * x67) + ((0x2 * ((uint64_t)x15 * x65)) + (((uint64_t)x17 * x63) + (((uint64_t)x19 * x61) + (((uint64_t)x21 * x59) + ((0x2 * ((uint64_t)x23 * x57)) + (((uint64_t)x25 * x55) + (((uint64_t)x27 * x53) + (((uint64_t)x29 * x51) + (((uint64_t)x31 * x49) + ((uint64_t)x33 * x47))))))))))))))) + (0xbb * (((uint64_t)x35 * x86) + (((uint64_t)x37 * x87) + (((uint64_t)x39 * x85) + ((0x2 * ((uint64_t)x41 * x83)) + (((uint64_t)x43 * x81) + (((uint64_t)x45 * x79) + ((uint64_t)x44 * x77)))))))));
+ uint64_t x96 = ((((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)) + ((uint64_t)x31 * x47)))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x33 * x86)) + ((0x2 * ((uint64_t)x35 * x87)) + ((0x2 * ((uint64_t)x37 * x85)) + ((0x2 * ((uint64_t)x39 * x83)) + ((0x2 * ((uint64_t)x41 * x81)) + ((0x2 * ((uint64_t)x43 * x79)) + ((0x2 * ((uint64_t)x45 * x77)) + (0x2 * ((uint64_t)x44 * x75)))))))))));
+ uint64_t x97 = ((((uint64_t)x5 * x71) + ((0x2 * ((uint64_t)x7 * x69)) + ((0x2 * ((uint64_t)x9 * x67)) + ((0x2 * ((uint64_t)x11 * x65)) + (((uint64_t)x13 * x63) + ((0x2 * ((uint64_t)x15 * x61)) + ((0x2 * ((uint64_t)x17 * x59)) + ((0x2 * ((uint64_t)x19 * x57)) + (((uint64_t)x21 * x55) + ((0x2 * ((uint64_t)x23 * x53)) + ((0x2 * ((uint64_t)x25 * x51)) + ((0x2 * ((uint64_t)x27 * x49)) + ((uint64_t)x29 * x47))))))))))))) + (0xbb * (((uint64_t)x31 * x86) + ((0x2 * ((uint64_t)x33 * x87)) + ((0x2 * ((uint64_t)x35 * x85)) + ((0x2 * ((uint64_t)x37 * x83)) + (((uint64_t)x39 * x81) + ((0x2 * ((uint64_t)x41 * x79)) + ((0x2 * ((uint64_t)x43 * x77)) + ((0x2 * ((uint64_t)x45 * x75)) + ((uint64_t)x44 * x73)))))))))));
+ uint64_t x98 = ((((uint64_t)x5 * x69) + ((0x2 * ((uint64_t)x7 * x67)) + ((0x2 * ((uint64_t)x9 * x65)) + (((uint64_t)x11 * x63) + (((uint64_t)x13 * x61) + ((0x2 * ((uint64_t)x15 * x59)) + ((0x2 * ((uint64_t)x17 * x57)) + (((uint64_t)x19 * x55) + (((uint64_t)x21 * x53) + ((0x2 * ((uint64_t)x23 * x51)) + ((0x2 * ((uint64_t)x25 * x49)) + ((uint64_t)x27 * x47)))))))))))) + (0xbb * (((uint64_t)x29 * x86) + (((uint64_t)x31 * x87) + ((0x2 * ((uint64_t)x33 * x85)) + ((0x2 * ((uint64_t)x35 * x83)) + (((uint64_t)x37 * x81) + (((uint64_t)x39 * x79) + ((0x2 * ((uint64_t)x41 * x77)) + ((0x2 * ((uint64_t)x43 * x75)) + (((uint64_t)x45 * x73) + ((uint64_t)x44 * x71))))))))))));
+ uint64_t x99 = ((((uint64_t)x5 * x67) + ((0x2 * ((uint64_t)x7 * x65)) + (((uint64_t)x9 * x63) + (((uint64_t)x11 * x61) + (((uint64_t)x13 * x59) + ((0x2 * ((uint64_t)x15 * x57)) + (((uint64_t)x17 * x55) + (((uint64_t)x19 * x53) + (((uint64_t)x21 * x51) + ((0x2 * ((uint64_t)x23 * x49)) + ((uint64_t)x25 * x47))))))))))) + (0xbb * (((uint64_t)x27 * x86) + (((uint64_t)x29 * x87) + (((uint64_t)x31 * x85) + ((0x2 * ((uint64_t)x33 * x83)) + (((uint64_t)x35 * x81) + (((uint64_t)x37 * x79) + (((uint64_t)x39 * x77) + ((0x2 * ((uint64_t)x41 * x75)) + (((uint64_t)x43 * x73) + (((uint64_t)x45 * x71) + ((uint64_t)x44 * x69)))))))))))));
+ uint64_t x100 = ((((uint64_t)x5 * x65) + (((uint64_t)x7 * x63) + (((uint64_t)x9 * x61) + (((uint64_t)x11 * x59) + (((uint64_t)x13 * x57) + (((uint64_t)x15 * x55) + (((uint64_t)x17 * x53) + (((uint64_t)x19 * x51) + (((uint64_t)x21 * x49) + ((uint64_t)x23 * x47)))))))))) + (0xbb * (((uint64_t)x25 * x86) + (((uint64_t)x27 * x87) + (((uint64_t)x29 * x85) + (((uint64_t)x31 * x83) + (((uint64_t)x33 * x81) + (((uint64_t)x35 * x79) + (((uint64_t)x37 * x77) + (((uint64_t)x39 * x75) + (((uint64_t)x41 * x73) + (((uint64_t)x43 * x71) + (((uint64_t)x45 * x69) + ((uint64_t)x44 * x67))))))))))))));
+ uint64_t x101 = ((((uint64_t)x5 * x63) + ((0x2 * ((uint64_t)x7 * x61)) + ((0x2 * ((uint64_t)x9 * x59)) + ((0x2 * ((uint64_t)x11 * x57)) + (((uint64_t)x13 * x55) + ((0x2 * ((uint64_t)x15 * x53)) + ((0x2 * ((uint64_t)x17 * x51)) + ((0x2 * ((uint64_t)x19 * x49)) + ((uint64_t)x21 * x47))))))))) + (0xbb * ((0x2 * ((uint64_t)x23 * x86)) + ((0x2 * ((uint64_t)x25 * x87)) + ((0x2 * ((uint64_t)x27 * x85)) + ((0x2 * ((uint64_t)x29 * x83)) + (((uint64_t)x31 * x81) + ((0x2 * ((uint64_t)x33 * x79)) + ((0x2 * ((uint64_t)x35 * x77)) + ((0x2 * ((uint64_t)x37 * x75)) + (((uint64_t)x39 * x73) + ((0x2 * ((uint64_t)x41 * x71)) + ((0x2 * ((uint64_t)x43 * x69)) + ((0x2 * ((uint64_t)x45 * x67)) + (0x2 * ((uint64_t)x44 * x65))))))))))))))));
+ uint64_t x102 = ((((uint64_t)x5 * x61) + ((0x2 * ((uint64_t)x7 * x59)) + ((0x2 * ((uint64_t)x9 * x57)) + (((uint64_t)x11 * x55) + (((uint64_t)x13 * x53) + ((0x2 * ((uint64_t)x15 * x51)) + ((0x2 * ((uint64_t)x17 * x49)) + ((uint64_t)x19 * x47)))))))) + (0xbb * (((uint64_t)x21 * x86) + ((0x2 * ((uint64_t)x23 * x87)) + ((0x2 * ((uint64_t)x25 * x85)) + ((0x2 * ((uint64_t)x27 * x83)) + (((uint64_t)x29 * x81) + (((uint64_t)x31 * x79) + ((0x2 * ((uint64_t)x33 * x77)) + ((0x2 * ((uint64_t)x35 * x75)) + (((uint64_t)x37 * x73) + (((uint64_t)x39 * x71) + ((0x2 * ((uint64_t)x41 * x69)) + ((0x2 * ((uint64_t)x43 * x67)) + ((0x2 * ((uint64_t)x45 * x65)) + ((uint64_t)x44 * x63))))))))))))))));
+ uint64_t x103 = ((((uint64_t)x5 * x59) + ((0x2 * ((uint64_t)x7 * x57)) + (((uint64_t)x9 * x55) + (((uint64_t)x11 * x53) + (((uint64_t)x13 * x51) + ((0x2 * ((uint64_t)x15 * x49)) + ((uint64_t)x17 * x47))))))) + (0xbb * (((uint64_t)x19 * x86) + (((uint64_t)x21 * x87) + ((0x2 * ((uint64_t)x23 * x85)) + ((0x2 * ((uint64_t)x25 * x83)) + (((uint64_t)x27 * x81) + (((uint64_t)x29 * x79) + (((uint64_t)x31 * x77) + ((0x2 * ((uint64_t)x33 * x75)) + (((uint64_t)x35 * x73) + (((uint64_t)x37 * x71) + (((uint64_t)x39 * x69) + ((0x2 * ((uint64_t)x41 * x67)) + ((0x2 * ((uint64_t)x43 * x65)) + (((uint64_t)x45 * x63) + ((uint64_t)x44 * x61)))))))))))))))));
+ uint64_t x104 = ((((uint64_t)x5 * x57) + (((uint64_t)x7 * x55) + (((uint64_t)x9 * x53) + (((uint64_t)x11 * x51) + (((uint64_t)x13 * x49) + ((uint64_t)x15 * x47)))))) + (0xbb * (((uint64_t)x17 * x86) + (((uint64_t)x19 * x87) + (((uint64_t)x21 * x85) + ((0x2 * ((uint64_t)x23 * x83)) + (((uint64_t)x25 * x81) + (((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) + ((0x2 * ((uint64_t)x41 * x65)) + (((uint64_t)x43 * x63) + (((uint64_t)x45 * x61) + ((uint64_t)x44 * x59))))))))))))))))));
+ uint64_t x105 = ((((uint64_t)x5 * x55) + ((0x2 * ((uint64_t)x7 * x53)) + ((0x2 * ((uint64_t)x9 * x51)) + ((0x2 * ((uint64_t)x11 * x49)) + ((uint64_t)x13 * x47))))) + (0xbb * ((0x2 * ((uint64_t)x15 * x86)) + ((0x2 * ((uint64_t)x17 * x87)) + ((0x2 * ((uint64_t)x19 * x85)) + ((0x2 * ((uint64_t)x21 * x83)) + ((0x2 * ((uint64_t)x23 * x81)) + ((0x2 * ((uint64_t)x25 * x79)) + ((0x2 * ((uint64_t)x27 * x77)) + ((0x2 * ((uint64_t)x29 * x75)) + (((uint64_t)x31 * x73) + ((0x2 * ((uint64_t)x33 * x71)) + ((0x2 * ((uint64_t)x35 * x69)) + ((0x2 * ((uint64_t)x37 * x67)) + ((0x2 * ((uint64_t)x39 * x65)) + ((0x2 * ((uint64_t)x41 * x63)) + ((0x2 * ((uint64_t)x43 * x61)) + ((0x2 * ((uint64_t)x45 * x59)) + (0x2 * ((uint64_t)x44 * x57))))))))))))))))))));
+ uint64_t x106 = ((((uint64_t)x5 * x53) + ((0x2 * ((uint64_t)x7 * x51)) + ((0x2 * ((uint64_t)x9 * x49)) + ((uint64_t)x11 * x47)))) + (0xbb * (((uint64_t)x13 * x86) + ((0x2 * ((uint64_t)x15 * x87)) + ((0x2 * ((uint64_t)x17 * x85)) + ((0x2 * ((uint64_t)x19 * x83)) + (((uint64_t)x21 * x81) + ((0x2 * ((uint64_t)x23 * x79)) + ((0x2 * ((uint64_t)x25 * x77)) + ((0x2 * ((uint64_t)x27 * x75)) + (((uint64_t)x29 * x73) + (((uint64_t)x31 * x71) + ((0x2 * ((uint64_t)x33 * x69)) + ((0x2 * ((uint64_t)x35 * x67)) + ((0x2 * ((uint64_t)x37 * x65)) + (((uint64_t)x39 * x63) + ((0x2 * ((uint64_t)x41 * x61)) + ((0x2 * ((uint64_t)x43 * x59)) + ((0x2 * ((uint64_t)x45 * x57)) + ((uint64_t)x44 * x55))))))))))))))))))));
+ uint64_t x107 = ((((uint64_t)x5 * x51) + ((0x2 * ((uint64_t)x7 * x49)) + ((uint64_t)x9 * x47))) + (0xbb * (((uint64_t)x11 * x86) + (((uint64_t)x13 * x87) + ((0x2 * ((uint64_t)x15 * x85)) + ((0x2 * ((uint64_t)x17 * x83)) + (((uint64_t)x19 * x81) + (((uint64_t)x21 * x79) + ((0x2 * ((uint64_t)x23 * x77)) + ((0x2 * ((uint64_t)x25 * x75)) + (((uint64_t)x27 * x73) + (((uint64_t)x29 * x71) + (((uint64_t)x31 * x69) + ((0x2 * ((uint64_t)x33 * x67)) + ((0x2 * ((uint64_t)x35 * x65)) + (((uint64_t)x37 * x63) + (((uint64_t)x39 * x61) + ((0x2 * ((uint64_t)x41 * x59)) + ((0x2 * ((uint64_t)x43 * x57)) + (((uint64_t)x45 * x55) + ((uint64_t)x44 * x53)))))))))))))))))))));
+ uint64_t x108 = ((((uint64_t)x5 * x49) + ((uint64_t)x7 * x47)) + (0xbb * (((uint64_t)x9 * x86) + (((uint64_t)x11 * x87) + (((uint64_t)x13 * x85) + ((0x2 * ((uint64_t)x15 * x83)) + (((uint64_t)x17 * x81) + (((uint64_t)x19 * x79) + (((uint64_t)x21 * x77) + ((0x2 * ((uint64_t)x23 * x75)) + (((uint64_t)x25 * x73) + (((uint64_t)x27 * x71) + (((uint64_t)x29 * x69) + (((uint64_t)x31 * x67) + ((0x2 * ((uint64_t)x33 * x65)) + (((uint64_t)x35 * x63) + (((uint64_t)x37 * x61) + (((uint64_t)x39 * x59) + ((0x2 * ((uint64_t)x41 * x57)) + (((uint64_t)x43 * x55) + (((uint64_t)x45 * x53) + ((uint64_t)x44 * x51))))))))))))))))))))));
+ uint64_t x109 = (((uint64_t)x5 * x47) + (0xbb * ((0x2 * ((uint64_t)x7 * x86)) + ((0x2 * ((uint64_t)x9 * x87)) + ((0x2 * ((uint64_t)x11 * x85)) + ((0x2 * ((uint64_t)x13 * x83)) + ((0x2 * ((uint64_t)x15 * x81)) + ((0x2 * ((uint64_t)x17 * x79)) + ((0x2 * ((uint64_t)x19 * x77)) + ((0x2 * ((uint64_t)x21 * x75)) + ((0x2 * ((uint64_t)x23 * x73)) + ((0x2 * ((uint64_t)x25 * x71)) + ((0x2 * ((uint64_t)x27 * x69)) + ((0x2 * ((uint64_t)x29 * x67)) + ((0x2 * ((uint64_t)x31 * x65)) + ((0x2 * ((uint64_t)x33 * x63)) + ((0x2 * ((uint64_t)x35 * x61)) + ((0x2 * ((uint64_t)x37 * x59)) + ((0x2 * ((uint64_t)x39 * x57)) + ((0x2 * ((uint64_t)x41 * x55)) + ((0x2 * ((uint64_t)x43 * x53)) + ((0x2 * ((uint64_t)x45 * x51)) + (0x2 * ((uint64_t)x44 * x49))))))))))))))))))))))));
+ uint64_t x110 = (x109 >> 0x18);
+ uint32_t x111 = ((uint32_t)x109 & 0xffffff);
+ uint64_t x112 = (x110 + x108);
+ uint64_t x113 = (x112 >> 0x17);
+ uint32_t x114 = ((uint32_t)x112 & 0x7fffff);
+ uint64_t x115 = (x113 + x107);
+ uint64_t x116 = (x115 >> 0x17);
+ uint32_t x117 = ((uint32_t)x115 & 0x7fffff);
+ uint64_t x118 = (x116 + x106);
+ uint64_t x119 = (x118 >> 0x17);
+ uint32_t x120 = ((uint32_t)x118 & 0x7fffff);
+ uint64_t x121 = (x119 + x105);
+ uint64_t x122 = (x121 >> 0x18);
+ uint32_t x123 = ((uint32_t)x121 & 0xffffff);
+ uint64_t x124 = (x122 + x104);
+ uint64_t x125 = (x124 >> 0x17);
+ uint32_t x126 = ((uint32_t)x124 & 0x7fffff);
+ uint64_t x127 = (x125 + x103);
+ uint64_t x128 = (x127 >> 0x17);
+ uint32_t x129 = ((uint32_t)x127 & 0x7fffff);
+ uint64_t x130 = (x128 + x102);
+ uint64_t x131 = (x130 >> 0x17);
+ uint32_t x132 = ((uint32_t)x130 & 0x7fffff);
+ uint64_t x133 = (x131 + x101);
+ uint64_t x134 = (x133 >> 0x18);
+ uint32_t x135 = ((uint32_t)x133 & 0xffffff);
+ uint64_t x136 = (x134 + x100);
+ uint64_t x137 = (x136 >> 0x17);
+ uint32_t x138 = ((uint32_t)x136 & 0x7fffff);
+ uint64_t x139 = (x137 + x99);
+ uint64_t x140 = (x139 >> 0x17);
+ uint32_t x141 = ((uint32_t)x139 & 0x7fffff);
+ uint64_t x142 = (x140 + x98);
+ uint64_t x143 = (x142 >> 0x17);
+ uint32_t x144 = ((uint32_t)x142 & 0x7fffff);
+ uint64_t x145 = (x143 + x97);
+ uint64_t x146 = (x145 >> 0x17);
+ uint32_t x147 = ((uint32_t)x145 & 0x7fffff);
+ uint64_t x148 = (x146 + x96);
+ uint64_t x149 = (x148 >> 0x18);
+ uint32_t x150 = ((uint32_t)x148 & 0xffffff);
+ uint64_t x151 = (x149 + x95);
+ uint64_t x152 = (x151 >> 0x17);
+ uint32_t x153 = ((uint32_t)x151 & 0x7fffff);
+ uint64_t x154 = (x152 + x94);
+ uint64_t x155 = (x154 >> 0x17);
+ uint32_t x156 = ((uint32_t)x154 & 0x7fffff);
+ uint64_t x157 = (x155 + x93);
+ uint64_t x158 = (x157 >> 0x17);
+ uint32_t x159 = ((uint32_t)x157 & 0x7fffff);
+ uint64_t x160 = (x158 + x92);
+ uint64_t x161 = (x160 >> 0x18);
+ uint32_t x162 = ((uint32_t)x160 & 0xffffff);
+ uint64_t x163 = (x161 + x91);
+ uint64_t x164 = (x163 >> 0x17);
+ uint32_t x165 = ((uint32_t)x163 & 0x7fffff);
+ uint64_t x166 = (x164 + x90);
+ uint64_t x167 = (x166 >> 0x17);
+ uint32_t x168 = ((uint32_t)x166 & 0x7fffff);
+ uint64_t x169 = (x167 + x89);
+ uint64_t x170 = (x169 >> 0x17);
+ uint32_t x171 = ((uint32_t)x169 & 0x7fffff);
+ uint64_t x172 = (x170 + x88);
+ uint64_t x173 = (x172 >> 0x17);
+ uint32_t x174 = ((uint32_t)x172 & 0x7fffff);
+ uint64_t x175 = (x111 + (0xbb * x173));
+ uint32_t x176 = (uint32_t) (x175 >> 0x18);
+ uint32_t x177 = ((uint32_t)x175 & 0xffffff);
+ uint32_t x178 = (x176 + x114);
+ uint32_t x179 = (x178 >> 0x17);
+ uint32_t x180 = (x178 & 0x7fffff);
+ return (Return x174, Return x171, Return x168, Return x165, Return x162, Return x159, Return x156, Return x153, Return x150, Return x147, Return x144, Return x141, Return x138, Return x135, Return x132, Return x129, Return x126, Return x123, Return x120, (x179 + x117), Return x180, Return x177))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e511m187_22limbs/fesquare.c b/src/Specific/solinas32_2e511m187_22limbs/fesquare.c
new file mode 100644
index 000000000..c2be3c759
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/fesquare.c
@@ -0,0 +1,140 @@
+static void fesquare(uint32_t out[22], const uint32_t in1[22]) {
+ { const uint32_t x41 = 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 x43 = (((uint64_t)x2 * x41) + ((0x2 * ((uint64_t)x4 * x42)) + ((0x2 * ((uint64_t)x6 * x40)) + ((0x2 * ((uint64_t)x8 * x38)) + (((uint64_t)x10 * x36) + ((0x2 * ((uint64_t)x12 * x34)) + ((0x2 * ((uint64_t)x14 * x32)) + ((0x2 * ((uint64_t)x16 * x30)) + (((uint64_t)x18 * x28) + ((0x2 * ((uint64_t)x20 * x26)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + ((0x2 * ((uint64_t)x26 * x20)) + (((uint64_t)x28 * x18) + ((0x2 * ((uint64_t)x30 * x16)) + ((0x2 * ((uint64_t)x32 * x14)) + ((0x2 * ((uint64_t)x34 * x12)) + (((uint64_t)x36 * x10) + ((0x2 * ((uint64_t)x38 * x8)) + ((0x2 * ((uint64_t)x40 * x6)) + ((0x2 * ((uint64_t)x42 * x4)) + ((uint64_t)x41 * x2))))))))))))))))))))));
+ { uint64_t x44 = ((((uint64_t)x2 * x42) + ((0x2 * ((uint64_t)x4 * x40)) + ((0x2 * ((uint64_t)x6 * x38)) + (((uint64_t)x8 * x36) + (((uint64_t)x10 * x34) + ((0x2 * ((uint64_t)x12 * x32)) + ((0x2 * ((uint64_t)x14 * x30)) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + ((0x2 * ((uint64_t)x30 * x14)) + ((0x2 * ((uint64_t)x32 * x12)) + (((uint64_t)x34 * x10) + (((uint64_t)x36 * x8) + ((0x2 * ((uint64_t)x38 * x6)) + ((0x2 * ((uint64_t)x40 * x4)) + ((uint64_t)x42 * x2))))))))))))))))))))) + (0xbb * ((uint64_t)x41 * x41)));
+ { uint64_t x45 = ((((uint64_t)x2 * x40) + ((0x2 * ((uint64_t)x4 * x38)) + (((uint64_t)x6 * x36) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + ((0x2 * ((uint64_t)x12 * x30)) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + ((0x2 * ((uint64_t)x30 * x12)) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + (((uint64_t)x36 * x6) + ((0x2 * ((uint64_t)x38 * x4)) + ((uint64_t)x40 * x2)))))))))))))))))))) + (0xbb * (((uint64_t)x42 * x41) + ((uint64_t)x41 * x42))));
+ { uint64_t x46 = ((((uint64_t)x2 * x38) + (((uint64_t)x4 * x36) + (((uint64_t)x6 * x34) + (((uint64_t)x8 * x32) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + (((uint64_t)x32 * x8) + (((uint64_t)x34 * x6) + (((uint64_t)x36 * x4) + ((uint64_t)x38 * x2))))))))))))))))))) + (0xbb * (((uint64_t)x40 * x41) + (((uint64_t)x42 * x42) + ((uint64_t)x41 * x40)))));
+ { uint64_t x47 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + (((uint64_t)x10 * x28) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + (((uint64_t)x28 * x10) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x38 * x41)) + ((0x2 * ((uint64_t)x40 * x42)) + ((0x2 * ((uint64_t)x42 * x40)) + (0x2 * ((uint64_t)x41 * x38)))))));
+ { uint64_t x48 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + ((0x2 * ((uint64_t)x6 * x30)) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + ((0x2 * ((uint64_t)x30 * x6)) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + (0xbb * (((uint64_t)x36 * x41) + ((0x2 * ((uint64_t)x38 * x42)) + ((0x2 * ((uint64_t)x40 * x40)) + ((0x2 * ((uint64_t)x42 * x38)) + ((uint64_t)x41 * x36)))))));
+ { uint64_t x49 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0xbb * (((uint64_t)x34 * x41) + (((uint64_t)x36 * x42) + ((0x2 * ((uint64_t)x38 * x40)) + ((0x2 * ((uint64_t)x40 * x38)) + (((uint64_t)x42 * x36) + ((uint64_t)x41 * x34))))))));
+ { uint64_t x50 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0xbb * (((uint64_t)x32 * x41) + (((uint64_t)x34 * x42) + (((uint64_t)x36 * x40) + ((0x2 * ((uint64_t)x38 * x38)) + (((uint64_t)x40 * x36) + (((uint64_t)x42 * x34) + ((uint64_t)x41 * x32)))))))));
+ { uint64_t x51 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x30 * x41)) + ((0x2 * ((uint64_t)x32 * x42)) + ((0x2 * ((uint64_t)x34 * x40)) + ((0x2 * ((uint64_t)x36 * x38)) + ((0x2 * ((uint64_t)x38 * x36)) + ((0x2 * ((uint64_t)x40 * x34)) + ((0x2 * ((uint64_t)x42 * x32)) + (0x2 * ((uint64_t)x41 * x30)))))))))));
+ { uint64_t x52 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0xbb * (((uint64_t)x28 * x41) + ((0x2 * ((uint64_t)x30 * x42)) + ((0x2 * ((uint64_t)x32 * x40)) + ((0x2 * ((uint64_t)x34 * x38)) + (((uint64_t)x36 * x36) + ((0x2 * ((uint64_t)x38 * x34)) + ((0x2 * ((uint64_t)x40 * x32)) + ((0x2 * ((uint64_t)x42 * x30)) + ((uint64_t)x41 * x28)))))))))));
+ { uint64_t x53 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0xbb * (((uint64_t)x26 * x41) + (((uint64_t)x28 * x42) + ((0x2 * ((uint64_t)x30 * x40)) + ((0x2 * ((uint64_t)x32 * x38)) + (((uint64_t)x34 * x36) + (((uint64_t)x36 * x34) + ((0x2 * ((uint64_t)x38 * x32)) + ((0x2 * ((uint64_t)x40 * x30)) + (((uint64_t)x42 * x28) + ((uint64_t)x41 * x26))))))))))));
+ { uint64_t x54 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0xbb * (((uint64_t)x24 * x41) + (((uint64_t)x26 * x42) + (((uint64_t)x28 * x40) + ((0x2 * ((uint64_t)x30 * x38)) + (((uint64_t)x32 * x36) + (((uint64_t)x34 * x34) + (((uint64_t)x36 * x32) + ((0x2 * ((uint64_t)x38 * x30)) + (((uint64_t)x40 * x28) + (((uint64_t)x42 * x26) + ((uint64_t)x41 * x24)))))))))))));
+ { uint64_t x55 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0xbb * (((uint64_t)x22 * x41) + (((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)x41 * x22))))))))))))));
+ { uint64_t x56 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0xbb * ((0x2 * ((uint64_t)x20 * x41)) + ((0x2 * ((uint64_t)x22 * x42)) + ((0x2 * ((uint64_t)x24 * x40)) + ((0x2 * ((uint64_t)x26 * x38)) + (((uint64_t)x28 * x36) + ((0x2 * ((uint64_t)x30 * x34)) + ((0x2 * ((uint64_t)x32 * x32)) + ((0x2 * ((uint64_t)x34 * x30)) + (((uint64_t)x36 * x28) + ((0x2 * ((uint64_t)x38 * x26)) + ((0x2 * ((uint64_t)x40 * x24)) + ((0x2 * ((uint64_t)x42 * x22)) + (0x2 * ((uint64_t)x41 * x20))))))))))))))));
+ { uint64_t x57 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0xbb * (((uint64_t)x18 * x41) + ((0x2 * ((uint64_t)x20 * x42)) + ((0x2 * ((uint64_t)x22 * x40)) + ((0x2 * ((uint64_t)x24 * x38)) + (((uint64_t)x26 * x36) + (((uint64_t)x28 * x34) + ((0x2 * ((uint64_t)x30 * x32)) + ((0x2 * ((uint64_t)x32 * x30)) + (((uint64_t)x34 * x28) + (((uint64_t)x36 * x26) + ((0x2 * ((uint64_t)x38 * x24)) + ((0x2 * ((uint64_t)x40 * x22)) + ((0x2 * ((uint64_t)x42 * x20)) + ((uint64_t)x41 * x18))))))))))))))));
+ { uint64_t x58 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xbb * (((uint64_t)x16 * x41) + (((uint64_t)x18 * x42) + ((0x2 * ((uint64_t)x20 * x40)) + ((0x2 * ((uint64_t)x22 * x38)) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + ((0x2 * ((uint64_t)x30 * x30)) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + ((0x2 * ((uint64_t)x38 * x22)) + ((0x2 * ((uint64_t)x40 * x20)) + (((uint64_t)x42 * x18) + ((uint64_t)x41 * x16)))))))))))))))));
+ { uint64_t x59 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xbb * (((uint64_t)x14 * x41) + (((uint64_t)x16 * x42) + (((uint64_t)x18 * x40) + ((0x2 * ((uint64_t)x20 * x38)) + (((uint64_t)x22 * x36) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + (((uint64_t)x36 * x22) + ((0x2 * ((uint64_t)x38 * x20)) + (((uint64_t)x40 * x18) + (((uint64_t)x42 * x16) + ((uint64_t)x41 * x14))))))))))))))))));
+ { uint64_t x60 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xbb * ((0x2 * ((uint64_t)x12 * x41)) + ((0x2 * ((uint64_t)x14 * x42)) + ((0x2 * ((uint64_t)x16 * x40)) + ((0x2 * ((uint64_t)x18 * x38)) + ((0x2 * ((uint64_t)x20 * x36)) + ((0x2 * ((uint64_t)x22 * x34)) + ((0x2 * ((uint64_t)x24 * x32)) + ((0x2 * ((uint64_t)x26 * x30)) + (((uint64_t)x28 * x28) + ((0x2 * ((uint64_t)x30 * x26)) + ((0x2 * ((uint64_t)x32 * x24)) + ((0x2 * ((uint64_t)x34 * x22)) + ((0x2 * ((uint64_t)x36 * x20)) + ((0x2 * ((uint64_t)x38 * x18)) + ((0x2 * ((uint64_t)x40 * x16)) + ((0x2 * ((uint64_t)x42 * x14)) + (0x2 * ((uint64_t)x41 * x12))))))))))))))))))));
+ { uint64_t x61 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xbb * (((uint64_t)x10 * x41) + ((0x2 * ((uint64_t)x12 * x42)) + ((0x2 * ((uint64_t)x14 * x40)) + ((0x2 * ((uint64_t)x16 * x38)) + (((uint64_t)x18 * x36) + ((0x2 * ((uint64_t)x20 * x34)) + ((0x2 * ((uint64_t)x22 * x32)) + ((0x2 * ((uint64_t)x24 * x30)) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + ((0x2 * ((uint64_t)x30 * x24)) + ((0x2 * ((uint64_t)x32 * x22)) + ((0x2 * ((uint64_t)x34 * x20)) + (((uint64_t)x36 * x18) + ((0x2 * ((uint64_t)x38 * x16)) + ((0x2 * ((uint64_t)x40 * x14)) + ((0x2 * ((uint64_t)x42 * x12)) + ((uint64_t)x41 * x10))))))))))))))))))));
+ { uint64_t x62 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xbb * (((uint64_t)x8 * x41) + (((uint64_t)x10 * x42) + ((0x2 * ((uint64_t)x12 * x40)) + ((0x2 * ((uint64_t)x14 * x38)) + (((uint64_t)x16 * x36) + (((uint64_t)x18 * x34) + ((0x2 * ((uint64_t)x20 * x32)) + ((0x2 * ((uint64_t)x22 * x30)) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + ((0x2 * ((uint64_t)x30 * x22)) + ((0x2 * ((uint64_t)x32 * x20)) + (((uint64_t)x34 * x18) + (((uint64_t)x36 * x16) + ((0x2 * ((uint64_t)x38 * x14)) + ((0x2 * ((uint64_t)x40 * x12)) + (((uint64_t)x42 * x10) + ((uint64_t)x41 * x8)))))))))))))))))))));
+ { uint64_t x63 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xbb * (((uint64_t)x6 * x41) + (((uint64_t)x8 * x42) + (((uint64_t)x10 * x40) + ((0x2 * ((uint64_t)x12 * x38)) + (((uint64_t)x14 * x36) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + ((0x2 * ((uint64_t)x20 * x30)) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + ((0x2 * ((uint64_t)x30 * x20)) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + (((uint64_t)x36 * x14) + ((0x2 * ((uint64_t)x38 * x12)) + (((uint64_t)x40 * x10) + (((uint64_t)x42 * x8) + ((uint64_t)x41 * x6))))))))))))))))))))));
+ { uint64_t x64 = (((uint64_t)x2 * x2) + (0xbb * ((0x2 * ((uint64_t)x4 * x41)) + ((0x2 * ((uint64_t)x6 * x42)) + ((0x2 * ((uint64_t)x8 * x40)) + ((0x2 * ((uint64_t)x10 * x38)) + ((0x2 * ((uint64_t)x12 * x36)) + ((0x2 * ((uint64_t)x14 * x34)) + ((0x2 * ((uint64_t)x16 * x32)) + ((0x2 * ((uint64_t)x18 * x30)) + ((0x2 * ((uint64_t)x20 * x28)) + ((0x2 * ((uint64_t)x22 * x26)) + ((0x2 * ((uint64_t)x24 * x24)) + ((0x2 * ((uint64_t)x26 * x22)) + ((0x2 * ((uint64_t)x28 * x20)) + ((0x2 * ((uint64_t)x30 * x18)) + ((0x2 * ((uint64_t)x32 * x16)) + ((0x2 * ((uint64_t)x34 * x14)) + ((0x2 * ((uint64_t)x36 * x12)) + ((0x2 * ((uint64_t)x38 * x10)) + ((0x2 * ((uint64_t)x40 * x8)) + ((0x2 * ((uint64_t)x42 * x6)) + (0x2 * ((uint64_t)x41 * x4))))))))))))))))))))))));
+ { uint64_t x65 = (x64 >> 0x18);
+ { uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ { uint64_t x67 = (x65 + x63);
+ { uint64_t x68 = (x67 >> 0x17);
+ { uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
+ { uint64_t x70 = (x68 + x62);
+ { uint64_t x71 = (x70 >> 0x17);
+ { uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
+ { uint64_t x73 = (x71 + x61);
+ { uint64_t x74 = (x73 >> 0x17);
+ { uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
+ { uint64_t x76 = (x74 + x60);
+ { uint64_t x77 = (x76 >> 0x18);
+ { uint32_t x78 = ((uint32_t)x76 & 0xffffff);
+ { uint64_t x79 = (x77 + x59);
+ { uint64_t x80 = (x79 >> 0x17);
+ { uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
+ { uint64_t x82 = (x80 + x58);
+ { uint64_t x83 = (x82 >> 0x17);
+ { uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
+ { uint64_t x85 = (x83 + x57);
+ { uint64_t x86 = (x85 >> 0x17);
+ { uint32_t x87 = ((uint32_t)x85 & 0x7fffff);
+ { uint64_t x88 = (x86 + x56);
+ { uint64_t x89 = (x88 >> 0x18);
+ { uint32_t x90 = ((uint32_t)x88 & 0xffffff);
+ { uint64_t x91 = (x89 + x55);
+ { uint64_t x92 = (x91 >> 0x17);
+ { uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
+ { uint64_t x94 = (x92 + x54);
+ { uint64_t x95 = (x94 >> 0x17);
+ { uint32_t x96 = ((uint32_t)x94 & 0x7fffff);
+ { uint64_t x97 = (x95 + x53);
+ { uint64_t x98 = (x97 >> 0x17);
+ { uint32_t x99 = ((uint32_t)x97 & 0x7fffff);
+ { uint64_t x100 = (x98 + x52);
+ { uint64_t x101 = (x100 >> 0x17);
+ { uint32_t x102 = ((uint32_t)x100 & 0x7fffff);
+ { uint64_t x103 = (x101 + x51);
+ { uint64_t x104 = (x103 >> 0x18);
+ { uint32_t x105 = ((uint32_t)x103 & 0xffffff);
+ { uint64_t x106 = (x104 + x50);
+ { uint64_t x107 = (x106 >> 0x17);
+ { uint32_t x108 = ((uint32_t)x106 & 0x7fffff);
+ { uint64_t x109 = (x107 + x49);
+ { uint64_t x110 = (x109 >> 0x17);
+ { uint32_t x111 = ((uint32_t)x109 & 0x7fffff);
+ { uint64_t x112 = (x110 + x48);
+ { uint64_t x113 = (x112 >> 0x17);
+ { uint32_t x114 = ((uint32_t)x112 & 0x7fffff);
+ { uint64_t x115 = (x113 + x47);
+ { uint64_t x116 = (x115 >> 0x18);
+ { uint32_t x117 = ((uint32_t)x115 & 0xffffff);
+ { uint64_t x118 = (x116 + x46);
+ { uint64_t x119 = (x118 >> 0x17);
+ { uint32_t x120 = ((uint32_t)x118 & 0x7fffff);
+ { uint64_t x121 = (x119 + x45);
+ { uint64_t x122 = (x121 >> 0x17);
+ { uint32_t x123 = ((uint32_t)x121 & 0x7fffff);
+ { uint64_t x124 = (x122 + x44);
+ { uint64_t x125 = (x124 >> 0x17);
+ { uint32_t x126 = ((uint32_t)x124 & 0x7fffff);
+ { uint64_t x127 = (x125 + x43);
+ { uint64_t x128 = (x127 >> 0x17);
+ { uint32_t x129 = ((uint32_t)x127 & 0x7fffff);
+ { uint64_t x130 = (x66 + (0xbb * x128));
+ { uint32_t x131 = (uint32_t) (x130 >> 0x18);
+ { uint32_t x132 = ((uint32_t)x130 & 0xffffff);
+ { uint32_t x133 = (x131 + x69);
+ { uint32_t x134 = (x133 >> 0x17);
+ { uint32_t x135 = (x133 & 0x7fffff);
+ out[0] = x132;
+ out[1] = x135;
+ out[2] = (x134 + x72);
+ out[3] = x75;
+ out[4] = x78;
+ out[5] = x81;
+ out[6] = x84;
+ out[7] = x87;
+ out[8] = x90;
+ out[9] = x93;
+ out[10] = x96;
+ out[11] = x99;
+ out[12] = x102;
+ out[13] = x105;
+ out[14] = x108;
+ out[15] = x111;
+ out[16] = x114;
+ out[17] = x117;
+ out[18] = x120;
+ out[19] = x123;
+ out[20] = x126;
+ out[21] = x129;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e511m187_22limbs/fesquareDisplay.log b/src/Specific/solinas32_2e511m187_22limbs/fesquareDisplay.log
new file mode 100644
index 000000000..6317d70a1
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/fesquareDisplay.log
@@ -0,0 +1,100 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x41, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint64_t x43 = (((uint64_t)x2 * x41) + ((0x2 * ((uint64_t)x4 * x42)) + ((0x2 * ((uint64_t)x6 * x40)) + ((0x2 * ((uint64_t)x8 * x38)) + (((uint64_t)x10 * x36) + ((0x2 * ((uint64_t)x12 * x34)) + ((0x2 * ((uint64_t)x14 * x32)) + ((0x2 * ((uint64_t)x16 * x30)) + (((uint64_t)x18 * x28) + ((0x2 * ((uint64_t)x20 * x26)) + ((0x2 * ((uint64_t)x22 * x24)) + ((0x2 * ((uint64_t)x24 * x22)) + ((0x2 * ((uint64_t)x26 * x20)) + (((uint64_t)x28 * x18) + ((0x2 * ((uint64_t)x30 * x16)) + ((0x2 * ((uint64_t)x32 * x14)) + ((0x2 * ((uint64_t)x34 * x12)) + (((uint64_t)x36 * x10) + ((0x2 * ((uint64_t)x38 * x8)) + ((0x2 * ((uint64_t)x40 * x6)) + ((0x2 * ((uint64_t)x42 * x4)) + ((uint64_t)x41 * x2))))))))))))))))))))));
+ uint64_t x44 = ((((uint64_t)x2 * x42) + ((0x2 * ((uint64_t)x4 * x40)) + ((0x2 * ((uint64_t)x6 * x38)) + (((uint64_t)x8 * x36) + (((uint64_t)x10 * x34) + ((0x2 * ((uint64_t)x12 * x32)) + ((0x2 * ((uint64_t)x14 * x30)) + (((uint64_t)x16 * x28) + (((uint64_t)x18 * x26) + ((0x2 * ((uint64_t)x20 * x24)) + ((0x2 * ((uint64_t)x22 * x22)) + ((0x2 * ((uint64_t)x24 * x20)) + (((uint64_t)x26 * x18) + (((uint64_t)x28 * x16) + ((0x2 * ((uint64_t)x30 * x14)) + ((0x2 * ((uint64_t)x32 * x12)) + (((uint64_t)x34 * x10) + (((uint64_t)x36 * x8) + ((0x2 * ((uint64_t)x38 * x6)) + ((0x2 * ((uint64_t)x40 * x4)) + ((uint64_t)x42 * x2))))))))))))))))))))) + (0xbb * ((uint64_t)x41 * x41)));
+ uint64_t x45 = ((((uint64_t)x2 * x40) + ((0x2 * ((uint64_t)x4 * x38)) + (((uint64_t)x6 * x36) + (((uint64_t)x8 * x34) + (((uint64_t)x10 * x32) + ((0x2 * ((uint64_t)x12 * x30)) + (((uint64_t)x14 * x28) + (((uint64_t)x16 * x26) + (((uint64_t)x18 * x24) + ((0x2 * ((uint64_t)x20 * x22)) + ((0x2 * ((uint64_t)x22 * x20)) + (((uint64_t)x24 * x18) + (((uint64_t)x26 * x16) + (((uint64_t)x28 * x14) + ((0x2 * ((uint64_t)x30 * x12)) + (((uint64_t)x32 * x10) + (((uint64_t)x34 * x8) + (((uint64_t)x36 * x6) + ((0x2 * ((uint64_t)x38 * x4)) + ((uint64_t)x40 * x2)))))))))))))))))))) + (0xbb * (((uint64_t)x42 * x41) + ((uint64_t)x41 * x42))));
+ uint64_t x46 = ((((uint64_t)x2 * x38) + (((uint64_t)x4 * x36) + (((uint64_t)x6 * x34) + (((uint64_t)x8 * x32) + (((uint64_t)x10 * x30) + (((uint64_t)x12 * x28) + (((uint64_t)x14 * x26) + (((uint64_t)x16 * x24) + (((uint64_t)x18 * x22) + ((0x2 * ((uint64_t)x20 * x20)) + (((uint64_t)x22 * x18) + (((uint64_t)x24 * x16) + (((uint64_t)x26 * x14) + (((uint64_t)x28 * x12) + (((uint64_t)x30 * x10) + (((uint64_t)x32 * x8) + (((uint64_t)x34 * x6) + (((uint64_t)x36 * x4) + ((uint64_t)x38 * x2))))))))))))))))))) + (0xbb * (((uint64_t)x40 * x41) + (((uint64_t)x42 * x42) + ((uint64_t)x41 * x40)))));
+ uint64_t x47 = ((((uint64_t)x2 * x36) + ((0x2 * ((uint64_t)x4 * x34)) + ((0x2 * ((uint64_t)x6 * x32)) + ((0x2 * ((uint64_t)x8 * x30)) + (((uint64_t)x10 * x28) + ((0x2 * ((uint64_t)x12 * x26)) + ((0x2 * ((uint64_t)x14 * x24)) + ((0x2 * ((uint64_t)x16 * x22)) + ((0x2 * ((uint64_t)x18 * x20)) + ((0x2 * ((uint64_t)x20 * x18)) + ((0x2 * ((uint64_t)x22 * x16)) + ((0x2 * ((uint64_t)x24 * x14)) + ((0x2 * ((uint64_t)x26 * x12)) + (((uint64_t)x28 * x10) + ((0x2 * ((uint64_t)x30 * x8)) + ((0x2 * ((uint64_t)x32 * x6)) + ((0x2 * ((uint64_t)x34 * x4)) + ((uint64_t)x36 * x2)))))))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x38 * x41)) + ((0x2 * ((uint64_t)x40 * x42)) + ((0x2 * ((uint64_t)x42 * x40)) + (0x2 * ((uint64_t)x41 * x38)))))));
+ uint64_t x48 = ((((uint64_t)x2 * x34) + ((0x2 * ((uint64_t)x4 * x32)) + ((0x2 * ((uint64_t)x6 * x30)) + (((uint64_t)x8 * x28) + (((uint64_t)x10 * x26) + ((0x2 * ((uint64_t)x12 * x24)) + ((0x2 * ((uint64_t)x14 * x22)) + ((0x2 * ((uint64_t)x16 * x20)) + (((uint64_t)x18 * x18) + ((0x2 * ((uint64_t)x20 * x16)) + ((0x2 * ((uint64_t)x22 * x14)) + ((0x2 * ((uint64_t)x24 * x12)) + (((uint64_t)x26 * x10) + (((uint64_t)x28 * x8) + ((0x2 * ((uint64_t)x30 * x6)) + ((0x2 * ((uint64_t)x32 * x4)) + ((uint64_t)x34 * x2))))))))))))))))) + (0xbb * (((uint64_t)x36 * x41) + ((0x2 * ((uint64_t)x38 * x42)) + ((0x2 * ((uint64_t)x40 * x40)) + ((0x2 * ((uint64_t)x42 * x38)) + ((uint64_t)x41 * x36)))))));
+ uint64_t x49 = ((((uint64_t)x2 * x32) + ((0x2 * ((uint64_t)x4 * x30)) + (((uint64_t)x6 * x28) + (((uint64_t)x8 * x26) + (((uint64_t)x10 * x24) + ((0x2 * ((uint64_t)x12 * x22)) + ((0x2 * ((uint64_t)x14 * x20)) + (((uint64_t)x16 * x18) + (((uint64_t)x18 * x16) + ((0x2 * ((uint64_t)x20 * x14)) + ((0x2 * ((uint64_t)x22 * x12)) + (((uint64_t)x24 * x10) + (((uint64_t)x26 * x8) + (((uint64_t)x28 * x6) + ((0x2 * ((uint64_t)x30 * x4)) + ((uint64_t)x32 * x2)))))))))))))))) + (0xbb * (((uint64_t)x34 * x41) + (((uint64_t)x36 * x42) + ((0x2 * ((uint64_t)x38 * x40)) + ((0x2 * ((uint64_t)x40 * x38)) + (((uint64_t)x42 * x36) + ((uint64_t)x41 * x34))))))));
+ uint64_t x50 = ((((uint64_t)x2 * x30) + (((uint64_t)x4 * x28) + (((uint64_t)x6 * x26) + (((uint64_t)x8 * x24) + (((uint64_t)x10 * x22) + ((0x2 * ((uint64_t)x12 * x20)) + (((uint64_t)x14 * x18) + (((uint64_t)x16 * x16) + (((uint64_t)x18 * x14) + ((0x2 * ((uint64_t)x20 * x12)) + (((uint64_t)x22 * x10) + (((uint64_t)x24 * x8) + (((uint64_t)x26 * x6) + (((uint64_t)x28 * x4) + ((uint64_t)x30 * x2))))))))))))))) + (0xbb * (((uint64_t)x32 * x41) + (((uint64_t)x34 * x42) + (((uint64_t)x36 * x40) + ((0x2 * ((uint64_t)x38 * x38)) + (((uint64_t)x40 * x36) + (((uint64_t)x42 * x34) + ((uint64_t)x41 * x32)))))))));
+ uint64_t x51 = ((((uint64_t)x2 * x28) + ((0x2 * ((uint64_t)x4 * x26)) + ((0x2 * ((uint64_t)x6 * x24)) + ((0x2 * ((uint64_t)x8 * x22)) + ((0x2 * ((uint64_t)x10 * x20)) + ((0x2 * ((uint64_t)x12 * x18)) + ((0x2 * ((uint64_t)x14 * x16)) + ((0x2 * ((uint64_t)x16 * x14)) + ((0x2 * ((uint64_t)x18 * x12)) + ((0x2 * ((uint64_t)x20 * x10)) + ((0x2 * ((uint64_t)x22 * x8)) + ((0x2 * ((uint64_t)x24 * x6)) + ((0x2 * ((uint64_t)x26 * x4)) + ((uint64_t)x28 * x2)))))))))))))) + (0xbb * ((0x2 * ((uint64_t)x30 * x41)) + ((0x2 * ((uint64_t)x32 * x42)) + ((0x2 * ((uint64_t)x34 * x40)) + ((0x2 * ((uint64_t)x36 * x38)) + ((0x2 * ((uint64_t)x38 * x36)) + ((0x2 * ((uint64_t)x40 * x34)) + ((0x2 * ((uint64_t)x42 * x32)) + (0x2 * ((uint64_t)x41 * x30)))))))))));
+ uint64_t x52 = ((((uint64_t)x2 * x26) + ((0x2 * ((uint64_t)x4 * x24)) + ((0x2 * ((uint64_t)x6 * x22)) + ((0x2 * ((uint64_t)x8 * x20)) + (((uint64_t)x10 * x18) + ((0x2 * ((uint64_t)x12 * x16)) + ((0x2 * ((uint64_t)x14 * x14)) + ((0x2 * ((uint64_t)x16 * x12)) + (((uint64_t)x18 * x10) + ((0x2 * ((uint64_t)x20 * x8)) + ((0x2 * ((uint64_t)x22 * x6)) + ((0x2 * ((uint64_t)x24 * x4)) + ((uint64_t)x26 * x2))))))))))))) + (0xbb * (((uint64_t)x28 * x41) + ((0x2 * ((uint64_t)x30 * x42)) + ((0x2 * ((uint64_t)x32 * x40)) + ((0x2 * ((uint64_t)x34 * x38)) + (((uint64_t)x36 * x36) + ((0x2 * ((uint64_t)x38 * x34)) + ((0x2 * ((uint64_t)x40 * x32)) + ((0x2 * ((uint64_t)x42 * x30)) + ((uint64_t)x41 * x28)))))))))));
+ uint64_t x53 = ((((uint64_t)x2 * x24) + ((0x2 * ((uint64_t)x4 * x22)) + ((0x2 * ((uint64_t)x6 * x20)) + (((uint64_t)x8 * x18) + (((uint64_t)x10 * x16) + ((0x2 * ((uint64_t)x12 * x14)) + ((0x2 * ((uint64_t)x14 * x12)) + (((uint64_t)x16 * x10) + (((uint64_t)x18 * x8) + ((0x2 * ((uint64_t)x20 * x6)) + ((0x2 * ((uint64_t)x22 * x4)) + ((uint64_t)x24 * x2)))))))))))) + (0xbb * (((uint64_t)x26 * x41) + (((uint64_t)x28 * x42) + ((0x2 * ((uint64_t)x30 * x40)) + ((0x2 * ((uint64_t)x32 * x38)) + (((uint64_t)x34 * x36) + (((uint64_t)x36 * x34) + ((0x2 * ((uint64_t)x38 * x32)) + ((0x2 * ((uint64_t)x40 * x30)) + (((uint64_t)x42 * x28) + ((uint64_t)x41 * x26))))))))))));
+ uint64_t x54 = ((((uint64_t)x2 * x22) + ((0x2 * ((uint64_t)x4 * x20)) + (((uint64_t)x6 * x18) + (((uint64_t)x8 * x16) + (((uint64_t)x10 * x14) + ((0x2 * ((uint64_t)x12 * x12)) + (((uint64_t)x14 * x10) + (((uint64_t)x16 * x8) + (((uint64_t)x18 * x6) + ((0x2 * ((uint64_t)x20 * x4)) + ((uint64_t)x22 * x2))))))))))) + (0xbb * (((uint64_t)x24 * x41) + (((uint64_t)x26 * x42) + (((uint64_t)x28 * x40) + ((0x2 * ((uint64_t)x30 * x38)) + (((uint64_t)x32 * x36) + (((uint64_t)x34 * x34) + (((uint64_t)x36 * x32) + ((0x2 * ((uint64_t)x38 * x30)) + (((uint64_t)x40 * x28) + (((uint64_t)x42 * x26) + ((uint64_t)x41 * x24)))))))))))));
+ uint64_t x55 = ((((uint64_t)x2 * x20) + (((uint64_t)x4 * x18) + (((uint64_t)x6 * x16) + (((uint64_t)x8 * x14) + (((uint64_t)x10 * x12) + (((uint64_t)x12 * x10) + (((uint64_t)x14 * x8) + (((uint64_t)x16 * x6) + (((uint64_t)x18 * x4) + ((uint64_t)x20 * x2)))))))))) + (0xbb * (((uint64_t)x22 * x41) + (((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)x41 * x22))))))))))))));
+ uint64_t x56 = ((((uint64_t)x2 * x18) + ((0x2 * ((uint64_t)x4 * x16)) + ((0x2 * ((uint64_t)x6 * x14)) + ((0x2 * ((uint64_t)x8 * x12)) + (((uint64_t)x10 * x10) + ((0x2 * ((uint64_t)x12 * x8)) + ((0x2 * ((uint64_t)x14 * x6)) + ((0x2 * ((uint64_t)x16 * x4)) + ((uint64_t)x18 * x2))))))))) + (0xbb * ((0x2 * ((uint64_t)x20 * x41)) + ((0x2 * ((uint64_t)x22 * x42)) + ((0x2 * ((uint64_t)x24 * x40)) + ((0x2 * ((uint64_t)x26 * x38)) + (((uint64_t)x28 * x36) + ((0x2 * ((uint64_t)x30 * x34)) + ((0x2 * ((uint64_t)x32 * x32)) + ((0x2 * ((uint64_t)x34 * x30)) + (((uint64_t)x36 * x28) + ((0x2 * ((uint64_t)x38 * x26)) + ((0x2 * ((uint64_t)x40 * x24)) + ((0x2 * ((uint64_t)x42 * x22)) + (0x2 * ((uint64_t)x41 * x20))))))))))))))));
+ uint64_t x57 = ((((uint64_t)x2 * x16) + ((0x2 * ((uint64_t)x4 * x14)) + ((0x2 * ((uint64_t)x6 * x12)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((0x2 * ((uint64_t)x12 * x6)) + ((0x2 * ((uint64_t)x14 * x4)) + ((uint64_t)x16 * x2)))))))) + (0xbb * (((uint64_t)x18 * x41) + ((0x2 * ((uint64_t)x20 * x42)) + ((0x2 * ((uint64_t)x22 * x40)) + ((0x2 * ((uint64_t)x24 * x38)) + (((uint64_t)x26 * x36) + (((uint64_t)x28 * x34) + ((0x2 * ((uint64_t)x30 * x32)) + ((0x2 * ((uint64_t)x32 * x30)) + (((uint64_t)x34 * x28) + (((uint64_t)x36 * x26) + ((0x2 * ((uint64_t)x38 * x24)) + ((0x2 * ((uint64_t)x40 * x22)) + ((0x2 * ((uint64_t)x42 * x20)) + ((uint64_t)x41 * x18))))))))))))))));
+ uint64_t x58 = ((((uint64_t)x2 * x14) + ((0x2 * ((uint64_t)x4 * x12)) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((0x2 * ((uint64_t)x12 * x4)) + ((uint64_t)x14 * x2))))))) + (0xbb * (((uint64_t)x16 * x41) + (((uint64_t)x18 * x42) + ((0x2 * ((uint64_t)x20 * x40)) + ((0x2 * ((uint64_t)x22 * x38)) + (((uint64_t)x24 * x36) + (((uint64_t)x26 * x34) + (((uint64_t)x28 * x32) + ((0x2 * ((uint64_t)x30 * x30)) + (((uint64_t)x32 * x28) + (((uint64_t)x34 * x26) + (((uint64_t)x36 * x24) + ((0x2 * ((uint64_t)x38 * x22)) + ((0x2 * ((uint64_t)x40 * x20)) + (((uint64_t)x42 * x18) + ((uint64_t)x41 * x16)))))))))))))))));
+ uint64_t x59 = ((((uint64_t)x2 * x12) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x12 * x2)))))) + (0xbb * (((uint64_t)x14 * x41) + (((uint64_t)x16 * x42) + (((uint64_t)x18 * x40) + ((0x2 * ((uint64_t)x20 * x38)) + (((uint64_t)x22 * x36) + (((uint64_t)x24 * x34) + (((uint64_t)x26 * x32) + (((uint64_t)x28 * x30) + (((uint64_t)x30 * x28) + (((uint64_t)x32 * x26) + (((uint64_t)x34 * x24) + (((uint64_t)x36 * x22) + ((0x2 * ((uint64_t)x38 * x20)) + (((uint64_t)x40 * x18) + (((uint64_t)x42 * x16) + ((uint64_t)x41 * x14))))))))))))))))));
+ uint64_t x60 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + ((0x2 * ((uint64_t)x6 * x6)) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0xbb * ((0x2 * ((uint64_t)x12 * x41)) + ((0x2 * ((uint64_t)x14 * x42)) + ((0x2 * ((uint64_t)x16 * x40)) + ((0x2 * ((uint64_t)x18 * x38)) + ((0x2 * ((uint64_t)x20 * x36)) + ((0x2 * ((uint64_t)x22 * x34)) + ((0x2 * ((uint64_t)x24 * x32)) + ((0x2 * ((uint64_t)x26 * x30)) + (((uint64_t)x28 * x28) + ((0x2 * ((uint64_t)x30 * x26)) + ((0x2 * ((uint64_t)x32 * x24)) + ((0x2 * ((uint64_t)x34 * x22)) + ((0x2 * ((uint64_t)x36 * x20)) + ((0x2 * ((uint64_t)x38 * x18)) + ((0x2 * ((uint64_t)x40 * x16)) + ((0x2 * ((uint64_t)x42 * x14)) + (0x2 * ((uint64_t)x41 * x12))))))))))))))))))));
+ uint64_t x61 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xbb * (((uint64_t)x10 * x41) + ((0x2 * ((uint64_t)x12 * x42)) + ((0x2 * ((uint64_t)x14 * x40)) + ((0x2 * ((uint64_t)x16 * x38)) + (((uint64_t)x18 * x36) + ((0x2 * ((uint64_t)x20 * x34)) + ((0x2 * ((uint64_t)x22 * x32)) + ((0x2 * ((uint64_t)x24 * x30)) + (((uint64_t)x26 * x28) + (((uint64_t)x28 * x26) + ((0x2 * ((uint64_t)x30 * x24)) + ((0x2 * ((uint64_t)x32 * x22)) + ((0x2 * ((uint64_t)x34 * x20)) + (((uint64_t)x36 * x18) + ((0x2 * ((uint64_t)x38 * x16)) + ((0x2 * ((uint64_t)x40 * x14)) + ((0x2 * ((uint64_t)x42 * x12)) + ((uint64_t)x41 * x10))))))))))))))))))));
+ uint64_t x62 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xbb * (((uint64_t)x8 * x41) + (((uint64_t)x10 * x42) + ((0x2 * ((uint64_t)x12 * x40)) + ((0x2 * ((uint64_t)x14 * x38)) + (((uint64_t)x16 * x36) + (((uint64_t)x18 * x34) + ((0x2 * ((uint64_t)x20 * x32)) + ((0x2 * ((uint64_t)x22 * x30)) + (((uint64_t)x24 * x28) + (((uint64_t)x26 * x26) + (((uint64_t)x28 * x24) + ((0x2 * ((uint64_t)x30 * x22)) + ((0x2 * ((uint64_t)x32 * x20)) + (((uint64_t)x34 * x18) + (((uint64_t)x36 * x16) + ((0x2 * ((uint64_t)x38 * x14)) + ((0x2 * ((uint64_t)x40 * x12)) + (((uint64_t)x42 * x10) + ((uint64_t)x41 * x8)))))))))))))))))))));
+ uint64_t x63 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xbb * (((uint64_t)x6 * x41) + (((uint64_t)x8 * x42) + (((uint64_t)x10 * x40) + ((0x2 * ((uint64_t)x12 * x38)) + (((uint64_t)x14 * x36) + (((uint64_t)x16 * x34) + (((uint64_t)x18 * x32) + ((0x2 * ((uint64_t)x20 * x30)) + (((uint64_t)x22 * x28) + (((uint64_t)x24 * x26) + (((uint64_t)x26 * x24) + (((uint64_t)x28 * x22) + ((0x2 * ((uint64_t)x30 * x20)) + (((uint64_t)x32 * x18) + (((uint64_t)x34 * x16) + (((uint64_t)x36 * x14) + ((0x2 * ((uint64_t)x38 * x12)) + (((uint64_t)x40 * x10) + (((uint64_t)x42 * x8) + ((uint64_t)x41 * x6))))))))))))))))))))));
+ uint64_t x64 = (((uint64_t)x2 * x2) + (0xbb * ((0x2 * ((uint64_t)x4 * x41)) + ((0x2 * ((uint64_t)x6 * x42)) + ((0x2 * ((uint64_t)x8 * x40)) + ((0x2 * ((uint64_t)x10 * x38)) + ((0x2 * ((uint64_t)x12 * x36)) + ((0x2 * ((uint64_t)x14 * x34)) + ((0x2 * ((uint64_t)x16 * x32)) + ((0x2 * ((uint64_t)x18 * x30)) + ((0x2 * ((uint64_t)x20 * x28)) + ((0x2 * ((uint64_t)x22 * x26)) + ((0x2 * ((uint64_t)x24 * x24)) + ((0x2 * ((uint64_t)x26 * x22)) + ((0x2 * ((uint64_t)x28 * x20)) + ((0x2 * ((uint64_t)x30 * x18)) + ((0x2 * ((uint64_t)x32 * x16)) + ((0x2 * ((uint64_t)x34 * x14)) + ((0x2 * ((uint64_t)x36 * x12)) + ((0x2 * ((uint64_t)x38 * x10)) + ((0x2 * ((uint64_t)x40 * x8)) + ((0x2 * ((uint64_t)x42 * x6)) + (0x2 * ((uint64_t)x41 * x4))))))))))))))))))))))));
+ uint64_t x65 = (x64 >> 0x18);
+ uint32_t x66 = ((uint32_t)x64 & 0xffffff);
+ uint64_t x67 = (x65 + x63);
+ uint64_t x68 = (x67 >> 0x17);
+ uint32_t x69 = ((uint32_t)x67 & 0x7fffff);
+ uint64_t x70 = (x68 + x62);
+ uint64_t x71 = (x70 >> 0x17);
+ uint32_t x72 = ((uint32_t)x70 & 0x7fffff);
+ uint64_t x73 = (x71 + x61);
+ uint64_t x74 = (x73 >> 0x17);
+ uint32_t x75 = ((uint32_t)x73 & 0x7fffff);
+ uint64_t x76 = (x74 + x60);
+ uint64_t x77 = (x76 >> 0x18);
+ uint32_t x78 = ((uint32_t)x76 & 0xffffff);
+ uint64_t x79 = (x77 + x59);
+ uint64_t x80 = (x79 >> 0x17);
+ uint32_t x81 = ((uint32_t)x79 & 0x7fffff);
+ uint64_t x82 = (x80 + x58);
+ uint64_t x83 = (x82 >> 0x17);
+ uint32_t x84 = ((uint32_t)x82 & 0x7fffff);
+ uint64_t x85 = (x83 + x57);
+ uint64_t x86 = (x85 >> 0x17);
+ uint32_t x87 = ((uint32_t)x85 & 0x7fffff);
+ uint64_t x88 = (x86 + x56);
+ uint64_t x89 = (x88 >> 0x18);
+ uint32_t x90 = ((uint32_t)x88 & 0xffffff);
+ uint64_t x91 = (x89 + x55);
+ uint64_t x92 = (x91 >> 0x17);
+ uint32_t x93 = ((uint32_t)x91 & 0x7fffff);
+ uint64_t x94 = (x92 + x54);
+ uint64_t x95 = (x94 >> 0x17);
+ uint32_t x96 = ((uint32_t)x94 & 0x7fffff);
+ uint64_t x97 = (x95 + x53);
+ uint64_t x98 = (x97 >> 0x17);
+ uint32_t x99 = ((uint32_t)x97 & 0x7fffff);
+ uint64_t x100 = (x98 + x52);
+ uint64_t x101 = (x100 >> 0x17);
+ uint32_t x102 = ((uint32_t)x100 & 0x7fffff);
+ uint64_t x103 = (x101 + x51);
+ uint64_t x104 = (x103 >> 0x18);
+ uint32_t x105 = ((uint32_t)x103 & 0xffffff);
+ uint64_t x106 = (x104 + x50);
+ uint64_t x107 = (x106 >> 0x17);
+ uint32_t x108 = ((uint32_t)x106 & 0x7fffff);
+ uint64_t x109 = (x107 + x49);
+ uint64_t x110 = (x109 >> 0x17);
+ uint32_t x111 = ((uint32_t)x109 & 0x7fffff);
+ uint64_t x112 = (x110 + x48);
+ uint64_t x113 = (x112 >> 0x17);
+ uint32_t x114 = ((uint32_t)x112 & 0x7fffff);
+ uint64_t x115 = (x113 + x47);
+ uint64_t x116 = (x115 >> 0x18);
+ uint32_t x117 = ((uint32_t)x115 & 0xffffff);
+ uint64_t x118 = (x116 + x46);
+ uint64_t x119 = (x118 >> 0x17);
+ uint32_t x120 = ((uint32_t)x118 & 0x7fffff);
+ uint64_t x121 = (x119 + x45);
+ uint64_t x122 = (x121 >> 0x17);
+ uint32_t x123 = ((uint32_t)x121 & 0x7fffff);
+ uint64_t x124 = (x122 + x44);
+ uint64_t x125 = (x124 >> 0x17);
+ uint32_t x126 = ((uint32_t)x124 & 0x7fffff);
+ uint64_t x127 = (x125 + x43);
+ uint64_t x128 = (x127 >> 0x17);
+ uint32_t x129 = ((uint32_t)x127 & 0x7fffff);
+ uint64_t x130 = (x66 + (0xbb * x128));
+ uint32_t x131 = (uint32_t) (x130 >> 0x18);
+ uint32_t x132 = ((uint32_t)x130 & 0xffffff);
+ uint32_t x133 = (x131 + x69);
+ uint32_t x134 = (x133 >> 0x17);
+ uint32_t x135 = (x133 & 0x7fffff);
+ return (Return x129, Return x126, Return x123, Return x120, Return x117, Return x114, Return x111, Return x108, Return x105, Return x102, Return x99, Return x96, Return x93, Return x90, Return x87, Return x84, Return x81, Return x78, Return x75, (x134 + x72), Return x135, Return x132))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e511m187_22limbs/fesub.c b/src/Specific/solinas32_2e511m187_22limbs/fesub.c
new file mode 100644
index 000000000..205cbc01b
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/fesub.c
@@ -0,0 +1,69 @@
+static void fesub(uint32_t out[22], const uint32_t in1[22], const uint32_t in2[22]) {
+ { const uint32_t x44 = in1[21];
+ { const uint32_t x45 = in1[20];
+ { const uint32_t x43 = in1[19];
+ { const uint32_t x41 = in1[18];
+ { const uint32_t x39 = in1[17];
+ { const uint32_t x37 = in1[16];
+ { const uint32_t x35 = in1[15];
+ { const uint32_t x33 = in1[14];
+ { const uint32_t x31 = in1[13];
+ { const uint32_t x29 = in1[12];
+ { const uint32_t x27 = in1[11];
+ { const uint32_t x25 = in1[10];
+ { const uint32_t x23 = in1[9];
+ { const uint32_t x21 = in1[8];
+ { const uint32_t x19 = in1[7];
+ { const uint32_t x17 = in1[6];
+ { const uint32_t x15 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x86 = in2[21];
+ { const uint32_t x87 = in2[20];
+ { const uint32_t x85 = in2[19];
+ { const uint32_t x83 = in2[18];
+ { const uint32_t x81 = in2[17];
+ { const uint32_t x79 = in2[16];
+ { const uint32_t x77 = in2[15];
+ { const uint32_t x75 = in2[14];
+ { const uint32_t x73 = in2[13];
+ { const uint32_t x71 = in2[12];
+ { const uint32_t x69 = in2[11];
+ { const uint32_t x67 = in2[10];
+ { const uint32_t x65 = in2[9];
+ { const uint32_t x63 = in2[8];
+ { const uint32_t x61 = in2[7];
+ { const uint32_t x59 = in2[6];
+ { const uint32_t x57 = in2[5];
+ { const uint32_t x55 = in2[4];
+ { const uint32_t x53 = in2[3];
+ { const uint32_t x51 = in2[2];
+ { const uint32_t x49 = in2[1];
+ { const uint32_t x47 = in2[0];
+ out[0] = ((0x1fffe8a + x5) - x47);
+ out[1] = ((0xfffffe + x7) - x49);
+ out[2] = ((0xfffffe + x9) - x51);
+ out[3] = ((0xfffffe + x11) - x53);
+ out[4] = ((0x1fffffe + x13) - x55);
+ out[5] = ((0xfffffe + x15) - x57);
+ out[6] = ((0xfffffe + x17) - x59);
+ out[7] = ((0xfffffe + x19) - x61);
+ out[8] = ((0x1fffffe + x21) - x63);
+ out[9] = ((0xfffffe + x23) - x65);
+ out[10] = ((0xfffffe + x25) - x67);
+ out[11] = ((0xfffffe + x27) - x69);
+ out[12] = ((0xfffffe + x29) - x71);
+ out[13] = ((0x1fffffe + x31) - x73);
+ out[14] = ((0xfffffe + x33) - x75);
+ out[15] = ((0xfffffe + x35) - x77);
+ out[16] = ((0xfffffe + x37) - x79);
+ out[17] = ((0x1fffffe + x39) - x81);
+ out[18] = ((0xfffffe + x41) - x83);
+ out[19] = ((0xfffffe + x43) - x85);
+ out[20] = ((0xfffffe + x45) - x87);
+ out[21] = ((0xfffffe + x44) - x86);
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e511m187_22limbs/fesubDisplay.log b/src/Specific/solinas32_2e511m187_22limbs/fesubDisplay.log
new file mode 100644
index 000000000..054f49d3d
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x44, x45, x43, x41, x39, x37, x35, x33, x31, x29, x27, x25, x23, x21, x19, x17, x15, x13, x11, x9, x7, x5, (x86, x87, x85, x83, x81, x79, x77, x75, x73, x71, x69, x67, x65, x63, x61, x59, x57, x55, x53, x51, x49, x47))%core,
+ (((0xfffffe + x44) - x86), ((0xfffffe + x45) - x87), ((0xfffffe + x43) - x85), ((0xfffffe + x41) - x83), ((0x1fffffe + x39) - x81), ((0xfffffe + x37) - x79), ((0xfffffe + x35) - x77), ((0xfffffe + x33) - x75), ((0x1fffffe + x31) - x73), ((0xfffffe + x29) - x71), ((0xfffffe + x27) - x69), ((0xfffffe + x25) - x67), ((0xfffffe + x23) - x65), ((0x1fffffe + x21) - x63), ((0xfffffe + x19) - x61), ((0xfffffe + x17) - x59), ((0xfffffe + x15) - x57), ((0x1fffffe + x13) - x55), ((0xfffffe + x11) - x53), ((0xfffffe + x9) - x51), ((0xfffffe + x7) - x49), ((0x1fffe8a + x5) - x47)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e511m187_22limbs/freeze.c b/src/Specific/solinas32_2e511m187_22limbs/freeze.c
new file mode 100644
index 000000000..a256a11e3
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/freeze.c
@@ -0,0 +1,114 @@
+static void freeze(uint32_t out[22], const uint32_t in1[22]) {
+ { const uint32_t x41 = 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 x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffff45);
+ { uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x4, 0x7fffff);
+ { uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x6, 0x7fffff);
+ { uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x8, 0x7fffff);
+ { uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x10, 0xffffff);
+ { uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x12, 0x7fffff);
+ { uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x14, 0x7fffff);
+ { uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x16, 0x7fffff);
+ { uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x18, 0xffffff);
+ { uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x20, 0x7fffff);
+ { uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x22, 0x7fffff);
+ { uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x24, 0x7fffff);
+ { uint32_t x80, uint8_t x81 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x26, 0x7fffff);
+ { uint32_t x83, uint8_t x84 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x28, 0xffffff);
+ { uint32_t x86, uint8_t x87 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x30, 0x7fffff);
+ { uint32_t x89, uint8_t x90 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x32, 0x7fffff);
+ { uint32_t x92, uint8_t x93 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x34, 0x7fffff);
+ { uint32_t x95, uint8_t x96 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x36, 0xffffff);
+ { uint32_t x98, uint8_t x99 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x38, 0x7fffff);
+ { uint32_t x101, uint8_t x102 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x40, 0x7fffff);
+ { uint32_t x104, uint8_t x105 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x42, 0x7fffff);
+ { uint32_t x107, uint8_t x108 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x41, 0x7fffff);
+ { uint32_t x109 = cmovznz32(x108, 0x0, 0xffffffff);
+ { uint32_t x110 = (x109 & 0xffff45);
+ { uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x44, Return x110);
+ { uint32_t x114 = (x109 & 0x7fffff);
+ { uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x47, Return x114);
+ { uint32_t x118 = (x109 & 0x7fffff);
+ { uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x50, Return x118);
+ { uint32_t x122 = (x109 & 0x7fffff);
+ { uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x53, Return x122);
+ { uint32_t x126 = (x109 & 0xffffff);
+ { uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x56, Return x126);
+ { uint32_t x130 = (x109 & 0x7fffff);
+ { uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x59, Return x130);
+ { uint32_t x134 = (x109 & 0x7fffff);
+ { uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x62, Return x134);
+ { uint32_t x138 = (x109 & 0x7fffff);
+ { uint32_t x140, uint8_t x141 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x65, Return x138);
+ { uint32_t x142 = (x109 & 0xffffff);
+ { uint32_t x144, uint8_t x145 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x141, Return x68, Return x142);
+ { uint32_t x146 = (x109 & 0x7fffff);
+ { uint32_t x148, uint8_t x149 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x145, Return x71, Return x146);
+ { uint32_t x150 = (x109 & 0x7fffff);
+ { uint32_t x152, uint8_t x153 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x149, Return x74, Return x150);
+ { uint32_t x154 = (x109 & 0x7fffff);
+ { uint32_t x156, uint8_t x157 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x153, Return x77, Return x154);
+ { uint32_t x158 = (x109 & 0x7fffff);
+ { uint32_t x160, uint8_t x161 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x157, Return x80, Return x158);
+ { uint32_t x162 = (x109 & 0xffffff);
+ { uint32_t x164, uint8_t x165 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x161, Return x83, Return x162);
+ { uint32_t x166 = (x109 & 0x7fffff);
+ { uint32_t x168, uint8_t x169 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x165, Return x86, Return x166);
+ { uint32_t x170 = (x109 & 0x7fffff);
+ { uint32_t x172, uint8_t x173 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x169, Return x89, Return x170);
+ { uint32_t x174 = (x109 & 0x7fffff);
+ { uint32_t x176, uint8_t x177 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x173, Return x92, Return x174);
+ { uint32_t x178 = (x109 & 0xffffff);
+ { uint32_t x180, uint8_t x181 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x177, Return x95, Return x178);
+ { uint32_t x182 = (x109 & 0x7fffff);
+ { uint32_t x184, uint8_t x185 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x181, Return x98, Return x182);
+ { uint32_t x186 = (x109 & 0x7fffff);
+ { uint32_t x188, uint8_t x189 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x185, Return x101, Return x186);
+ { uint32_t x190 = (x109 & 0x7fffff);
+ { uint32_t x192, uint8_t x193 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x189, Return x104, Return x190);
+ { uint32_t x194 = (x109 & 0x7fffff);
+ { uint32_t x196, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x193, Return x107, Return x194);
+ out[0] = x112;
+ out[1] = x116;
+ out[2] = x120;
+ out[3] = x124;
+ out[4] = x128;
+ out[5] = x132;
+ out[6] = x136;
+ out[7] = x140;
+ out[8] = x144;
+ out[9] = x148;
+ out[10] = x152;
+ out[11] = x156;
+ out[12] = x160;
+ out[13] = x164;
+ out[14] = x168;
+ out[15] = x172;
+ out[16] = x176;
+ out[17] = x180;
+ out[18] = x184;
+ out[19] = x188;
+ out[20] = x192;
+ out[21] = x196;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e511m187_22limbs/freezeDisplay.log b/src/Specific/solinas32_2e511m187_22limbs/freezeDisplay.log
new file mode 100644
index 000000000..c068076ae
--- /dev/null
+++ b/src/Specific/solinas32_2e511m187_22limbs/freezeDisplay.log
@@ -0,0 +1,74 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x41, x42, x40, x38, x36, x34, x32, x30, x28, x26, x24, x22, x20, x18, x16, x14, x12, x10, x8, x6, x4, x2)%core,
+ uint32_t x44, uint8_t x45 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffff45);
+ uint32_t x47, uint8_t x48 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x4, 0x7fffff);
+ uint32_t x50, uint8_t x51 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x48, Return x6, 0x7fffff);
+ uint32_t x53, uint8_t x54 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x51, Return x8, 0x7fffff);
+ uint32_t x56, uint8_t x57 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x54, Return x10, 0xffffff);
+ uint32_t x59, uint8_t x60 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x57, Return x12, 0x7fffff);
+ uint32_t x62, uint8_t x63 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x60, Return x14, 0x7fffff);
+ uint32_t x65, uint8_t x66 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x63, Return x16, 0x7fffff);
+ uint32_t x68, uint8_t x69 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x66, Return x18, 0xffffff);
+ uint32_t x71, uint8_t x72 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x69, Return x20, 0x7fffff);
+ uint32_t x74, uint8_t x75 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x72, Return x22, 0x7fffff);
+ uint32_t x77, uint8_t x78 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x75, Return x24, 0x7fffff);
+ uint32_t x80, uint8_t x81 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x78, Return x26, 0x7fffff);
+ uint32_t x83, uint8_t x84 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x81, Return x28, 0xffffff);
+ uint32_t x86, uint8_t x87 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x84, Return x30, 0x7fffff);
+ uint32_t x89, uint8_t x90 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x87, Return x32, 0x7fffff);
+ uint32_t x92, uint8_t x93 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x90, Return x34, 0x7fffff);
+ uint32_t x95, uint8_t x96 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x93, Return x36, 0xffffff);
+ uint32_t x98, uint8_t x99 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x96, Return x38, 0x7fffff);
+ uint32_t x101, uint8_t x102 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x99, Return x40, 0x7fffff);
+ uint32_t x104, uint8_t x105 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x102, Return x42, 0x7fffff);
+ uint32_t x107, uint8_t x108 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x105, Return x41, 0x7fffff);
+ uint32_t x109 = cmovznz32(x108, 0x0, 0xffffffff);
+ uint32_t x110 = (x109 & 0xffff45);
+ uint32_t x112, uint8_t x113 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x44, Return x110);
+ uint32_t x114 = (x109 & 0x7fffff);
+ uint32_t x116, uint8_t x117 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x113, Return x47, Return x114);
+ uint32_t x118 = (x109 & 0x7fffff);
+ uint32_t x120, uint8_t x121 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x117, Return x50, Return x118);
+ uint32_t x122 = (x109 & 0x7fffff);
+ uint32_t x124, uint8_t x125 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x121, Return x53, Return x122);
+ uint32_t x126 = (x109 & 0xffffff);
+ uint32_t x128, uint8_t x129 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x125, Return x56, Return x126);
+ uint32_t x130 = (x109 & 0x7fffff);
+ uint32_t x132, uint8_t x133 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x129, Return x59, Return x130);
+ uint32_t x134 = (x109 & 0x7fffff);
+ uint32_t x136, uint8_t x137 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x133, Return x62, Return x134);
+ uint32_t x138 = (x109 & 0x7fffff);
+ uint32_t x140, uint8_t x141 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x137, Return x65, Return x138);
+ uint32_t x142 = (x109 & 0xffffff);
+ uint32_t x144, uint8_t x145 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x141, Return x68, Return x142);
+ uint32_t x146 = (x109 & 0x7fffff);
+ uint32_t x148, uint8_t x149 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x145, Return x71, Return x146);
+ uint32_t x150 = (x109 & 0x7fffff);
+ uint32_t x152, uint8_t x153 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x149, Return x74, Return x150);
+ uint32_t x154 = (x109 & 0x7fffff);
+ uint32_t x156, uint8_t x157 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x153, Return x77, Return x154);
+ uint32_t x158 = (x109 & 0x7fffff);
+ uint32_t x160, uint8_t x161 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x157, Return x80, Return x158);
+ uint32_t x162 = (x109 & 0xffffff);
+ uint32_t x164, uint8_t x165 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x161, Return x83, Return x162);
+ uint32_t x166 = (x109 & 0x7fffff);
+ uint32_t x168, uint8_t x169 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x165, Return x86, Return x166);
+ uint32_t x170 = (x109 & 0x7fffff);
+ uint32_t x172, uint8_t x173 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x169, Return x89, Return x170);
+ uint32_t x174 = (x109 & 0x7fffff);
+ uint32_t x176, uint8_t x177 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x173, Return x92, Return x174);
+ uint32_t x178 = (x109 & 0xffffff);
+ uint32_t x180, uint8_t x181 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x177, Return x95, Return x178);
+ uint32_t x182 = (x109 & 0x7fffff);
+ uint32_t x184, uint8_t x185 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x181, Return x98, Return x182);
+ uint32_t x186 = (x109 & 0x7fffff);
+ uint32_t x188, uint8_t x189 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x185, Return x101, Return x186);
+ uint32_t x190 = (x109 & 0x7fffff);
+ uint32_t x192, uint8_t x193 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x189, Return x104, Return x190);
+ uint32_t x194 = (x109 & 0x7fffff);
+ uint32_t x196, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x193, Return x107, Return x194);
+ (Return x196, Return x192, Return x188, Return x184, Return x180, Return x176, Return x172, Return x168, Return x164, Return x160, Return x156, Return x152, Return x148, Return x144, Return x140, Return x136, Return x132, Return x128, Return x124, Return x120, Return x116, Return x112))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)