aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2017-11-12 21:04:21 -0500
committerGravatar Jason Gross <jgross@mit.edu>2017-11-12 21:04:21 -0500
commit87f39543ffd547772d6f31d313ae64be50fe3515 (patch)
tree6be2757afc450cd4586b30aa31045f441e019eca /src
parentc3279e03ecac28252d8b3aaed9af876bf8e8e55f (diff)
Update display logs and c files
Diffstat (limited to 'src')
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e165m25_6limbs/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/feadd.c40
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/feaddDisplay.log26
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/fenz.c15
-rw-r--r--src/Specific/montgomery32_2e166m5_6limbs/fenzDisplay.log12
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/femul.c192
-rw-r--r--src/Specific/montgomery64_2e291m19_5limbs/femulDisplay.log181
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/fesub.c2
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/freeze.c4
-rw-r--r--src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/fesub.c2
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/freeze.c4
-rw-r--r--src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/fesub.c2
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/freeze.c4
-rw-r--r--src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/fesub.c2
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/freeze.c4
-rw-r--r--src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/femul.c50
-rw-r--r--src/Specific/solinas32_2e140m27_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/femul.c50
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas32_2e141m9_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/femul.c50
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas32_2e150m3_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/femul.c50
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas32_2e150m5_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/femul.c50
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas32_2e152m17_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/femul.c50
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas32_2e158m15_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/femul.c50
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas32_2e166m5_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/fesub.c8
-rw-r--r--src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/fesub.c8
-rw-r--r--src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/fesub.c4
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/fesub.c6
-rw-r--r--src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/fesub.c6
-rw-r--r--src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/fesub.c4
-rw-r--r--src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/fesub.c4
-rw-r--r--src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/fesub.c4
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.c4
-rw-r--r--src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/fesub.c10
-rw-r--r--src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/fesub.c10
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/freeze.c33
-rw-r--r--src/Specific/solinas64_2e224m2e96p1_6limbs/freezeDisplay.log25
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/fesub.c10
-rw-r--r--src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/fesub.c2
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.log2
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/freeze.c4
-rw-r--r--src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.log4
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e243m9_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e251m9_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e255m19_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e255m765_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e256m189_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freeze.c33
-rw-r--r--src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freezeDisplay.log25
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/femul.c58
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/femulDisplay.log44
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/fesquare.c52
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/fesquareDisplay.log44
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e256m2e32m977_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e266m3_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e285m9_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e291m19_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e321m9_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/femul.c65
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/femulDisplay.log51
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/fesquare.c59
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/fesquareDisplay.log51
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e322m2e161m1_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e336m17_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e336m3_6limbs/freezeDisplay.log26
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/feadd.c21
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/feaddDisplay.log7
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/femul.c50
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/femulDisplay.log36
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/fesquare.c44
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/fesquareDisplay.log36
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/fesub.c21
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/fesubDisplay.log7
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/freeze.c34
-rw-r--r--src/Specific/solinas64_2e338m15_6limbs/freezeDisplay.log26
326 files changed, 6720 insertions, 171 deletions
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/feadd.c b/src/Specific/montgomery32_2e165m25_6limbs/feadd.c
new file mode 100644
index 000000000..e05f2ca1b
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/feadd.c
@@ -0,0 +1,40 @@
+static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ { uint32_t x25; uint8_t x26 = _addcarryx_u32(0x0, x5, x15, &x25);
+ { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
+ { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
+ { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
+ { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
+ { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
+ { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xffffffe7, &x43);
+ { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
+ { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
+ { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
+ { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
+ { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x1f, &x58);
+ { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
+ { uint32_t x63 = cmovznz32(x62, x58, x40);
+ { uint32_t x64 = cmovznz32(x62, x55, x37);
+ { uint32_t x65 = cmovznz32(x62, x52, x34);
+ { uint32_t x66 = cmovznz32(x62, x49, x31);
+ { uint32_t x67 = cmovznz32(x62, x46, x28);
+ { uint32_t x68 = cmovznz32(x62, x43, x25);
+ out[0] = x68;
+ out[1] = x67;
+ out[2] = x66;
+ out[3] = x65;
+ out[4] = x64;
+ out[5] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/feaddDisplay.log b/src/Specific/montgomery32_2e165m25_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..2d8233e99
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/feaddDisplay.log
@@ -0,0 +1,26 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint32_t x25, uint8_t x26 = addcarryx_u32(0x0, x5, x15);
+ uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
+ uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
+ uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
+ uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
+ uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
+ uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xffffffe7);
+ uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
+ uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
+ uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
+ uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
+ uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x1f);
+ uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
+ uint32_t x63 = cmovznz32(x62, x58, x40);
+ uint32_t x64 = cmovznz32(x62, x55, x37);
+ uint32_t x65 = cmovznz32(x62, x52, x34);
+ uint32_t x66 = cmovznz32(x62, x49, x31);
+ uint32_t x67 = cmovznz32(x62, x46, x28);
+ uint32_t x68 = cmovznz32(x62, x43, x25);
+ return (x63, x64, x65, x66, x67, x68))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/fenz.c b/src/Specific/montgomery32_2e165m25_6limbs/fenz.c
new file mode 100644
index 000000000..2e0454af1
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/fenz.c
@@ -0,0 +1,15 @@
+static void fenz(ReturnType uint32_t out[1], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x11 = (x10 | x9);
+ { uint32_t x12 = (x8 | x11);
+ { uint32_t x13 = (x6 | x12);
+ { uint32_t x14 = (x4 | x13);
+ { uint32_t x15 = (x2 | x14);
+ out[0] = x15;
+ }}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e165m25_6limbs/fenzDisplay.log b/src/Specific/montgomery32_2e165m25_6limbs/fenzDisplay.log
new file mode 100644
index 000000000..616138b7b
--- /dev/null
+++ b/src/Specific/montgomery32_2e165m25_6limbs/fenzDisplay.log
@@ -0,0 +1,12 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x11 = (x10 | x9);
+ uint32_t x12 = (x8 | x11);
+ uint32_t x13 = (x6 | x12);
+ uint32_t x14 = (x4 | x13);
+ uint32_t x15 = (x2 | x14);
+ return x15)
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/feadd.c b/src/Specific/montgomery32_2e166m5_6limbs/feadd.c
new file mode 100644
index 000000000..cd706f5c5
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/feadd.c
@@ -0,0 +1,40 @@
+static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ { uint32_t x25; uint8_t x26 = _addcarryx_u32(0x0, x5, x15, &x25);
+ { uint32_t x28; uint8_t x29 = _addcarryx_u32(x26, x7, x17, &x28);
+ { uint32_t x31; uint8_t x32 = _addcarryx_u32(x29, x9, x19, &x31);
+ { uint32_t x34; uint8_t x35 = _addcarryx_u32(x32, x11, x21, &x34);
+ { uint32_t x37; uint8_t x38 = _addcarryx_u32(x35, x13, x23, &x37);
+ { uint32_t x40; uint8_t x41 = _addcarryx_u32(x38, x12, x22, &x40);
+ { uint32_t x43; uint8_t x44 = _subborrow_u32(0x0, x25, 0xfffffffb, &x43);
+ { uint32_t x46; uint8_t x47 = _subborrow_u32(x44, x28, 0xffffffff, &x46);
+ { uint32_t x49; uint8_t x50 = _subborrow_u32(x47, x31, 0xffffffff, &x49);
+ { uint32_t x52; uint8_t x53 = _subborrow_u32(x50, x34, 0xffffffff, &x52);
+ { uint32_t x55; uint8_t x56 = _subborrow_u32(x53, x37, 0xffffffff, &x55);
+ { uint32_t x58; uint8_t x59 = _subborrow_u32(x56, x40, 0x3f, &x58);
+ { uint32_t _; uint8_t x62 = _subborrow_u32(x59, x41, 0x0, &_);
+ { uint32_t x63 = cmovznz32(x62, x58, x40);
+ { uint32_t x64 = cmovznz32(x62, x55, x37);
+ { uint32_t x65 = cmovznz32(x62, x52, x34);
+ { uint32_t x66 = cmovznz32(x62, x49, x31);
+ { uint32_t x67 = cmovznz32(x62, x46, x28);
+ { uint32_t x68 = cmovznz32(x62, x43, x25);
+ out[0] = x68;
+ out[1] = x67;
+ out[2] = x66;
+ out[3] = x65;
+ out[4] = x64;
+ out[5] = x63;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/feaddDisplay.log b/src/Specific/montgomery32_2e166m5_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..194e37fb2
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/feaddDisplay.log
@@ -0,0 +1,26 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint32_t x25, uint8_t x26 = addcarryx_u32(0x0, x5, x15);
+ uint32_t x28, uint8_t x29 = addcarryx_u32(x26, x7, x17);
+ uint32_t x31, uint8_t x32 = addcarryx_u32(x29, x9, x19);
+ uint32_t x34, uint8_t x35 = addcarryx_u32(x32, x11, x21);
+ uint32_t x37, uint8_t x38 = addcarryx_u32(x35, x13, x23);
+ uint32_t x40, uint8_t x41 = addcarryx_u32(x38, x12, x22);
+ uint32_t x43, uint8_t x44 = subborrow_u32(0x0, x25, 0xfffffffb);
+ uint32_t x46, uint8_t x47 = subborrow_u32(x44, x28, 0xffffffff);
+ uint32_t x49, uint8_t x50 = subborrow_u32(x47, x31, 0xffffffff);
+ uint32_t x52, uint8_t x53 = subborrow_u32(x50, x34, 0xffffffff);
+ uint32_t x55, uint8_t x56 = subborrow_u32(x53, x37, 0xffffffff);
+ uint32_t x58, uint8_t x59 = subborrow_u32(x56, x40, 0x3f);
+ uint32_t _, uint8_t x62 = subborrow_u32(x59, x41, 0x0);
+ uint32_t x63 = cmovznz32(x62, x58, x40);
+ uint32_t x64 = cmovznz32(x62, x55, x37);
+ uint32_t x65 = cmovznz32(x62, x52, x34);
+ uint32_t x66 = cmovznz32(x62, x49, x31);
+ uint32_t x67 = cmovznz32(x62, x46, x28);
+ uint32_t x68 = cmovznz32(x62, x43, x25);
+ return (x63, x64, x65, x66, x67, x68))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/fenz.c b/src/Specific/montgomery32_2e166m5_6limbs/fenz.c
new file mode 100644
index 000000000..2e0454af1
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/fenz.c
@@ -0,0 +1,15 @@
+static void fenz(ReturnType uint32_t out[1], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x11 = (x10 | x9);
+ { uint32_t x12 = (x8 | x11);
+ { uint32_t x13 = (x6 | x12);
+ { uint32_t x14 = (x4 | x13);
+ { uint32_t x15 = (x2 | x14);
+ out[0] = x15;
+ }}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery32_2e166m5_6limbs/fenzDisplay.log b/src/Specific/montgomery32_2e166m5_6limbs/fenzDisplay.log
new file mode 100644
index 000000000..616138b7b
--- /dev/null
+++ b/src/Specific/montgomery32_2e166m5_6limbs/fenzDisplay.log
@@ -0,0 +1,12 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x11 = (x10 | x9);
+ uint32_t x12 = (x8 | x11);
+ uint32_t x13 = (x6 | x12);
+ uint32_t x14 = (x4 | x13);
+ uint32_t x15 = (x2 | x14);
+ return x15)
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType uint32_t
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/femul.c b/src/Specific/montgomery64_2e291m19_5limbs/femul.c
new file mode 100644
index 000000000..13d0393aa
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/femul.c
@@ -0,0 +1,192 @@
+static void femul(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5]) {
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x18 = in2[4];
+ { const uint64_t x19 = in2[3];
+ { const uint64_t x17 = in2[2];
+ { const uint64_t x15 = in2[1];
+ { const uint64_t x13 = in2[0];
+ { uint64_t x22; uint64_t x21 = _mulx_u64(x5, x13, &x22);
+ { uint64_t x25; uint64_t x24 = _mulx_u64(x5, x15, &x25);
+ { uint64_t x28; uint64_t x27 = _mulx_u64(x5, x17, &x28);
+ { uint64_t x31; uint64_t x30 = _mulx_u64(x5, x19, &x31);
+ { uint64_t x34; uint64_t x33 = _mulx_u64(x5, x18, &x34);
+ { uint64_t x36; uint8_t x37 = _addcarryx_u64(0x0, x22, x24, &x36);
+ { uint64_t x39; uint8_t x40 = _addcarryx_u64(x37, x25, x27, &x39);
+ { uint64_t x42; uint8_t x43 = _addcarryx_u64(x40, x28, x30, &x42);
+ { uint64_t x45; uint8_t x46 = _addcarryx_u64(x43, x31, x33, &x45);
+ { uint64_t x48; uint8_t _ = _addcarryx_u64(0x0, x46, x34, &x48);
+ { uint64_t _; uint64_t x51 = _mulx_u64(x21, 0x86bca1af286bca1bL, &_);
+ { uint64_t x55; uint64_t x54 = _mulx_u64(x51, 0xffffffffffffffedL, &x55);
+ { uint64_t x58; uint64_t x57 = _mulx_u64(x51, 0xffffffffffffffffL, &x58);
+ { uint64_t x61; uint64_t x60 = _mulx_u64(x51, 0xffffffffffffffffL, &x61);
+ { uint64_t x64; uint64_t x63 = _mulx_u64(x51, 0xffffffffffffffffL, &x64);
+ { uint64_t x67; uint64_t x66 = _mulx_u64(x51, 0x7ffffffff, &x67);
+ { uint64_t x69; uint8_t x70 = _addcarryx_u64(0x0, x55, x57, &x69);
+ { uint64_t x72; uint8_t x73 = _addcarryx_u64(x70, x58, x60, &x72);
+ { uint64_t x75; uint8_t x76 = _addcarryx_u64(x73, x61, x63, &x75);
+ { uint64_t x78; uint8_t x79 = _addcarryx_u64(x76, x64, x66, &x78);
+ { uint64_t x81; uint8_t _ = _addcarryx_u64(0x0, x79, x67, &x81);
+ { uint64_t _; uint8_t x85 = _addcarryx_u64(0x0, x21, x54, &_);
+ { uint64_t x87; uint8_t x88 = _addcarryx_u64(x85, x36, x69, &x87);
+ { uint64_t x90; uint8_t x91 = _addcarryx_u64(x88, x39, x72, &x90);
+ { uint64_t x93; uint8_t x94 = _addcarryx_u64(x91, x42, x75, &x93);
+ { uint64_t x96; uint8_t x97 = _addcarryx_u64(x94, x45, x78, &x96);
+ { uint64_t x99; uint8_t x100 = _addcarryx_u64(x97, x48, x81, &x99);
+ { uint64_t x103; uint64_t x102 = _mulx_u64(x7, x13, &x103);
+ { uint64_t x106; uint64_t x105 = _mulx_u64(x7, x15, &x106);
+ { uint64_t x109; uint64_t x108 = _mulx_u64(x7, x17, &x109);
+ { uint64_t x112; uint64_t x111 = _mulx_u64(x7, x19, &x112);
+ { uint64_t x115; uint64_t x114 = _mulx_u64(x7, x18, &x115);
+ { uint64_t x117; uint8_t x118 = _addcarryx_u64(0x0, x103, x105, &x117);
+ { uint64_t x120; uint8_t x121 = _addcarryx_u64(x118, x106, x108, &x120);
+ { uint64_t x123; uint8_t x124 = _addcarryx_u64(x121, x109, x111, &x123);
+ { uint64_t x126; uint8_t x127 = _addcarryx_u64(x124, x112, x114, &x126);
+ { uint64_t x129; uint8_t _ = _addcarryx_u64(0x0, x127, x115, &x129);
+ { uint64_t x132; uint8_t x133 = _addcarryx_u64(0x0, x87, x102, &x132);
+ { uint64_t x135; uint8_t x136 = _addcarryx_u64(x133, x90, x117, &x135);
+ { uint64_t x138; uint8_t x139 = _addcarryx_u64(x136, x93, x120, &x138);
+ { uint64_t x141; uint8_t x142 = _addcarryx_u64(x139, x96, x123, &x141);
+ { uint64_t x144; uint8_t x145 = _addcarryx_u64(x142, x99, x126, &x144);
+ { uint64_t x147; uint8_t x148 = _addcarryx_u64(x145, x100, x129, &x147);
+ { uint64_t _; uint64_t x150 = _mulx_u64(x132, 0x86bca1af286bca1bL, &_);
+ { uint64_t x154; uint64_t x153 = _mulx_u64(x150, 0xffffffffffffffedL, &x154);
+ { uint64_t x157; uint64_t x156 = _mulx_u64(x150, 0xffffffffffffffffL, &x157);
+ { uint64_t x160; uint64_t x159 = _mulx_u64(x150, 0xffffffffffffffffL, &x160);
+ { uint64_t x163; uint64_t x162 = _mulx_u64(x150, 0xffffffffffffffffL, &x163);
+ { uint64_t x166; uint64_t x165 = _mulx_u64(x150, 0x7ffffffff, &x166);
+ { uint64_t x168; uint8_t x169 = _addcarryx_u64(0x0, x154, x156, &x168);
+ { uint64_t x171; uint8_t x172 = _addcarryx_u64(x169, x157, x159, &x171);
+ { uint64_t x174; uint8_t x175 = _addcarryx_u64(x172, x160, x162, &x174);
+ { uint64_t x177; uint8_t x178 = _addcarryx_u64(x175, x163, x165, &x177);
+ { uint64_t x180; uint8_t _ = _addcarryx_u64(0x0, x178, x166, &x180);
+ { uint64_t _; uint8_t x184 = _addcarryx_u64(0x0, x132, x153, &_);
+ { uint64_t x186; uint8_t x187 = _addcarryx_u64(x184, x135, x168, &x186);
+ { uint64_t x189; uint8_t x190 = _addcarryx_u64(x187, x138, x171, &x189);
+ { uint64_t x192; uint8_t x193 = _addcarryx_u64(x190, x141, x174, &x192);
+ { uint64_t x195; uint8_t x196 = _addcarryx_u64(x193, x144, x177, &x195);
+ { uint64_t x198; uint8_t x199 = _addcarryx_u64(x196, x147, x180, &x198);
+ { uint8_t x200 = (x199 + x148);
+ { uint64_t x203; uint64_t x202 = _mulx_u64(x9, x13, &x203);
+ { uint64_t x206; uint64_t x205 = _mulx_u64(x9, x15, &x206);
+ { uint64_t x209; uint64_t x208 = _mulx_u64(x9, x17, &x209);
+ { uint64_t x212; uint64_t x211 = _mulx_u64(x9, x19, &x212);
+ { uint64_t x215; uint64_t x214 = _mulx_u64(x9, x18, &x215);
+ { uint64_t x217; uint8_t x218 = _addcarryx_u64(0x0, x203, x205, &x217);
+ { uint64_t x220; uint8_t x221 = _addcarryx_u64(x218, x206, x208, &x220);
+ { uint64_t x223; uint8_t x224 = _addcarryx_u64(x221, x209, x211, &x223);
+ { uint64_t x226; uint8_t x227 = _addcarryx_u64(x224, x212, x214, &x226);
+ { uint64_t x229; uint8_t _ = _addcarryx_u64(0x0, x227, x215, &x229);
+ { uint64_t x232; uint8_t x233 = _addcarryx_u64(0x0, x186, x202, &x232);
+ { uint64_t x235; uint8_t x236 = _addcarryx_u64(x233, x189, x217, &x235);
+ { uint64_t x238; uint8_t x239 = _addcarryx_u64(x236, x192, x220, &x238);
+ { uint64_t x241; uint8_t x242 = _addcarryx_u64(x239, x195, x223, &x241);
+ { uint64_t x244; uint8_t x245 = _addcarryx_u64(x242, x198, x226, &x244);
+ { uint64_t x247; uint8_t x248 = _addcarryx_u64(x245, x200, x229, &x247);
+ { uint64_t _; uint64_t x250 = _mulx_u64(x232, 0x86bca1af286bca1bL, &_);
+ { uint64_t x254; uint64_t x253 = _mulx_u64(x250, 0xffffffffffffffedL, &x254);
+ { uint64_t x257; uint64_t x256 = _mulx_u64(x250, 0xffffffffffffffffL, &x257);
+ { uint64_t x260; uint64_t x259 = _mulx_u64(x250, 0xffffffffffffffffL, &x260);
+ { uint64_t x263; uint64_t x262 = _mulx_u64(x250, 0xffffffffffffffffL, &x263);
+ { uint64_t x266; uint64_t x265 = _mulx_u64(x250, 0x7ffffffff, &x266);
+ { uint64_t x268; uint8_t x269 = _addcarryx_u64(0x0, x254, x256, &x268);
+ { uint64_t x271; uint8_t x272 = _addcarryx_u64(x269, x257, x259, &x271);
+ { uint64_t x274; uint8_t x275 = _addcarryx_u64(x272, x260, x262, &x274);
+ { uint64_t x277; uint8_t x278 = _addcarryx_u64(x275, x263, x265, &x277);
+ { uint64_t x280; uint8_t _ = _addcarryx_u64(0x0, x278, x266, &x280);
+ { uint64_t _; uint8_t x284 = _addcarryx_u64(0x0, x232, x253, &_);
+ { uint64_t x286; uint8_t x287 = _addcarryx_u64(x284, x235, x268, &x286);
+ { uint64_t x289; uint8_t x290 = _addcarryx_u64(x287, x238, x271, &x289);
+ { uint64_t x292; uint8_t x293 = _addcarryx_u64(x290, x241, x274, &x292);
+ { uint64_t x295; uint8_t x296 = _addcarryx_u64(x293, x244, x277, &x295);
+ { uint64_t x298; uint8_t x299 = _addcarryx_u64(x296, x247, x280, &x298);
+ { uint8_t x300 = (x299 + x248);
+ { uint64_t x303; uint64_t x302 = _mulx_u64(x11, x13, &x303);
+ { uint64_t x306; uint64_t x305 = _mulx_u64(x11, x15, &x306);
+ { uint64_t x309; uint64_t x308 = _mulx_u64(x11, x17, &x309);
+ { uint64_t x312; uint64_t x311 = _mulx_u64(x11, x19, &x312);
+ { uint64_t x315; uint64_t x314 = _mulx_u64(x11, x18, &x315);
+ { uint64_t x317; uint8_t x318 = _addcarryx_u64(0x0, x303, x305, &x317);
+ { uint64_t x320; uint8_t x321 = _addcarryx_u64(x318, x306, x308, &x320);
+ { uint64_t x323; uint8_t x324 = _addcarryx_u64(x321, x309, x311, &x323);
+ { uint64_t x326; uint8_t x327 = _addcarryx_u64(x324, x312, x314, &x326);
+ { uint64_t x329; uint8_t _ = _addcarryx_u64(0x0, x327, x315, &x329);
+ { uint64_t x332; uint8_t x333 = _addcarryx_u64(0x0, x286, x302, &x332);
+ { uint64_t x335; uint8_t x336 = _addcarryx_u64(x333, x289, x317, &x335);
+ { uint64_t x338; uint8_t x339 = _addcarryx_u64(x336, x292, x320, &x338);
+ { uint64_t x341; uint8_t x342 = _addcarryx_u64(x339, x295, x323, &x341);
+ { uint64_t x344; uint8_t x345 = _addcarryx_u64(x342, x298, x326, &x344);
+ { uint64_t x347; uint8_t x348 = _addcarryx_u64(x345, x300, x329, &x347);
+ { uint64_t _; uint64_t x350 = _mulx_u64(x332, 0x86bca1af286bca1bL, &_);
+ { uint64_t x354; uint64_t x353 = _mulx_u64(x350, 0xffffffffffffffedL, &x354);
+ { uint64_t x357; uint64_t x356 = _mulx_u64(x350, 0xffffffffffffffffL, &x357);
+ { uint64_t x360; uint64_t x359 = _mulx_u64(x350, 0xffffffffffffffffL, &x360);
+ { uint64_t x363; uint64_t x362 = _mulx_u64(x350, 0xffffffffffffffffL, &x363);
+ { uint64_t x366; uint64_t x365 = _mulx_u64(x350, 0x7ffffffff, &x366);
+ { uint64_t x368; uint8_t x369 = _addcarryx_u64(0x0, x354, x356, &x368);
+ { uint64_t x371; uint8_t x372 = _addcarryx_u64(x369, x357, x359, &x371);
+ { uint64_t x374; uint8_t x375 = _addcarryx_u64(x372, x360, x362, &x374);
+ { uint64_t x377; uint8_t x378 = _addcarryx_u64(x375, x363, x365, &x377);
+ { uint64_t x380; uint8_t _ = _addcarryx_u64(0x0, x378, x366, &x380);
+ { uint64_t _; uint8_t x384 = _addcarryx_u64(0x0, x332, x353, &_);
+ { uint64_t x386; uint8_t x387 = _addcarryx_u64(x384, x335, x368, &x386);
+ { uint64_t x389; uint8_t x390 = _addcarryx_u64(x387, x338, x371, &x389);
+ { uint64_t x392; uint8_t x393 = _addcarryx_u64(x390, x341, x374, &x392);
+ { uint64_t x395; uint8_t x396 = _addcarryx_u64(x393, x344, x377, &x395);
+ { uint64_t x398; uint8_t x399 = _addcarryx_u64(x396, x347, x380, &x398);
+ { uint8_t x400 = (x399 + x348);
+ { uint64_t x403; uint64_t x402 = _mulx_u64(x10, x13, &x403);
+ { uint64_t x406; uint64_t x405 = _mulx_u64(x10, x15, &x406);
+ { uint64_t x409; uint64_t x408 = _mulx_u64(x10, x17, &x409);
+ { uint64_t x412; uint64_t x411 = _mulx_u64(x10, x19, &x412);
+ { uint64_t x415; uint64_t x414 = _mulx_u64(x10, x18, &x415);
+ { uint64_t x417; uint8_t x418 = _addcarryx_u64(0x0, x403, x405, &x417);
+ { uint64_t x420; uint8_t x421 = _addcarryx_u64(x418, x406, x408, &x420);
+ { uint64_t x423; uint8_t x424 = _addcarryx_u64(x421, x409, x411, &x423);
+ { uint64_t x426; uint8_t x427 = _addcarryx_u64(x424, x412, x414, &x426);
+ { uint64_t x429; uint8_t _ = _addcarryx_u64(0x0, x427, x415, &x429);
+ { uint64_t x432; uint8_t x433 = _addcarryx_u64(0x0, x386, x402, &x432);
+ { uint64_t x435; uint8_t x436 = _addcarryx_u64(x433, x389, x417, &x435);
+ { uint64_t x438; uint8_t x439 = _addcarryx_u64(x436, x392, x420, &x438);
+ { uint64_t x441; uint8_t x442 = _addcarryx_u64(x439, x395, x423, &x441);
+ { uint64_t x444; uint8_t x445 = _addcarryx_u64(x442, x398, x426, &x444);
+ { uint64_t x447; uint8_t x448 = _addcarryx_u64(x445, x400, x429, &x447);
+ { uint64_t _; uint64_t x450 = _mulx_u64(x432, 0x86bca1af286bca1bL, &_);
+ { uint64_t x454; uint64_t x453 = _mulx_u64(x450, 0xffffffffffffffedL, &x454);
+ { uint64_t x457; uint64_t x456 = _mulx_u64(x450, 0xffffffffffffffffL, &x457);
+ { uint64_t x460; uint64_t x459 = _mulx_u64(x450, 0xffffffffffffffffL, &x460);
+ { uint64_t x463; uint64_t x462 = _mulx_u64(x450, 0xffffffffffffffffL, &x463);
+ { uint64_t x466; uint64_t x465 = _mulx_u64(x450, 0x7ffffffff, &x466);
+ { uint64_t x468; uint8_t x469 = _addcarryx_u64(0x0, x454, x456, &x468);
+ { uint64_t x471; uint8_t x472 = _addcarryx_u64(x469, x457, x459, &x471);
+ { uint64_t x474; uint8_t x475 = _addcarryx_u64(x472, x460, x462, &x474);
+ { uint64_t x477; uint8_t x478 = _addcarryx_u64(x475, x463, x465, &x477);
+ { uint64_t x480; uint8_t _ = _addcarryx_u64(0x0, x478, x466, &x480);
+ { uint64_t _; uint8_t x484 = _addcarryx_u64(0x0, x432, x453, &_);
+ { uint64_t x486; uint8_t x487 = _addcarryx_u64(x484, x435, x468, &x486);
+ { uint64_t x489; uint8_t x490 = _addcarryx_u64(x487, x438, x471, &x489);
+ { uint64_t x492; uint8_t x493 = _addcarryx_u64(x490, x441, x474, &x492);
+ { uint64_t x495; uint8_t x496 = _addcarryx_u64(x493, x444, x477, &x495);
+ { uint64_t x498; uint8_t x499 = _addcarryx_u64(x496, x447, x480, &x498);
+ { uint8_t x500 = (x499 + x448);
+ { uint64_t x502; uint8_t x503 = _subborrow_u64(0x0, x486, 0xffffffffffffffedL, &x502);
+ { uint64_t x505; uint8_t x506 = _subborrow_u64(x503, x489, 0xffffffffffffffffL, &x505);
+ { uint64_t x508; uint8_t x509 = _subborrow_u64(x506, x492, 0xffffffffffffffffL, &x508);
+ { uint64_t x511; uint8_t x512 = _subborrow_u64(x509, x495, 0xffffffffffffffffL, &x511);
+ { uint64_t x514; uint8_t x515 = _subborrow_u64(x512, x498, 0x7ffffffff, &x514);
+ { uint64_t _; uint8_t x518 = _subborrow_u64(x515, x500, 0x0, &_);
+ { uint64_t x519 = cmovznz64(x518, x514, x498);
+ { uint64_t x520 = cmovznz64(x518, x511, x495);
+ { uint64_t x521 = cmovznz64(x518, x508, x492);
+ { uint64_t x522 = cmovznz64(x518, x505, x489);
+ { uint64_t x523 = cmovznz64(x518, x502, x486);
+ out[0] = x523;
+ out[1] = x522;
+ out[2] = x521;
+ out[3] = x520;
+ out[4] = x519;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/montgomery64_2e291m19_5limbs/femulDisplay.log b/src/Specific/montgomery64_2e291m19_5limbs/femulDisplay.log
new file mode 100644
index 000000000..5cf09abe3
--- /dev/null
+++ b/src/Specific/montgomery64_2e291m19_5limbs/femulDisplay.log
@@ -0,0 +1,181 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
+ uint64_t x21, uint64_t x22 = mulx_u64(x5, x13);
+ uint64_t x24, uint64_t x25 = mulx_u64(x5, x15);
+ uint64_t x27, uint64_t x28 = mulx_u64(x5, x17);
+ uint64_t x30, uint64_t x31 = mulx_u64(x5, x19);
+ uint64_t x33, uint64_t x34 = mulx_u64(x5, x18);
+ uint64_t x36, uint8_t x37 = addcarryx_u64(0x0, x22, x24);
+ uint64_t x39, uint8_t x40 = addcarryx_u64(x37, x25, x27);
+ uint64_t x42, uint8_t x43 = addcarryx_u64(x40, x28, x30);
+ uint64_t x45, uint8_t x46 = addcarryx_u64(x43, x31, x33);
+ uint64_t x48, uint8_t _ = addcarryx_u64(0x0, x46, x34);
+ uint64_t x51, uint64_t _ = mulx_u64(x21, 0x86bca1af286bca1bL);
+ uint64_t x54, uint64_t x55 = mulx_u64(x51, 0xffffffffffffffedL);
+ uint64_t x57, uint64_t x58 = mulx_u64(x51, 0xffffffffffffffffL);
+ uint64_t x60, uint64_t x61 = mulx_u64(x51, 0xffffffffffffffffL);
+ uint64_t x63, uint64_t x64 = mulx_u64(x51, 0xffffffffffffffffL);
+ uint64_t x66, uint64_t x67 = mulx_u64(x51, 0x7ffffffff);
+ uint64_t x69, uint8_t x70 = addcarryx_u64(0x0, x55, x57);
+ uint64_t x72, uint8_t x73 = addcarryx_u64(x70, x58, x60);
+ uint64_t x75, uint8_t x76 = addcarryx_u64(x73, x61, x63);
+ uint64_t x78, uint8_t x79 = addcarryx_u64(x76, x64, x66);
+ uint64_t x81, uint8_t _ = addcarryx_u64(0x0, x79, x67);
+ uint64_t _, uint8_t x85 = addcarryx_u64(0x0, x21, x54);
+ uint64_t x87, uint8_t x88 = addcarryx_u64(x85, x36, x69);
+ uint64_t x90, uint8_t x91 = addcarryx_u64(x88, x39, x72);
+ uint64_t x93, uint8_t x94 = addcarryx_u64(x91, x42, x75);
+ uint64_t x96, uint8_t x97 = addcarryx_u64(x94, x45, x78);
+ uint64_t x99, uint8_t x100 = addcarryx_u64(x97, x48, x81);
+ uint64_t x102, uint64_t x103 = mulx_u64(x7, x13);
+ uint64_t x105, uint64_t x106 = mulx_u64(x7, x15);
+ uint64_t x108, uint64_t x109 = mulx_u64(x7, x17);
+ uint64_t x111, uint64_t x112 = mulx_u64(x7, x19);
+ uint64_t x114, uint64_t x115 = mulx_u64(x7, x18);
+ uint64_t x117, uint8_t x118 = addcarryx_u64(0x0, x103, x105);
+ uint64_t x120, uint8_t x121 = addcarryx_u64(x118, x106, x108);
+ uint64_t x123, uint8_t x124 = addcarryx_u64(x121, x109, x111);
+ uint64_t x126, uint8_t x127 = addcarryx_u64(x124, x112, x114);
+ uint64_t x129, uint8_t _ = addcarryx_u64(0x0, x127, x115);
+ uint64_t x132, uint8_t x133 = addcarryx_u64(0x0, x87, x102);
+ uint64_t x135, uint8_t x136 = addcarryx_u64(x133, x90, x117);
+ uint64_t x138, uint8_t x139 = addcarryx_u64(x136, x93, x120);
+ uint64_t x141, uint8_t x142 = addcarryx_u64(x139, x96, x123);
+ uint64_t x144, uint8_t x145 = addcarryx_u64(x142, x99, x126);
+ uint64_t x147, uint8_t x148 = addcarryx_u64(x145, x100, x129);
+ uint64_t x150, uint64_t _ = mulx_u64(x132, 0x86bca1af286bca1bL);
+ uint64_t x153, uint64_t x154 = mulx_u64(x150, 0xffffffffffffffedL);
+ uint64_t x156, uint64_t x157 = mulx_u64(x150, 0xffffffffffffffffL);
+ uint64_t x159, uint64_t x160 = mulx_u64(x150, 0xffffffffffffffffL);
+ uint64_t x162, uint64_t x163 = mulx_u64(x150, 0xffffffffffffffffL);
+ uint64_t x165, uint64_t x166 = mulx_u64(x150, 0x7ffffffff);
+ uint64_t x168, uint8_t x169 = addcarryx_u64(0x0, x154, x156);
+ uint64_t x171, uint8_t x172 = addcarryx_u64(x169, x157, x159);
+ uint64_t x174, uint8_t x175 = addcarryx_u64(x172, x160, x162);
+ uint64_t x177, uint8_t x178 = addcarryx_u64(x175, x163, x165);
+ uint64_t x180, uint8_t _ = addcarryx_u64(0x0, x178, x166);
+ uint64_t _, uint8_t x184 = addcarryx_u64(0x0, x132, x153);
+ uint64_t x186, uint8_t x187 = addcarryx_u64(x184, x135, x168);
+ uint64_t x189, uint8_t x190 = addcarryx_u64(x187, x138, x171);
+ uint64_t x192, uint8_t x193 = addcarryx_u64(x190, x141, x174);
+ uint64_t x195, uint8_t x196 = addcarryx_u64(x193, x144, x177);
+ uint64_t x198, uint8_t x199 = addcarryx_u64(x196, x147, x180);
+ uint8_t x200 = (x199 + x148);
+ uint64_t x202, uint64_t x203 = mulx_u64(x9, x13);
+ uint64_t x205, uint64_t x206 = mulx_u64(x9, x15);
+ uint64_t x208, uint64_t x209 = mulx_u64(x9, x17);
+ uint64_t x211, uint64_t x212 = mulx_u64(x9, x19);
+ uint64_t x214, uint64_t x215 = mulx_u64(x9, x18);
+ uint64_t x217, uint8_t x218 = addcarryx_u64(0x0, x203, x205);
+ uint64_t x220, uint8_t x221 = addcarryx_u64(x218, x206, x208);
+ uint64_t x223, uint8_t x224 = addcarryx_u64(x221, x209, x211);
+ uint64_t x226, uint8_t x227 = addcarryx_u64(x224, x212, x214);
+ uint64_t x229, uint8_t _ = addcarryx_u64(0x0, x227, x215);
+ uint64_t x232, uint8_t x233 = addcarryx_u64(0x0, x186, x202);
+ uint64_t x235, uint8_t x236 = addcarryx_u64(x233, x189, x217);
+ uint64_t x238, uint8_t x239 = addcarryx_u64(x236, x192, x220);
+ uint64_t x241, uint8_t x242 = addcarryx_u64(x239, x195, x223);
+ uint64_t x244, uint8_t x245 = addcarryx_u64(x242, x198, x226);
+ uint64_t x247, uint8_t x248 = addcarryx_u64(x245, x200, x229);
+ uint64_t x250, uint64_t _ = mulx_u64(x232, 0x86bca1af286bca1bL);
+ uint64_t x253, uint64_t x254 = mulx_u64(x250, 0xffffffffffffffedL);
+ uint64_t x256, uint64_t x257 = mulx_u64(x250, 0xffffffffffffffffL);
+ uint64_t x259, uint64_t x260 = mulx_u64(x250, 0xffffffffffffffffL);
+ uint64_t x262, uint64_t x263 = mulx_u64(x250, 0xffffffffffffffffL);
+ uint64_t x265, uint64_t x266 = mulx_u64(x250, 0x7ffffffff);
+ uint64_t x268, uint8_t x269 = addcarryx_u64(0x0, x254, x256);
+ uint64_t x271, uint8_t x272 = addcarryx_u64(x269, x257, x259);
+ uint64_t x274, uint8_t x275 = addcarryx_u64(x272, x260, x262);
+ uint64_t x277, uint8_t x278 = addcarryx_u64(x275, x263, x265);
+ uint64_t x280, uint8_t _ = addcarryx_u64(0x0, x278, x266);
+ uint64_t _, uint8_t x284 = addcarryx_u64(0x0, x232, x253);
+ uint64_t x286, uint8_t x287 = addcarryx_u64(x284, x235, x268);
+ uint64_t x289, uint8_t x290 = addcarryx_u64(x287, x238, x271);
+ uint64_t x292, uint8_t x293 = addcarryx_u64(x290, x241, x274);
+ uint64_t x295, uint8_t x296 = addcarryx_u64(x293, x244, x277);
+ uint64_t x298, uint8_t x299 = addcarryx_u64(x296, x247, x280);
+ uint8_t x300 = (x299 + x248);
+ uint64_t x302, uint64_t x303 = mulx_u64(x11, x13);
+ uint64_t x305, uint64_t x306 = mulx_u64(x11, x15);
+ uint64_t x308, uint64_t x309 = mulx_u64(x11, x17);
+ uint64_t x311, uint64_t x312 = mulx_u64(x11, x19);
+ uint64_t x314, uint64_t x315 = mulx_u64(x11, x18);
+ uint64_t x317, uint8_t x318 = addcarryx_u64(0x0, x303, x305);
+ uint64_t x320, uint8_t x321 = addcarryx_u64(x318, x306, x308);
+ uint64_t x323, uint8_t x324 = addcarryx_u64(x321, x309, x311);
+ uint64_t x326, uint8_t x327 = addcarryx_u64(x324, x312, x314);
+ uint64_t x329, uint8_t _ = addcarryx_u64(0x0, x327, x315);
+ uint64_t x332, uint8_t x333 = addcarryx_u64(0x0, x286, x302);
+ uint64_t x335, uint8_t x336 = addcarryx_u64(x333, x289, x317);
+ uint64_t x338, uint8_t x339 = addcarryx_u64(x336, x292, x320);
+ uint64_t x341, uint8_t x342 = addcarryx_u64(x339, x295, x323);
+ uint64_t x344, uint8_t x345 = addcarryx_u64(x342, x298, x326);
+ uint64_t x347, uint8_t x348 = addcarryx_u64(x345, x300, x329);
+ uint64_t x350, uint64_t _ = mulx_u64(x332, 0x86bca1af286bca1bL);
+ uint64_t x353, uint64_t x354 = mulx_u64(x350, 0xffffffffffffffedL);
+ uint64_t x356, uint64_t x357 = mulx_u64(x350, 0xffffffffffffffffL);
+ uint64_t x359, uint64_t x360 = mulx_u64(x350, 0xffffffffffffffffL);
+ uint64_t x362, uint64_t x363 = mulx_u64(x350, 0xffffffffffffffffL);
+ uint64_t x365, uint64_t x366 = mulx_u64(x350, 0x7ffffffff);
+ uint64_t x368, uint8_t x369 = addcarryx_u64(0x0, x354, x356);
+ uint64_t x371, uint8_t x372 = addcarryx_u64(x369, x357, x359);
+ uint64_t x374, uint8_t x375 = addcarryx_u64(x372, x360, x362);
+ uint64_t x377, uint8_t x378 = addcarryx_u64(x375, x363, x365);
+ uint64_t x380, uint8_t _ = addcarryx_u64(0x0, x378, x366);
+ uint64_t _, uint8_t x384 = addcarryx_u64(0x0, x332, x353);
+ uint64_t x386, uint8_t x387 = addcarryx_u64(x384, x335, x368);
+ uint64_t x389, uint8_t x390 = addcarryx_u64(x387, x338, x371);
+ uint64_t x392, uint8_t x393 = addcarryx_u64(x390, x341, x374);
+ uint64_t x395, uint8_t x396 = addcarryx_u64(x393, x344, x377);
+ uint64_t x398, uint8_t x399 = addcarryx_u64(x396, x347, x380);
+ uint8_t x400 = (x399 + x348);
+ uint64_t x402, uint64_t x403 = mulx_u64(x10, x13);
+ uint64_t x405, uint64_t x406 = mulx_u64(x10, x15);
+ uint64_t x408, uint64_t x409 = mulx_u64(x10, x17);
+ uint64_t x411, uint64_t x412 = mulx_u64(x10, x19);
+ uint64_t x414, uint64_t x415 = mulx_u64(x10, x18);
+ uint64_t x417, uint8_t x418 = addcarryx_u64(0x0, x403, x405);
+ uint64_t x420, uint8_t x421 = addcarryx_u64(x418, x406, x408);
+ uint64_t x423, uint8_t x424 = addcarryx_u64(x421, x409, x411);
+ uint64_t x426, uint8_t x427 = addcarryx_u64(x424, x412, x414);
+ uint64_t x429, uint8_t _ = addcarryx_u64(0x0, x427, x415);
+ uint64_t x432, uint8_t x433 = addcarryx_u64(0x0, x386, x402);
+ uint64_t x435, uint8_t x436 = addcarryx_u64(x433, x389, x417);
+ uint64_t x438, uint8_t x439 = addcarryx_u64(x436, x392, x420);
+ uint64_t x441, uint8_t x442 = addcarryx_u64(x439, x395, x423);
+ uint64_t x444, uint8_t x445 = addcarryx_u64(x442, x398, x426);
+ uint64_t x447, uint8_t x448 = addcarryx_u64(x445, x400, x429);
+ uint64_t x450, uint64_t _ = mulx_u64(x432, 0x86bca1af286bca1bL);
+ uint64_t x453, uint64_t x454 = mulx_u64(x450, 0xffffffffffffffedL);
+ uint64_t x456, uint64_t x457 = mulx_u64(x450, 0xffffffffffffffffL);
+ uint64_t x459, uint64_t x460 = mulx_u64(x450, 0xffffffffffffffffL);
+ uint64_t x462, uint64_t x463 = mulx_u64(x450, 0xffffffffffffffffL);
+ uint64_t x465, uint64_t x466 = mulx_u64(x450, 0x7ffffffff);
+ uint64_t x468, uint8_t x469 = addcarryx_u64(0x0, x454, x456);
+ uint64_t x471, uint8_t x472 = addcarryx_u64(x469, x457, x459);
+ uint64_t x474, uint8_t x475 = addcarryx_u64(x472, x460, x462);
+ uint64_t x477, uint8_t x478 = addcarryx_u64(x475, x463, x465);
+ uint64_t x480, uint8_t _ = addcarryx_u64(0x0, x478, x466);
+ uint64_t _, uint8_t x484 = addcarryx_u64(0x0, x432, x453);
+ uint64_t x486, uint8_t x487 = addcarryx_u64(x484, x435, x468);
+ uint64_t x489, uint8_t x490 = addcarryx_u64(x487, x438, x471);
+ uint64_t x492, uint8_t x493 = addcarryx_u64(x490, x441, x474);
+ uint64_t x495, uint8_t x496 = addcarryx_u64(x493, x444, x477);
+ uint64_t x498, uint8_t x499 = addcarryx_u64(x496, x447, x480);
+ uint8_t x500 = (x499 + x448);
+ uint64_t x502, uint8_t x503 = subborrow_u64(0x0, x486, 0xffffffffffffffedL);
+ uint64_t x505, uint8_t x506 = subborrow_u64(x503, x489, 0xffffffffffffffffL);
+ uint64_t x508, uint8_t x509 = subborrow_u64(x506, x492, 0xffffffffffffffffL);
+ uint64_t x511, uint8_t x512 = subborrow_u64(x509, x495, 0xffffffffffffffffL);
+ uint64_t x514, uint8_t x515 = subborrow_u64(x512, x498, 0x7ffffffff);
+ uint64_t _, uint8_t x518 = subborrow_u64(x515, x500, 0x0);
+ uint64_t x519 = cmovznz64(x518, x514, x498);
+ uint64_t x520 = cmovznz64(x518, x511, x495);
+ uint64_t x521 = cmovznz64(x518, x508, x492);
+ uint64_t x522 = cmovznz64(x518, x505, x489);
+ uint64_t x523 = cmovznz64(x518, x502, x486);
+ return (x519, x520, x521, x522, x523))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas32_2e129m25_5limbs/fesub.c b/src/Specific/solinas32_2e129m25_5limbs/fesub.c
index 153d6a39d..758eebda7 100644
--- a/src/Specific/solinas32_2e129m25_5limbs/fesub.c
+++ b/src/Specific/solinas32_2e129m25_5limbs/fesub.c
@@ -9,7 +9,7 @@ static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5])
{ const uint32_t x17 = in2[2];
{ const uint32_t x15 = in2[1];
{ const uint32_t x13 = in2[0];
- out[0] = ((Const 134217678 + x5) - x13);
+ out[0] = ((0x7ffffce + x5) - x13);
out[1] = ((0x7fffffe + x7) - x15);
out[2] = ((0x7fffffe + x9) - x17);
out[3] = ((0x7fffffe + x11) - x19);
diff --git a/src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.log b/src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.log
index 6d45d90b0..218309d16 100644
--- a/src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas32_2e129m25_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x3fffffe + x10) - x18), ((0x7fffffe + x11) - x19), ((0x7fffffe + x9) - x17), ((0x7fffffe + x7) - x15), ((Const 134217678 + x5) - x13)))
+ (((0x3fffffe + x10) - x18), ((0x7fffffe + x11) - x19), ((0x7fffffe + x9) - x17), ((0x7fffffe + x7) - x15), ((0x7ffffce + x5) - x13)))
(x, x0)%core
: word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e129m25_5limbs/freeze.c b/src/Specific/solinas32_2e129m25_5limbs/freeze.c
index 7f14d384e..7ee522ad7 100644
--- a/src/Specific/solinas32_2e129m25_5limbs/freeze.c
+++ b/src/Specific/solinas32_2e129m25_5limbs/freeze.c
@@ -4,13 +4,13 @@ static void freeze(uint32_t out[5], const uint32_t in1[5]) {
{ const uint32_t x6 = in1[2];
{ const uint32_t x4 = in1[1];
{ const uint32_t x2 = in1[0];
- { uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 67108839);
+ { uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffe7);
{ uint32_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffff);
{ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffff);
{ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffff);
{ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x7, 0x1ffffff);
{ uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & Const 67108839);
+ { uint32_t x25 = (x24 & 0x3ffffe7);
{ uint32_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
{ uint32_t x29 = (x24 & 0x3ffffff);
{ uint32_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.log b/src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.log
index b611aa26e..418a7e817 100644
--- a/src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.log
+++ b/src/Specific/solinas32_2e129m25_5limbs/freezeDisplay.log
@@ -2,13 +2,13 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 67108839);
+ uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffe7);
uint32_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffff);
uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffff);
uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffff);
uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x7, 0x1ffffff);
uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & Const 67108839);
+ uint32_t x25 = (x24 & 0x3ffffe7);
uint32_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
uint32_t x29 = (x24 & 0x3ffffff);
uint32_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas32_2e130m5_6limbs/fesub.c b/src/Specific/solinas32_2e130m5_6limbs/fesub.c
index 0878adc71..71e866452 100644
--- a/src/Specific/solinas32_2e130m5_6limbs/fesub.c
+++ b/src/Specific/solinas32_2e130m5_6limbs/fesub.c
@@ -11,7 +11,7 @@ static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6])
{ const uint32_t x19 = in2[2];
{ const uint32_t x17 = in2[1];
{ const uint32_t x15 = in2[0];
- out[0] = ((Const 8388598 + x5) - x15);
+ out[0] = ((0x7ffff6 + x5) - x15);
out[1] = ((0x7ffffe + x7) - x17);
out[2] = ((0x3ffffe + x9) - x19);
out[3] = ((0x7ffffe + x11) - x21);
diff --git a/src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.log
index 9a3ed3bd6..e9bac8469 100644
--- a/src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.log
+++ b/src/Specific/solinas32_2e130m5_6limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x3ffffe + x12) - x22), ((0x7ffffe + x13) - x23), ((0x7ffffe + x11) - x21), ((0x3ffffe + x9) - x19), ((0x7ffffe + x7) - x17), ((Const 8388598 + x5) - x15)))
+ (((0x3ffffe + x12) - x22), ((0x7ffffe + x13) - x23), ((0x7ffffe + x11) - x21), ((0x3ffffe + x9) - x19), ((0x7ffffe + x7) - x17), ((0x7ffff6 + x5) - x15)))
(x, x0)%core
: word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e130m5_6limbs/freeze.c b/src/Specific/solinas32_2e130m5_6limbs/freeze.c
index e5eeaf200..d97282ebe 100644
--- a/src/Specific/solinas32_2e130m5_6limbs/freeze.c
+++ b/src/Specific/solinas32_2e130m5_6limbs/freeze.c
@@ -5,14 +5,14 @@ static void freeze(uint32_t out[6], const uint32_t in1[6]) {
{ const uint32_t x6 = in1[2];
{ const uint32_t x4 = in1[1];
{ const uint32_t x2 = in1[0];
- { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4194299);
+ { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffb);
{ uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x3fffff);
{ uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffff);
{ uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x3fffff);
{ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x3fffff);
{ uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffff);
{ uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & Const 4194299);
+ { uint32_t x30 = (x29 & 0x3ffffb);
{ uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
{ uint32_t x34 = (x29 & 0x3fffff);
{ uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
diff --git a/src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.log
index 7c46c9b99..77f6fc447 100644
--- a/src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.log
+++ b/src/Specific/solinas32_2e130m5_6limbs/freezeDisplay.log
@@ -2,14 +2,14 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 4194299);
+ uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffb);
uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x3fffff);
uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffff);
uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x3fffff);
uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x3fffff);
uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 21 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffff);
uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & Const 4194299);
+ uint32_t x30 = (x29 & 0x3ffffb);
uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
uint32_t x34 = (x29 & 0x3fffff);
uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
diff --git a/src/Specific/solinas32_2e137m13_5limbs/fesub.c b/src/Specific/solinas32_2e137m13_5limbs/fesub.c
index 5cfbba998..f4bc53a29 100644
--- a/src/Specific/solinas32_2e137m13_5limbs/fesub.c
+++ b/src/Specific/solinas32_2e137m13_5limbs/fesub.c
@@ -9,7 +9,7 @@ static void fesub(uint32_t out[5], const uint32_t in1[5], const uint32_t in2[5])
{ const uint32_t x17 = in2[2];
{ const uint32_t x15 = in2[1];
{ const uint32_t x13 = in2[0];
- out[0] = ((Const 536870886 + x5) - x13);
+ out[0] = ((0x1fffffe6 + x5) - x13);
out[1] = ((0xffffffe + x7) - x15);
out[2] = ((0x1ffffffe + x9) - x17);
out[3] = ((0xffffffe + x11) - x19);
diff --git a/src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.log b/src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.log
index 210afd80b..cd269dba7 100644
--- a/src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas32_2e137m13_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0xffffffe + x10) - x18), ((0xffffffe + x11) - x19), ((0x1ffffffe + x9) - x17), ((0xffffffe + x7) - x15), ((Const 536870886 + x5) - x13)))
+ (((0xffffffe + x10) - x18), ((0xffffffe + x11) - x19), ((0x1ffffffe + x9) - x17), ((0xffffffe + x7) - x15), ((0x1fffffe6 + x5) - x13)))
(x, x0)%core
: word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e137m13_5limbs/freeze.c b/src/Specific/solinas32_2e137m13_5limbs/freeze.c
index 554d8ebd5..5d8668155 100644
--- a/src/Specific/solinas32_2e137m13_5limbs/freeze.c
+++ b/src/Specific/solinas32_2e137m13_5limbs/freeze.c
@@ -4,13 +4,13 @@ static void freeze(uint32_t out[5], const uint32_t in1[5]) {
{ const uint32_t x6 = in1[2];
{ const uint32_t x4 = in1[1];
{ const uint32_t x2 = in1[0];
- { uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 268435443);
+ { uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff3);
{ uint32_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x11, Return x4, 0x7ffffff);
{ uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x14, Return x6, 0xfffffff);
{ uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x8, 0x7ffffff);
{ uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x7, 0x7ffffff);
{ uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- { uint32_t x25 = (x24 & Const 268435443);
+ { uint32_t x25 = (x24 & 0xffffff3);
{ uint32_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
{ uint32_t x29 = (x24 & 0x7ffffff);
{ uint32_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.log b/src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.log
index 5dc9bfd97..8cec37338 100644
--- a/src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.log
+++ b/src/Specific/solinas32_2e137m13_5limbs/freezeDisplay.log
@@ -2,13 +2,13 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x7, x8, x6, x4, x2)%core,
- uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 268435443);
+ uint32_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xffffff3);
uint32_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x11, Return x4, 0x7ffffff);
uint32_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x14, Return x6, 0xfffffff);
uint32_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x17, Return x8, 0x7ffffff);
uint32_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x20, Return x7, 0x7ffffff);
uint32_t x24 = cmovznz32(x23, 0x0, 0xffffffff);
- uint32_t x25 = (x24 & Const 268435443);
+ uint32_t x25 = (x24 & 0xffffff3);
uint32_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
uint32_t x29 = (x24 & 0x7ffffff);
uint32_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas32_2e137m13_6limbs/fesub.c b/src/Specific/solinas32_2e137m13_6limbs/fesub.c
index 01a4eef37..cfa6edada 100644
--- a/src/Specific/solinas32_2e137m13_6limbs/fesub.c
+++ b/src/Specific/solinas32_2e137m13_6limbs/fesub.c
@@ -11,7 +11,7 @@ static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6])
{ const uint32_t x19 = in2[2];
{ const uint32_t x17 = in2[1];
{ const uint32_t x15 = in2[0];
- out[0] = ((Const 16777190 + x5) - x15);
+ out[0] = ((0xffffe6 + x5) - x15);
out[1] = ((0xfffffe + x7) - x17);
out[2] = ((0xfffffe + x9) - x19);
out[3] = ((0xfffffe + x11) - x21);
diff --git a/src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.log
index 1cc3f0ba3..534e6af0a 100644
--- a/src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.log
+++ b/src/Specific/solinas32_2e137m13_6limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
- (((0x7ffffe + x12) - x22), ((0xfffffe + x13) - x23), ((0xfffffe + x11) - x21), ((0xfffffe + x9) - x19), ((0xfffffe + x7) - x17), ((Const 16777190 + x5) - x15)))
+ (((0x7ffffe + x12) - x22), ((0xfffffe + x13) - x23), ((0xfffffe + x11) - x21), ((0xfffffe + x9) - x19), ((0xfffffe + x7) - x17), ((0xffffe6 + x5) - x15)))
(x, x0)%core
: word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e137m13_6limbs/freeze.c b/src/Specific/solinas32_2e137m13_6limbs/freeze.c
index 5d744405f..37aea66be 100644
--- a/src/Specific/solinas32_2e137m13_6limbs/freeze.c
+++ b/src/Specific/solinas32_2e137m13_6limbs/freeze.c
@@ -5,14 +5,14 @@ static void freeze(uint32_t out[6], const uint32_t in1[6]) {
{ const uint32_t x6 = in1[2];
{ const uint32_t x4 = in1[1];
{ const uint32_t x2 = in1[0];
- { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388595);
+ { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffff3);
{ uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffff);
{ uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x7fffff);
{ uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x7fffff);
{ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x7fffff);
{ uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x3fffff);
{ uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- { uint32_t x30 = (x29 & Const 8388595);
+ { uint32_t x30 = (x29 & 0x7ffff3);
{ uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
{ uint32_t x34 = (x29 & 0x7fffff);
{ uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
diff --git a/src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.log
index 28b9873e3..df913fbcb 100644
--- a/src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.log
+++ b/src/Specific/solinas32_2e137m13_6limbs/freezeDisplay.log
@@ -2,14 +2,14 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x9, x10, x8, x6, x4, x2)%core,
- uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 8388595);
+ uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffff3);
uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffff);
uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x7fffff);
uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x7fffff);
uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x7fffff);
uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 22 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x3fffff);
uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
- uint32_t x30 = (x29 & Const 8388595);
+ uint32_t x30 = (x29 & 0x7ffff3);
uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
uint32_t x34 = (x29 & 0x7fffff);
uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
diff --git a/src/Specific/solinas32_2e140m27_6limbs/femul.c b/src/Specific/solinas32_2e140m27_6limbs/femul.c
new file mode 100644
index 000000000..f8c7f04fd
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ { uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
+ { uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x1b * ((uint64_t)x12 * x22)));
+ { uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0x1b * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
+ { uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x1b * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
+ { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x1b * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ { uint64_t x29 = (((uint64_t)x5 * x15) + (0x1b * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
+ { uint64_t x30 = (x29 >> 0x18);
+ { uint32_t x31 = ((uint32_t)x29 & 0xffffff);
+ { uint64_t x32 = (x30 + x28);
+ { uint64_t x33 = (x32 >> 0x17);
+ { uint32_t x34 = ((uint32_t)x32 & 0x7fffff);
+ { uint64_t x35 = (x33 + x27);
+ { uint64_t x36 = (x35 >> 0x17);
+ { uint32_t x37 = ((uint32_t)x35 & 0x7fffff);
+ { uint64_t x38 = (x36 + x26);
+ { uint64_t x39 = (x38 >> 0x18);
+ { uint32_t x40 = ((uint32_t)x38 & 0xffffff);
+ { uint64_t x41 = (x39 + x25);
+ { uint32_t x42 = (uint32_t) (x41 >> 0x17);
+ { uint32_t x43 = ((uint32_t)x41 & 0x7fffff);
+ { uint64_t x44 = (x42 + x24);
+ { uint32_t x45 = (uint32_t) (x44 >> 0x17);
+ { uint32_t x46 = ((uint32_t)x44 & 0x7fffff);
+ { uint64_t x47 = (x31 + ((uint64_t)0x1b * x45));
+ { uint32_t x48 = (uint32_t) (x47 >> 0x18);
+ { uint32_t x49 = ((uint32_t)x47 & 0xffffff);
+ { uint32_t x50 = (x48 + x34);
+ { uint32_t x51 = (x50 >> 0x17);
+ { uint32_t x52 = (x50 & 0x7fffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e140m27_6limbs/femulDisplay.log b/src/Specific/solinas32_2e140m27_6limbs/femulDisplay.log
new file mode 100644
index 000000000..27372ed26
--- /dev/null
+++ b/src/Specific/solinas32_2e140m27_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
+ uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x1b * ((uint64_t)x12 * x22)));
+ uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0x1b * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
+ uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x1b * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
+ uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x1b * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ uint64_t x29 = (((uint64_t)x5 * x15) + (0x1b * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
+ uint64_t x30 = (x29 >> 0x18);
+ uint32_t x31 = ((uint32_t)x29 & 0xffffff);
+ uint64_t x32 = (x30 + x28);
+ uint64_t x33 = (x32 >> 0x17);
+ uint32_t x34 = ((uint32_t)x32 & 0x7fffff);
+ uint64_t x35 = (x33 + x27);
+ uint64_t x36 = (x35 >> 0x17);
+ uint32_t x37 = ((uint32_t)x35 & 0x7fffff);
+ uint64_t x38 = (x36 + x26);
+ uint64_t x39 = (x38 >> 0x18);
+ uint32_t x40 = ((uint32_t)x38 & 0xffffff);
+ uint64_t x41 = (x39 + x25);
+ uint32_t x42 = (uint32_t) (x41 >> 0x17);
+ uint32_t x43 = ((uint32_t)x41 & 0x7fffff);
+ uint64_t x44 = (x42 + x24);
+ uint32_t x45 = (uint32_t) (x44 >> 0x17);
+ uint32_t x46 = ((uint32_t)x44 & 0x7fffff);
+ uint64_t x47 = (x31 + ((uint64_t)0x1b * x45));
+ uint32_t x48 = (uint32_t) (x47 >> 0x18);
+ uint32_t x49 = ((uint32_t)x47 & 0xffffff);
+ uint32_t x50 = (x48 + x34);
+ uint32_t x51 = (x50 >> 0x17);
+ uint32_t x52 = (x50 & 0x7fffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9_6limbs/feadd.c b/src/Specific/solinas32_2e141m9_6limbs/feadd.c
new file mode 100644
index 000000000..5b654b294
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e141m9_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e141m9_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..1084b2659
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9_6limbs/femul.c b/src/Specific/solinas32_2e141m9_6limbs/femul.c
new file mode 100644
index 000000000..bfc1b2f93
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ { uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
+ { uint64_t x25 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + (((uint64_t)x9 * x19) + ((0x2 * ((uint64_t)x11 * x17)) + ((uint64_t)x13 * x15))))) + (0x9 * (0x2 * ((uint64_t)x12 * x22))));
+ { uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x9 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
+ { uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x9 * ((0x2 * ((uint64_t)x11 * x22)) + (((uint64_t)x13 * x23) + (0x2 * ((uint64_t)x12 * x21))))));
+ { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x9 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ { uint64_t x29 = (((uint64_t)x5 * x15) + (0x9 * ((0x2 * ((uint64_t)x7 * x22)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + (((uint64_t)x13 * x19) + (0x2 * ((uint64_t)x12 * x17))))))));
+ { uint64_t x30 = (x29 >> 0x18);
+ { uint32_t x31 = ((uint32_t)x29 & 0xffffff);
+ { uint64_t x32 = (x30 + x28);
+ { uint64_t x33 = (x32 >> 0x17);
+ { uint32_t x34 = ((uint32_t)x32 & 0x7fffff);
+ { uint64_t x35 = (x33 + x27);
+ { uint32_t x36 = (uint32_t) (x35 >> 0x18);
+ { uint32_t x37 = ((uint32_t)x35 & 0xffffff);
+ { uint64_t x38 = (x36 + x26);
+ { uint32_t x39 = (uint32_t) (x38 >> 0x17);
+ { uint32_t x40 = ((uint32_t)x38 & 0x7fffff);
+ { uint64_t x41 = (x39 + x25);
+ { uint32_t x42 = (uint32_t) (x41 >> 0x18);
+ { uint32_t x43 = ((uint32_t)x41 & 0xffffff);
+ { uint64_t x44 = (x42 + x24);
+ { uint32_t x45 = (uint32_t) (x44 >> 0x17);
+ { uint32_t x46 = ((uint32_t)x44 & 0x7fffff);
+ { uint64_t x47 = (x31 + ((uint64_t)0x9 * x45));
+ { uint32_t x48 = (uint32_t) (x47 >> 0x18);
+ { uint32_t x49 = ((uint32_t)x47 & 0xffffff);
+ { uint32_t x50 = (x48 + x34);
+ { uint32_t x51 = (x50 >> 0x17);
+ { uint32_t x52 = (x50 & 0x7fffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e141m9_6limbs/femulDisplay.log b/src/Specific/solinas32_2e141m9_6limbs/femulDisplay.log
new file mode 100644
index 000000000..1dae1e57e
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
+ uint64_t x25 = ((((uint64_t)x5 * x23) + ((0x2 * ((uint64_t)x7 * x21)) + (((uint64_t)x9 * x19) + ((0x2 * ((uint64_t)x11 * x17)) + ((uint64_t)x13 * x15))))) + (0x9 * (0x2 * ((uint64_t)x12 * x22))));
+ uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x9 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
+ uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x9 * ((0x2 * ((uint64_t)x11 * x22)) + (((uint64_t)x13 * x23) + (0x2 * ((uint64_t)x12 * x21))))));
+ uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x9 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ uint64_t x29 = (((uint64_t)x5 * x15) + (0x9 * ((0x2 * ((uint64_t)x7 * x22)) + (((uint64_t)x9 * x23) + ((0x2 * ((uint64_t)x11 * x21)) + (((uint64_t)x13 * x19) + (0x2 * ((uint64_t)x12 * x17))))))));
+ uint64_t x30 = (x29 >> 0x18);
+ uint32_t x31 = ((uint32_t)x29 & 0xffffff);
+ uint64_t x32 = (x30 + x28);
+ uint64_t x33 = (x32 >> 0x17);
+ uint32_t x34 = ((uint32_t)x32 & 0x7fffff);
+ uint64_t x35 = (x33 + x27);
+ uint32_t x36 = (uint32_t) (x35 >> 0x18);
+ uint32_t x37 = ((uint32_t)x35 & 0xffffff);
+ uint64_t x38 = (x36 + x26);
+ uint32_t x39 = (uint32_t) (x38 >> 0x17);
+ uint32_t x40 = ((uint32_t)x38 & 0x7fffff);
+ uint64_t x41 = (x39 + x25);
+ uint32_t x42 = (uint32_t) (x41 >> 0x18);
+ uint32_t x43 = ((uint32_t)x41 & 0xffffff);
+ uint64_t x44 = (x42 + x24);
+ uint32_t x45 = (uint32_t) (x44 >> 0x17);
+ uint32_t x46 = ((uint32_t)x44 & 0x7fffff);
+ uint64_t x47 = (x31 + ((uint64_t)0x9 * x45));
+ uint32_t x48 = (uint32_t) (x47 >> 0x18);
+ uint32_t x49 = ((uint32_t)x47 & 0xffffff);
+ uint32_t x50 = (x48 + x34);
+ uint32_t x51 = (x50 >> 0x17);
+ uint32_t x52 = (x50 & 0x7fffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9_6limbs/fesquare.c b/src/Specific/solinas32_2e141m9_6limbs/fesquare.c
new file mode 100644
index 000000000..a0f82da0d
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
+ { uint64_t x12 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * (0x2 * ((uint64_t)x9 * x9))));
+ { uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
+ { uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x9)) + (((uint64_t)x10 * x10) + (0x2 * ((uint64_t)x9 * x8))))));
+ { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
+ { uint64_t x16 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x9)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (0x2 * ((uint64_t)x9 * x4))))))));
+ { uint64_t x17 = (x16 >> 0x18);
+ { uint32_t x18 = ((uint32_t)x16 & 0xffffff);
+ { uint64_t x19 = (x17 + x15);
+ { uint64_t x20 = (x19 >> 0x17);
+ { uint32_t x21 = ((uint32_t)x19 & 0x7fffff);
+ { uint64_t x22 = (x20 + x14);
+ { uint32_t x23 = (uint32_t) (x22 >> 0x18);
+ { uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ { uint64_t x25 = (x23 + x13);
+ { uint32_t x26 = (uint32_t) (x25 >> 0x17);
+ { uint32_t x27 = ((uint32_t)x25 & 0x7fffff);
+ { uint64_t x28 = (x26 + x12);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x18);
+ { uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ { uint64_t x31 = (x29 + x11);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x17);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ { uint64_t x34 = (x18 + ((uint64_t)0x9 * x32));
+ { uint32_t x35 = (uint32_t) (x34 >> 0x18);
+ { uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ { uint32_t x37 = (x35 + x21);
+ { uint32_t x38 = (x37 >> 0x17);
+ { uint32_t x39 = (x37 & 0x7fffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e141m9_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e141m9_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..44c86d48c
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
+ uint64_t x12 = ((((uint64_t)x2 * x10) + ((0x2 * ((uint64_t)x4 * x8)) + (((uint64_t)x6 * x6) + ((0x2 * ((uint64_t)x8 * x4)) + ((uint64_t)x10 * x2))))) + (0x9 * (0x2 * ((uint64_t)x9 * x9))));
+ uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x9 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
+ uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x9 * ((0x2 * ((uint64_t)x8 * x9)) + (((uint64_t)x10 * x10) + (0x2 * ((uint64_t)x9 * x8))))));
+ uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x9 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
+ uint64_t x16 = (((uint64_t)x2 * x2) + (0x9 * ((0x2 * ((uint64_t)x4 * x9)) + (((uint64_t)x6 * x10) + ((0x2 * ((uint64_t)x8 * x8)) + (((uint64_t)x10 * x6) + (0x2 * ((uint64_t)x9 * x4))))))));
+ uint64_t x17 = (x16 >> 0x18);
+ uint32_t x18 = ((uint32_t)x16 & 0xffffff);
+ uint64_t x19 = (x17 + x15);
+ uint64_t x20 = (x19 >> 0x17);
+ uint32_t x21 = ((uint32_t)x19 & 0x7fffff);
+ uint64_t x22 = (x20 + x14);
+ uint32_t x23 = (uint32_t) (x22 >> 0x18);
+ uint32_t x24 = ((uint32_t)x22 & 0xffffff);
+ uint64_t x25 = (x23 + x13);
+ uint32_t x26 = (uint32_t) (x25 >> 0x17);
+ uint32_t x27 = ((uint32_t)x25 & 0x7fffff);
+ uint64_t x28 = (x26 + x12);
+ uint32_t x29 = (uint32_t) (x28 >> 0x18);
+ uint32_t x30 = ((uint32_t)x28 & 0xffffff);
+ uint64_t x31 = (x29 + x11);
+ uint32_t x32 = (uint32_t) (x31 >> 0x17);
+ uint32_t x33 = ((uint32_t)x31 & 0x7fffff);
+ uint64_t x34 = (x18 + ((uint64_t)0x9 * x32));
+ uint32_t x35 = (uint32_t) (x34 >> 0x18);
+ uint32_t x36 = ((uint32_t)x34 & 0xffffff);
+ uint32_t x37 = (x35 + x21);
+ uint32_t x38 = (x37 >> 0x17);
+ uint32_t x39 = (x37 & 0x7fffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9_6limbs/fesub.c b/src/Specific/solinas32_2e141m9_6limbs/fesub.c
new file mode 100644
index 000000000..8c928bced
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = ((0x1ffffee + x5) - x15);
+ out[1] = ((0xfffffe + x7) - x17);
+ out[2] = ((0x1fffffe + x9) - x19);
+ out[3] = ((0xfffffe + x11) - x21);
+ out[4] = ((0x1fffffe + x13) - x23);
+ out[5] = ((0xfffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e141m9_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e141m9_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..45d58a6d4
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0xfffffe + x12) - x22), ((0x1fffffe + x13) - x23), ((0xfffffe + x11) - x21), ((0x1fffffe + x9) - x19), ((0xfffffe + x7) - x17), ((0x1ffffee + x5) - x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e141m9_6limbs/freeze.c b/src/Specific/solinas32_2e141m9_6limbs/freeze.c
new file mode 100644
index 000000000..24e968a49
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffff7);
+ { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffff);
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffff);
+ { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x7fffff);
+ { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffff);
+ { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x7fffff);
+ { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ { uint32_t x30 = (x29 & 0xfffff7);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint32_t x34 = (x29 & 0x7fffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint32_t x38 = (x29 & 0xffffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint32_t x42 = (x29 & 0x7fffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint32_t x46 = (x29 & 0xffffff);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint32_t x50 = (x29 & 0x7fffff);
+ { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e141m9_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e141m9_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..d4ea4280b
--- /dev/null
+++ b/src/Specific/solinas32_2e141m9_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0xfffff7);
+ uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffff);
+ uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffff);
+ uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x7fffff);
+ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffff);
+ uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x7fffff);
+ uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ uint32_t x30 = (x29 & 0xfffff7);
+ uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint32_t x34 = (x29 & 0x7fffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint32_t x38 = (x29 & 0xffffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint32_t x42 = (x29 & 0x7fffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint32_t x46 = (x29 & 0xffffff);
+ uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 24 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint32_t x50 = (x29 & 0x7fffff);
+ uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 23 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3_6limbs/feadd.c b/src/Specific/solinas32_2e150m3_6limbs/feadd.c
new file mode 100644
index 000000000..5b654b294
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e150m3_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..1084b2659
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3_6limbs/femul.c b/src/Specific/solinas32_2e150m3_6limbs/femul.c
new file mode 100644
index 000000000..8e1b3b763
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ { uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
+ { uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x3 * ((uint64_t)x12 * x22)));
+ { uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x3 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
+ { uint64_t x27 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + ((uint64_t)x9 * x15))) + (0x3 * (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21)))));
+ { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x3 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ { uint64_t x29 = (((uint64_t)x5 * x15) + (0x3 * (((uint64_t)x7 * x22) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x12 * x17)))))));
+ { uint64_t x30 = (x29 >> 0x19);
+ { uint32_t x31 = ((uint32_t)x29 & 0x1ffffff);
+ { uint64_t x32 = (x30 + x28);
+ { uint64_t x33 = (x32 >> 0x19);
+ { uint32_t x34 = ((uint32_t)x32 & 0x1ffffff);
+ { uint64_t x35 = (x33 + x27);
+ { uint64_t x36 = (x35 >> 0x19);
+ { uint32_t x37 = ((uint32_t)x35 & 0x1ffffff);
+ { uint64_t x38 = (x36 + x26);
+ { uint32_t x39 = (uint32_t) (x38 >> 0x19);
+ { uint32_t x40 = ((uint32_t)x38 & 0x1ffffff);
+ { uint64_t x41 = (x39 + x25);
+ { uint32_t x42 = (uint32_t) (x41 >> 0x19);
+ { uint32_t x43 = ((uint32_t)x41 & 0x1ffffff);
+ { uint64_t x44 = (x42 + x24);
+ { uint32_t x45 = (uint32_t) (x44 >> 0x19);
+ { uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
+ { uint64_t x47 = (x31 + ((uint64_t)0x3 * x45));
+ { uint32_t x48 = (uint32_t) (x47 >> 0x19);
+ { uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
+ { uint32_t x50 = (x48 + x34);
+ { uint32_t x51 = (x50 >> 0x19);
+ { uint32_t x52 = (x50 & 0x1ffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3_6limbs/femulDisplay.log b/src/Specific/solinas32_2e150m3_6limbs/femulDisplay.log
new file mode 100644
index 000000000..c0d245008
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
+ uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x3 * ((uint64_t)x12 * x22)));
+ uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x3 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
+ uint64_t x27 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + ((uint64_t)x9 * x15))) + (0x3 * (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21)))));
+ uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x3 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ uint64_t x29 = (((uint64_t)x5 * x15) + (0x3 * (((uint64_t)x7 * x22) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x12 * x17)))))));
+ uint64_t x30 = (x29 >> 0x19);
+ uint32_t x31 = ((uint32_t)x29 & 0x1ffffff);
+ uint64_t x32 = (x30 + x28);
+ uint64_t x33 = (x32 >> 0x19);
+ uint32_t x34 = ((uint32_t)x32 & 0x1ffffff);
+ uint64_t x35 = (x33 + x27);
+ uint64_t x36 = (x35 >> 0x19);
+ uint32_t x37 = ((uint32_t)x35 & 0x1ffffff);
+ uint64_t x38 = (x36 + x26);
+ uint32_t x39 = (uint32_t) (x38 >> 0x19);
+ uint32_t x40 = ((uint32_t)x38 & 0x1ffffff);
+ uint64_t x41 = (x39 + x25);
+ uint32_t x42 = (uint32_t) (x41 >> 0x19);
+ uint32_t x43 = ((uint32_t)x41 & 0x1ffffff);
+ uint64_t x44 = (x42 + x24);
+ uint32_t x45 = (uint32_t) (x44 >> 0x19);
+ uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
+ uint64_t x47 = (x31 + ((uint64_t)0x3 * x45));
+ uint32_t x48 = (uint32_t) (x47 >> 0x19);
+ uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
+ uint32_t x50 = (x48 + x34);
+ uint32_t x51 = (x50 >> 0x19);
+ uint32_t x52 = (x50 & 0x1ffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3_6limbs/fesquare.c b/src/Specific/solinas32_2e150m3_6limbs/fesquare.c
new file mode 100644
index 000000000..043ba5b12
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
+ { uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((uint64_t)x9 * x9)));
+ { uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
+ { uint64_t x14 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8)))));
+ { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
+ { uint64_t x16 = (((uint64_t)x2 * x2) + (0x3 * (((uint64_t)x4 * x9) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((uint64_t)x9 * x4)))))));
+ { uint64_t x17 = (x16 >> 0x19);
+ { uint32_t x18 = ((uint32_t)x16 & 0x1ffffff);
+ { uint64_t x19 = (x17 + x15);
+ { uint64_t x20 = (x19 >> 0x19);
+ { uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ { uint64_t x22 = (x20 + x14);
+ { uint64_t x23 = (x22 >> 0x19);
+ { uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ { uint64_t x25 = (x23 + x13);
+ { uint32_t x26 = (uint32_t) (x25 >> 0x19);
+ { uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ { uint64_t x28 = (x26 + x12);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x19);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ { uint64_t x31 = (x29 + x11);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x19);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ { uint64_t x34 = (x18 + ((uint64_t)0x3 * x32));
+ { uint32_t x35 = (uint32_t) (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint32_t x37 = (x35 + x21);
+ { uint32_t x38 = (x37 >> 0x19);
+ { uint32_t x39 = (x37 & 0x1ffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e150m3_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..31d45f0a3
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
+ uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x3 * ((uint64_t)x9 * x9)));
+ uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x3 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
+ uint64_t x14 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x3 * (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8)))));
+ uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x3 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
+ uint64_t x16 = (((uint64_t)x2 * x2) + (0x3 * (((uint64_t)x4 * x9) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((uint64_t)x9 * x4)))))));
+ uint64_t x17 = (x16 >> 0x19);
+ uint32_t x18 = ((uint32_t)x16 & 0x1ffffff);
+ uint64_t x19 = (x17 + x15);
+ uint64_t x20 = (x19 >> 0x19);
+ uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ uint64_t x22 = (x20 + x14);
+ uint64_t x23 = (x22 >> 0x19);
+ uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ uint64_t x25 = (x23 + x13);
+ uint32_t x26 = (uint32_t) (x25 >> 0x19);
+ uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ uint64_t x28 = (x26 + x12);
+ uint32_t x29 = (uint32_t) (x28 >> 0x19);
+ uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ uint64_t x31 = (x29 + x11);
+ uint32_t x32 = (uint32_t) (x31 >> 0x19);
+ uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ uint64_t x34 = (x18 + ((uint64_t)0x3 * x32));
+ uint32_t x35 = (uint32_t) (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint32_t x37 = (x35 + x21);
+ uint32_t x38 = (x37 >> 0x19);
+ uint32_t x39 = (x37 & 0x1ffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3_6limbs/fesub.c b/src/Specific/solinas32_2e150m3_6limbs/fesub.c
new file mode 100644
index 000000000..bcdebe93b
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = ((Const 67108858 + x5) - x15);
+ out[1] = ((0x3fffffe + x7) - x17);
+ out[2] = ((0x3fffffe + x9) - x19);
+ out[3] = ((0x3fffffe + x11) - x21);
+ out[4] = ((0x3fffffe + x13) - x23);
+ out[5] = ((0x3fffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e150m3_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..37c2d8683
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x3fffffe + x12) - x22), ((0x3fffffe + x13) - x23), ((0x3fffffe + x11) - x21), ((0x3fffffe + x9) - x19), ((0x3fffffe + x7) - x17), ((Const 67108858 + x5) - x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m3_6limbs/freeze.c b/src/Specific/solinas32_2e150m3_6limbs/freeze.c
new file mode 100644
index 000000000..4dbed5747
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffd);
+ { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1ffffff);
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffff);
+ { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1ffffff);
+ { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffff);
+ { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffff);
+ { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ { uint32_t x30 = (x29 & 0x1fffffd);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint32_t x34 = (x29 & 0x1ffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint32_t x38 = (x29 & 0x1ffffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint32_t x42 = (x29 & 0x1ffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint32_t x46 = (x29 & 0x1ffffff);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint32_t x50 = (x29 & 0x1ffffff);
+ { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m3_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e150m3_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..849da0935
--- /dev/null
+++ b/src/Specific/solinas32_2e150m3_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffd);
+ uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1ffffff);
+ uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffff);
+ uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1ffffff);
+ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffff);
+ uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffff);
+ uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ uint32_t x30 = (x29 & 0x1fffffd);
+ uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint32_t x34 = (x29 & 0x1ffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint32_t x38 = (x29 & 0x1ffffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint32_t x42 = (x29 & 0x1ffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint32_t x46 = (x29 & 0x1ffffff);
+ uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint32_t x50 = (x29 & 0x1ffffff);
+ uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5_6limbs/feadd.c b/src/Specific/solinas32_2e150m5_6limbs/feadd.c
new file mode 100644
index 000000000..5b654b294
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m5_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e150m5_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..1084b2659
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5_6limbs/femul.c b/src/Specific/solinas32_2e150m5_6limbs/femul.c
new file mode 100644
index 000000000..7c3a9970d
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ { uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
+ { uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x5 * ((uint64_t)x12 * x22)));
+ { uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x5 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
+ { uint64_t x27 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + ((uint64_t)x9 * x15))) + (0x5 * (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21)))));
+ { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x5 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ { uint64_t x29 = (((uint64_t)x5 * x15) + (0x5 * (((uint64_t)x7 * x22) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x12 * x17)))))));
+ { uint64_t x30 = (x29 >> 0x19);
+ { uint32_t x31 = ((uint32_t)x29 & 0x1ffffff);
+ { uint64_t x32 = (x30 + x28);
+ { uint64_t x33 = (x32 >> 0x19);
+ { uint32_t x34 = ((uint32_t)x32 & 0x1ffffff);
+ { uint64_t x35 = (x33 + x27);
+ { uint64_t x36 = (x35 >> 0x19);
+ { uint32_t x37 = ((uint32_t)x35 & 0x1ffffff);
+ { uint64_t x38 = (x36 + x26);
+ { uint64_t x39 = (x38 >> 0x19);
+ { uint32_t x40 = ((uint32_t)x38 & 0x1ffffff);
+ { uint64_t x41 = (x39 + x25);
+ { uint32_t x42 = (uint32_t) (x41 >> 0x19);
+ { uint32_t x43 = ((uint32_t)x41 & 0x1ffffff);
+ { uint64_t x44 = (x42 + x24);
+ { uint32_t x45 = (uint32_t) (x44 >> 0x19);
+ { uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
+ { uint64_t x47 = (x31 + ((uint64_t)0x5 * x45));
+ { uint32_t x48 = (uint32_t) (x47 >> 0x19);
+ { uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
+ { uint32_t x50 = (x48 + x34);
+ { uint32_t x51 = (x50 >> 0x19);
+ { uint32_t x52 = (x50 & 0x1ffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m5_6limbs/femulDisplay.log b/src/Specific/solinas32_2e150m5_6limbs/femulDisplay.log
new file mode 100644
index 000000000..a78dc39c1
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
+ uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x5 * ((uint64_t)x12 * x22)));
+ uint64_t x26 = ((((uint64_t)x5 * x21) + (((uint64_t)x7 * x19) + (((uint64_t)x9 * x17) + ((uint64_t)x11 * x15)))) + (0x5 * (((uint64_t)x13 * x22) + ((uint64_t)x12 * x23))));
+ uint64_t x27 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + ((uint64_t)x9 * x15))) + (0x5 * (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21)))));
+ uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x5 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ uint64_t x29 = (((uint64_t)x5 * x15) + (0x5 * (((uint64_t)x7 * x22) + (((uint64_t)x9 * x23) + (((uint64_t)x11 * x21) + (((uint64_t)x13 * x19) + ((uint64_t)x12 * x17)))))));
+ uint64_t x30 = (x29 >> 0x19);
+ uint32_t x31 = ((uint32_t)x29 & 0x1ffffff);
+ uint64_t x32 = (x30 + x28);
+ uint64_t x33 = (x32 >> 0x19);
+ uint32_t x34 = ((uint32_t)x32 & 0x1ffffff);
+ uint64_t x35 = (x33 + x27);
+ uint64_t x36 = (x35 >> 0x19);
+ uint32_t x37 = ((uint32_t)x35 & 0x1ffffff);
+ uint64_t x38 = (x36 + x26);
+ uint64_t x39 = (x38 >> 0x19);
+ uint32_t x40 = ((uint32_t)x38 & 0x1ffffff);
+ uint64_t x41 = (x39 + x25);
+ uint32_t x42 = (uint32_t) (x41 >> 0x19);
+ uint32_t x43 = ((uint32_t)x41 & 0x1ffffff);
+ uint64_t x44 = (x42 + x24);
+ uint32_t x45 = (uint32_t) (x44 >> 0x19);
+ uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
+ uint64_t x47 = (x31 + ((uint64_t)0x5 * x45));
+ uint32_t x48 = (uint32_t) (x47 >> 0x19);
+ uint32_t x49 = ((uint32_t)x47 & 0x1ffffff);
+ uint32_t x50 = (x48 + x34);
+ uint32_t x51 = (x50 >> 0x19);
+ uint32_t x52 = (x50 & 0x1ffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5_6limbs/fesquare.c b/src/Specific/solinas32_2e150m5_6limbs/fesquare.c
new file mode 100644
index 000000000..7210a32c4
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
+ { uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * ((uint64_t)x9 * x9)));
+ { uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
+ { uint64_t x14 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8)))));
+ { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
+ { uint64_t x16 = (((uint64_t)x2 * x2) + (0x5 * (((uint64_t)x4 * x9) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((uint64_t)x9 * x4)))))));
+ { uint64_t x17 = (x16 >> 0x19);
+ { uint32_t x18 = ((uint32_t)x16 & 0x1ffffff);
+ { uint64_t x19 = (x17 + x15);
+ { uint64_t x20 = (x19 >> 0x19);
+ { uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ { uint64_t x22 = (x20 + x14);
+ { uint64_t x23 = (x22 >> 0x19);
+ { uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ { uint64_t x25 = (x23 + x13);
+ { uint64_t x26 = (x25 >> 0x19);
+ { uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ { uint64_t x28 = (x26 + x12);
+ { uint32_t x29 = (uint32_t) (x28 >> 0x19);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ { uint64_t x31 = (x29 + x11);
+ { uint32_t x32 = (uint32_t) (x31 >> 0x19);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ { uint64_t x34 = (x18 + ((uint64_t)0x5 * x32));
+ { uint32_t x35 = (uint32_t) (x34 >> 0x19);
+ { uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ { uint32_t x37 = (x35 + x21);
+ { uint32_t x38 = (x37 >> 0x19);
+ { uint32_t x39 = (x37 & 0x1ffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m5_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e150m5_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..e32ea3b81
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
+ uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * ((uint64_t)x9 * x9)));
+ uint64_t x13 = ((((uint64_t)x2 * x8) + (((uint64_t)x4 * x6) + (((uint64_t)x6 * x4) + ((uint64_t)x8 * x2)))) + (0x5 * (((uint64_t)x10 * x9) + ((uint64_t)x9 * x10))));
+ uint64_t x14 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8)))));
+ uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
+ uint64_t x16 = (((uint64_t)x2 * x2) + (0x5 * (((uint64_t)x4 * x9) + (((uint64_t)x6 * x10) + (((uint64_t)x8 * x8) + (((uint64_t)x10 * x6) + ((uint64_t)x9 * x4)))))));
+ uint64_t x17 = (x16 >> 0x19);
+ uint32_t x18 = ((uint32_t)x16 & 0x1ffffff);
+ uint64_t x19 = (x17 + x15);
+ uint64_t x20 = (x19 >> 0x19);
+ uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ uint64_t x22 = (x20 + x14);
+ uint64_t x23 = (x22 >> 0x19);
+ uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ uint64_t x25 = (x23 + x13);
+ uint64_t x26 = (x25 >> 0x19);
+ uint32_t x27 = ((uint32_t)x25 & 0x1ffffff);
+ uint64_t x28 = (x26 + x12);
+ uint32_t x29 = (uint32_t) (x28 >> 0x19);
+ uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ uint64_t x31 = (x29 + x11);
+ uint32_t x32 = (uint32_t) (x31 >> 0x19);
+ uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ uint64_t x34 = (x18 + ((uint64_t)0x5 * x32));
+ uint32_t x35 = (uint32_t) (x34 >> 0x19);
+ uint32_t x36 = ((uint32_t)x34 & 0x1ffffff);
+ uint32_t x37 = (x35 + x21);
+ uint32_t x38 = (x37 >> 0x19);
+ uint32_t x39 = (x37 & 0x1ffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5_6limbs/fesub.c b/src/Specific/solinas32_2e150m5_6limbs/fesub.c
new file mode 100644
index 000000000..a2bae1877
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = ((0x3fffff6 + x5) - x15);
+ out[1] = ((0x3fffffe + x7) - x17);
+ out[2] = ((0x3fffffe + x9) - x19);
+ out[3] = ((0x3fffffe + x11) - x21);
+ out[4] = ((0x3fffffe + x13) - x23);
+ out[5] = ((0x3fffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m5_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e150m5_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..1229647ea
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x3fffffe + x12) - x22), ((0x3fffffe + x13) - x23), ((0x3fffffe + x11) - x21), ((0x3fffffe + x9) - x19), ((0x3fffffe + x7) - x17), ((0x3fffff6 + x5) - x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e150m5_6limbs/freeze.c b/src/Specific/solinas32_2e150m5_6limbs/freeze.c
new file mode 100644
index 000000000..877b3693b
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffb);
+ { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1ffffff);
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffff);
+ { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1ffffff);
+ { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffff);
+ { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffff);
+ { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ { uint32_t x30 = (x29 & 0x1fffffb);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint32_t x34 = (x29 & 0x1ffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint32_t x38 = (x29 & 0x1ffffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint32_t x42 = (x29 & 0x1ffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint32_t x46 = (x29 & 0x1ffffff);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint32_t x50 = (x29 & 0x1ffffff);
+ { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e150m5_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e150m5_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..9a4af32ee
--- /dev/null
+++ b/src/Specific/solinas32_2e150m5_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffb);
+ uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1ffffff);
+ uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffff);
+ uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x1ffffff);
+ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffff);
+ uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffff);
+ uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ uint32_t x30 = (x29 & 0x1fffffb);
+ uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint32_t x34 = (x29 & 0x1ffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint32_t x38 = (x29 & 0x1ffffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint32_t x42 = (x29 & 0x1ffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint32_t x46 = (x29 & 0x1ffffff);
+ uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint32_t x50 = (x29 & 0x1ffffff);
+ uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17_6limbs/feadd.c b/src/Specific/solinas32_2e152m17_6limbs/feadd.c
new file mode 100644
index 000000000..5b654b294
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e152m17_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e152m17_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..1084b2659
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17_6limbs/femul.c b/src/Specific/solinas32_2e152m17_6limbs/femul.c
new file mode 100644
index 000000000..5cf3743f7
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ { uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
+ { uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x11 * ((uint64_t)x12 * x22)));
+ { uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0x11 * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
+ { uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x11 * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
+ { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x11 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ { uint64_t x29 = (((uint64_t)x5 * x15) + (0x11 * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
+ { uint64_t x30 = (x29 >> 0x1a);
+ { uint32_t x31 = ((uint32_t)x29 & 0x3ffffff);
+ { uint64_t x32 = (x30 + x28);
+ { uint64_t x33 = (x32 >> 0x19);
+ { uint32_t x34 = ((uint32_t)x32 & 0x1ffffff);
+ { uint64_t x35 = (x33 + x27);
+ { uint64_t x36 = (x35 >> 0x19);
+ { uint32_t x37 = ((uint32_t)x35 & 0x1ffffff);
+ { uint64_t x38 = (x36 + x26);
+ { uint64_t x39 = (x38 >> 0x1a);
+ { uint32_t x40 = ((uint32_t)x38 & 0x3ffffff);
+ { uint64_t x41 = (x39 + x25);
+ { uint64_t x42 = (x41 >> 0x19);
+ { uint32_t x43 = ((uint32_t)x41 & 0x1ffffff);
+ { uint64_t x44 = (x42 + x24);
+ { uint64_t x45 = (x44 >> 0x19);
+ { uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
+ { uint64_t x47 = (x31 + (0x11 * x45));
+ { uint32_t x48 = (uint32_t) (x47 >> 0x1a);
+ { uint32_t x49 = ((uint32_t)x47 & 0x3ffffff);
+ { uint32_t x50 = (x48 + x34);
+ { uint32_t x51 = (x50 >> 0x19);
+ { uint32_t x52 = (x50 & 0x1ffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e152m17_6limbs/femulDisplay.log b/src/Specific/solinas32_2e152m17_6limbs/femulDisplay.log
new file mode 100644
index 000000000..434a3892a
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
+ uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x11 * ((uint64_t)x12 * x22)));
+ uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0x11 * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
+ uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0x11 * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
+ uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x11 * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ uint64_t x29 = (((uint64_t)x5 * x15) + (0x11 * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
+ uint64_t x30 = (x29 >> 0x1a);
+ uint32_t x31 = ((uint32_t)x29 & 0x3ffffff);
+ uint64_t x32 = (x30 + x28);
+ uint64_t x33 = (x32 >> 0x19);
+ uint32_t x34 = ((uint32_t)x32 & 0x1ffffff);
+ uint64_t x35 = (x33 + x27);
+ uint64_t x36 = (x35 >> 0x19);
+ uint32_t x37 = ((uint32_t)x35 & 0x1ffffff);
+ uint64_t x38 = (x36 + x26);
+ uint64_t x39 = (x38 >> 0x1a);
+ uint32_t x40 = ((uint32_t)x38 & 0x3ffffff);
+ uint64_t x41 = (x39 + x25);
+ uint64_t x42 = (x41 >> 0x19);
+ uint32_t x43 = ((uint32_t)x41 & 0x1ffffff);
+ uint64_t x44 = (x42 + x24);
+ uint64_t x45 = (x44 >> 0x19);
+ uint32_t x46 = ((uint32_t)x44 & 0x1ffffff);
+ uint64_t x47 = (x31 + (0x11 * x45));
+ uint32_t x48 = (uint32_t) (x47 >> 0x1a);
+ uint32_t x49 = ((uint32_t)x47 & 0x3ffffff);
+ uint32_t x50 = (x48 + x34);
+ uint32_t x51 = (x50 >> 0x19);
+ uint32_t x52 = (x50 & 0x1ffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17_6limbs/fesquare.c b/src/Specific/solinas32_2e152m17_6limbs/fesquare.c
new file mode 100644
index 000000000..3d2387de8
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
+ { uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * ((uint64_t)x9 * x9)));
+ { uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
+ { uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x9) + ((0x2 * ((uint64_t)x10 * x10)) + ((uint64_t)x9 * x8)))));
+ { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
+ { uint64_t x16 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
+ { uint64_t x17 = (x16 >> 0x1a);
+ { uint32_t x18 = ((uint32_t)x16 & 0x3ffffff);
+ { uint64_t x19 = (x17 + x15);
+ { uint64_t x20 = (x19 >> 0x19);
+ { uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ { uint64_t x22 = (x20 + x14);
+ { uint64_t x23 = (x22 >> 0x19);
+ { uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ { uint64_t x25 = (x23 + x13);
+ { uint64_t x26 = (x25 >> 0x1a);
+ { uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
+ { uint64_t x28 = (x26 + x12);
+ { uint64_t x29 = (x28 >> 0x19);
+ { uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ { uint64_t x31 = (x29 + x11);
+ { uint64_t x32 = (x31 >> 0x19);
+ { uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ { uint64_t x34 = (x18 + (0x11 * x32));
+ { uint32_t x35 = (uint32_t) (x34 >> 0x1a);
+ { uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
+ { uint32_t x37 = (x35 + x21);
+ { uint32_t x38 = (x37 >> 0x19);
+ { uint32_t x39 = (x37 & 0x1ffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e152m17_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e152m17_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..cc5bc86f5
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
+ uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x11 * ((uint64_t)x9 * x9)));
+ uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x11 * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
+ uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0x11 * (((uint64_t)x8 * x9) + ((0x2 * ((uint64_t)x10 * x10)) + ((uint64_t)x9 * x8)))));
+ uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x11 * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
+ uint64_t x16 = (((uint64_t)x2 * x2) + (0x11 * ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
+ uint64_t x17 = (x16 >> 0x1a);
+ uint32_t x18 = ((uint32_t)x16 & 0x3ffffff);
+ uint64_t x19 = (x17 + x15);
+ uint64_t x20 = (x19 >> 0x19);
+ uint32_t x21 = ((uint32_t)x19 & 0x1ffffff);
+ uint64_t x22 = (x20 + x14);
+ uint64_t x23 = (x22 >> 0x19);
+ uint32_t x24 = ((uint32_t)x22 & 0x1ffffff);
+ uint64_t x25 = (x23 + x13);
+ uint64_t x26 = (x25 >> 0x1a);
+ uint32_t x27 = ((uint32_t)x25 & 0x3ffffff);
+ uint64_t x28 = (x26 + x12);
+ uint64_t x29 = (x28 >> 0x19);
+ uint32_t x30 = ((uint32_t)x28 & 0x1ffffff);
+ uint64_t x31 = (x29 + x11);
+ uint64_t x32 = (x31 >> 0x19);
+ uint32_t x33 = ((uint32_t)x31 & 0x1ffffff);
+ uint64_t x34 = (x18 + (0x11 * x32));
+ uint32_t x35 = (uint32_t) (x34 >> 0x1a);
+ uint32_t x36 = ((uint32_t)x34 & 0x3ffffff);
+ uint32_t x37 = (x35 + x21);
+ uint32_t x38 = (x37 >> 0x19);
+ uint32_t x39 = (x37 & 0x1ffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17_6limbs/fesub.c b/src/Specific/solinas32_2e152m17_6limbs/fesub.c
new file mode 100644
index 000000000..1153d1999
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = ((0x7ffffde + x5) - x15);
+ out[1] = ((0x3fffffe + x7) - x17);
+ out[2] = ((0x3fffffe + x9) - x19);
+ out[3] = ((0x7fffffe + x11) - x21);
+ out[4] = ((0x3fffffe + x13) - x23);
+ out[5] = ((0x3fffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e152m17_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e152m17_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..535c511cc
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x3fffffe + x12) - x22), ((0x3fffffe + x13) - x23), ((0x7fffffe + x11) - x21), ((0x3fffffe + x9) - x19), ((0x3fffffe + x7) - x17), ((0x7ffffde + x5) - x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e152m17_6limbs/freeze.c b/src/Specific/solinas32_2e152m17_6limbs/freeze.c
new file mode 100644
index 000000000..539597636
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffef);
+ { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1ffffff);
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffff);
+ { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffff);
+ { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffff);
+ { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffff);
+ { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ { uint32_t x30 = (x29 & 0x3ffffef);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint32_t x34 = (x29 & 0x1ffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint32_t x38 = (x29 & 0x1ffffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint32_t x42 = (x29 & 0x3ffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint32_t x46 = (x29 & 0x1ffffff);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint32_t x50 = (x29 & 0x1ffffff);
+ { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e152m17_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e152m17_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..5d8bdcde7
--- /dev/null
+++ b/src/Specific/solinas32_2e152m17_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffef);
+ uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x1ffffff);
+ uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffff);
+ uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffff);
+ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffff);
+ uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffff);
+ uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ uint32_t x30 = (x29 & 0x3ffffef);
+ uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint32_t x34 = (x29 & 0x1ffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint32_t x38 = (x29 & 0x1ffffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint32_t x42 = (x29 & 0x3ffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint32_t x46 = (x29 & 0x1ffffff);
+ uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint32_t x50 = (x29 & 0x1ffffff);
+ uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 25 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15_6limbs/feadd.c b/src/Specific/solinas32_2e158m15_6limbs/feadd.c
new file mode 100644
index 000000000..5b654b294
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e158m15_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e158m15_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..1084b2659
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15_6limbs/femul.c b/src/Specific/solinas32_2e158m15_6limbs/femul.c
new file mode 100644
index 000000000..353afb2a8
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ { uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
+ { uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0xf * ((uint64_t)x12 * x22)));
+ { uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0xf * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
+ { uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0xf * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
+ { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0xf * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ { uint64_t x29 = (((uint64_t)x5 * x15) + (0xf * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
+ { uint64_t x30 = (x29 >> 0x1b);
+ { uint32_t x31 = ((uint32_t)x29 & 0x7ffffff);
+ { uint64_t x32 = (x30 + x28);
+ { uint64_t x33 = (x32 >> 0x1a);
+ { uint32_t x34 = ((uint32_t)x32 & 0x3ffffff);
+ { uint64_t x35 = (x33 + x27);
+ { uint64_t x36 = (x35 >> 0x1a);
+ { uint32_t x37 = ((uint32_t)x35 & 0x3ffffff);
+ { uint64_t x38 = (x36 + x26);
+ { uint64_t x39 = (x38 >> 0x1b);
+ { uint32_t x40 = ((uint32_t)x38 & 0x7ffffff);
+ { uint64_t x41 = (x39 + x25);
+ { uint64_t x42 = (x41 >> 0x1a);
+ { uint32_t x43 = ((uint32_t)x41 & 0x3ffffff);
+ { uint64_t x44 = (x42 + x24);
+ { uint64_t x45 = (x44 >> 0x1a);
+ { uint32_t x46 = ((uint32_t)x44 & 0x3ffffff);
+ { uint64_t x47 = (x31 + (0xf * x45));
+ { uint32_t x48 = (uint32_t) (x47 >> 0x1b);
+ { uint32_t x49 = ((uint32_t)x47 & 0x7ffffff);
+ { uint32_t x50 = (x48 + x34);
+ { uint32_t x51 = (x50 >> 0x1a);
+ { uint32_t x52 = (x50 & 0x3ffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e158m15_6limbs/femulDisplay.log b/src/Specific/solinas32_2e158m15_6limbs/femulDisplay.log
new file mode 100644
index 000000000..83d0d6f1e
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x24 = (((uint64_t)x5 * x22) + ((0x2 * ((uint64_t)x7 * x23)) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + ((0x2 * ((uint64_t)x13 * x17)) + ((uint64_t)x12 * x15))))));
+ uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + (((uint64_t)x9 * x19) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0xf * ((uint64_t)x12 * x22)));
+ uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0xf * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
+ uint64_t x27 = ((((uint64_t)x5 * x19) + ((0x2 * ((uint64_t)x7 * x17)) + ((uint64_t)x9 * x15))) + (0xf * (((uint64_t)x11 * x22) + ((0x2 * ((uint64_t)x13 * x23)) + ((uint64_t)x12 * x21)))));
+ uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0xf * (((uint64_t)x9 * x22) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + ((uint64_t)x12 * x19))))));
+ uint64_t x29 = (((uint64_t)x5 * x15) + (0xf * ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
+ uint64_t x30 = (x29 >> 0x1b);
+ uint32_t x31 = ((uint32_t)x29 & 0x7ffffff);
+ uint64_t x32 = (x30 + x28);
+ uint64_t x33 = (x32 >> 0x1a);
+ uint32_t x34 = ((uint32_t)x32 & 0x3ffffff);
+ uint64_t x35 = (x33 + x27);
+ uint64_t x36 = (x35 >> 0x1a);
+ uint32_t x37 = ((uint32_t)x35 & 0x3ffffff);
+ uint64_t x38 = (x36 + x26);
+ uint64_t x39 = (x38 >> 0x1b);
+ uint32_t x40 = ((uint32_t)x38 & 0x7ffffff);
+ uint64_t x41 = (x39 + x25);
+ uint64_t x42 = (x41 >> 0x1a);
+ uint32_t x43 = ((uint32_t)x41 & 0x3ffffff);
+ uint64_t x44 = (x42 + x24);
+ uint64_t x45 = (x44 >> 0x1a);
+ uint32_t x46 = ((uint32_t)x44 & 0x3ffffff);
+ uint64_t x47 = (x31 + (0xf * x45));
+ uint32_t x48 = (uint32_t) (x47 >> 0x1b);
+ uint32_t x49 = ((uint32_t)x47 & 0x7ffffff);
+ uint32_t x50 = (x48 + x34);
+ uint32_t x51 = (x50 >> 0x1a);
+ uint32_t x52 = (x50 & 0x3ffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15_6limbs/fesquare.c b/src/Specific/solinas32_2e158m15_6limbs/fesquare.c
new file mode 100644
index 000000000..588f6154b
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
+ { uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xf * ((uint64_t)x9 * x9)));
+ { uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xf * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
+ { uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x9) + ((0x2 * ((uint64_t)x10 * x10)) + ((uint64_t)x9 * x8)))));
+ { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
+ { uint64_t x16 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
+ { uint64_t x17 = (x16 >> 0x1b);
+ { uint32_t x18 = ((uint32_t)x16 & 0x7ffffff);
+ { uint64_t x19 = (x17 + x15);
+ { uint64_t x20 = (x19 >> 0x1a);
+ { uint32_t x21 = ((uint32_t)x19 & 0x3ffffff);
+ { uint64_t x22 = (x20 + x14);
+ { uint64_t x23 = (x22 >> 0x1a);
+ { uint32_t x24 = ((uint32_t)x22 & 0x3ffffff);
+ { uint64_t x25 = (x23 + x13);
+ { uint64_t x26 = (x25 >> 0x1b);
+ { uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
+ { uint64_t x28 = (x26 + x12);
+ { uint64_t x29 = (x28 >> 0x1a);
+ { uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
+ { uint64_t x31 = (x29 + x11);
+ { uint64_t x32 = (x31 >> 0x1a);
+ { uint32_t x33 = ((uint32_t)x31 & 0x3ffffff);
+ { uint64_t x34 = (x18 + (0xf * x32));
+ { uint32_t x35 = (uint32_t) (x34 >> 0x1b);
+ { uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
+ { uint32_t x37 = (x35 + x21);
+ { uint32_t x38 = (x37 >> 0x1a);
+ { uint32_t x39 = (x37 & 0x3ffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e158m15_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e158m15_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..c77e995f1
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x11 = (((uint64_t)x2 * x9) + ((0x2 * ((uint64_t)x4 * x10)) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + ((0x2 * ((uint64_t)x10 * x4)) + ((uint64_t)x9 * x2))))));
+ uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + (((uint64_t)x6 * x6) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0xf * ((uint64_t)x9 * x9)));
+ uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0xf * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
+ uint64_t x14 = ((((uint64_t)x2 * x6) + ((0x2 * ((uint64_t)x4 * x4)) + ((uint64_t)x6 * x2))) + (0xf * (((uint64_t)x8 * x9) + ((0x2 * ((uint64_t)x10 * x10)) + ((uint64_t)x9 * x8)))));
+ uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0xf * (((uint64_t)x6 * x9) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + ((uint64_t)x9 * x6))))));
+ uint64_t x16 = (((uint64_t)x2 * x2) + (0xf * ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
+ uint64_t x17 = (x16 >> 0x1b);
+ uint32_t x18 = ((uint32_t)x16 & 0x7ffffff);
+ uint64_t x19 = (x17 + x15);
+ uint64_t x20 = (x19 >> 0x1a);
+ uint32_t x21 = ((uint32_t)x19 & 0x3ffffff);
+ uint64_t x22 = (x20 + x14);
+ uint64_t x23 = (x22 >> 0x1a);
+ uint32_t x24 = ((uint32_t)x22 & 0x3ffffff);
+ uint64_t x25 = (x23 + x13);
+ uint64_t x26 = (x25 >> 0x1b);
+ uint32_t x27 = ((uint32_t)x25 & 0x7ffffff);
+ uint64_t x28 = (x26 + x12);
+ uint64_t x29 = (x28 >> 0x1a);
+ uint32_t x30 = ((uint32_t)x28 & 0x3ffffff);
+ uint64_t x31 = (x29 + x11);
+ uint64_t x32 = (x31 >> 0x1a);
+ uint32_t x33 = ((uint32_t)x31 & 0x3ffffff);
+ uint64_t x34 = (x18 + (0xf * x32));
+ uint32_t x35 = (uint32_t) (x34 >> 0x1b);
+ uint32_t x36 = ((uint32_t)x34 & 0x7ffffff);
+ uint32_t x37 = (x35 + x21);
+ uint32_t x38 = (x37 >> 0x1a);
+ uint32_t x39 = (x37 & 0x3ffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15_6limbs/fesub.c b/src/Specific/solinas32_2e158m15_6limbs/fesub.c
new file mode 100644
index 000000000..2da1f8617
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = ((0xfffffe2 + x5) - x15);
+ out[1] = ((0x7fffffe + x7) - x17);
+ out[2] = ((0x7fffffe + x9) - x19);
+ out[3] = ((0xffffffe + x11) - x21);
+ out[4] = ((0x7fffffe + x13) - x23);
+ out[5] = ((0x7fffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e158m15_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e158m15_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..284622c58
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x7fffffe + x12) - x22), ((0x7fffffe + x13) - x23), ((0xffffffe + x11) - x21), ((0x7fffffe + x9) - x19), ((0x7fffffe + x7) - x17), ((0xfffffe2 + x5) - x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e158m15_6limbs/freeze.c b/src/Specific/solinas32_2e158m15_6limbs/freeze.c
new file mode 100644
index 000000000..c465eb5ed
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff1);
+ { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffff);
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffff);
+ { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x7ffffff);
+ { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x3ffffff);
+ { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffff);
+ { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ { uint32_t x30 = (x29 & 0x7fffff1);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint32_t x34 = (x29 & 0x3ffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint32_t x38 = (x29 & 0x3ffffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint32_t x42 = (x29 & 0x7ffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint32_t x46 = (x29 & 0x3ffffff);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint32_t x50 = (x29 & 0x3ffffff);
+ { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e158m15_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e158m15_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..9df853258
--- /dev/null
+++ b/src/Specific/solinas32_2e158m15_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffff1);
+ uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffff);
+ uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffff);
+ uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0x7ffffff);
+ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0x3ffffff);
+ uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffff);
+ uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ uint32_t x30 = (x29 & 0x7fffff1);
+ uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint32_t x34 = (x29 & 0x3ffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint32_t x38 = (x29 & 0x3ffffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint32_t x42 = (x29 & 0x7ffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint32_t x46 = (x29 & 0x3ffffff);
+ uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint32_t x50 = (x29 & 0x3ffffff);
+ uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 26 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5_6limbs/feadd.c b/src/Specific/solinas32_2e166m5_6limbs/feadd.c
new file mode 100644
index 000000000..5b654b294
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e166m5_6limbs/feaddDisplay.log b/src/Specific/solinas32_2e166m5_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..1084b2659
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5_6limbs/femul.c b/src/Specific/solinas32_2e166m5_6limbs/femul.c
new file mode 100644
index 000000000..2d1b2d490
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ { uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
+ { uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((0x2 * ((uint64_t)x9 * x19)) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x5 * (0x2 * ((uint64_t)x12 * x22))));
+ { uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0x5 * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
+ { uint64_t x27 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + ((uint64_t)x9 * x15))) + (0x5 * (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21)))));
+ { uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x5 * ((0x2 * ((uint64_t)x9 * x22)) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (0x2 * ((uint64_t)x12 * x19)))))));
+ { ℤ x29 = (((uint64_t)x5 * x15) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
+ { uint64_t x30 = (x29 >> 0x1c);
+ { uint32_t x31 = (x29 & 0xfffffff);
+ { uint64_t x32 = (x30 + x28);
+ { uint64_t x33 = (x32 >> 0x1c);
+ { uint32_t x34 = ((uint32_t)x32 & 0xfffffff);
+ { uint64_t x35 = (x33 + x27);
+ { uint64_t x36 = (x35 >> 0x1b);
+ { uint32_t x37 = ((uint32_t)x35 & 0x7ffffff);
+ { uint64_t x38 = (x36 + x26);
+ { uint64_t x39 = (x38 >> 0x1c);
+ { uint32_t x40 = ((uint32_t)x38 & 0xfffffff);
+ { uint64_t x41 = (x39 + x25);
+ { uint64_t x42 = (x41 >> 0x1c);
+ { uint32_t x43 = ((uint32_t)x41 & 0xfffffff);
+ { uint64_t x44 = (x42 + x24);
+ { uint64_t x45 = (x44 >> 0x1b);
+ { uint32_t x46 = ((uint32_t)x44 & 0x7ffffff);
+ { uint64_t x47 = (x31 + (0x5 * x45));
+ { uint32_t x48 = (uint32_t) (x47 >> 0x1c);
+ { uint32_t x49 = ((uint32_t)x47 & 0xfffffff);
+ { uint32_t x50 = (x48 + x34);
+ { uint32_t x51 = (x50 >> 0x1c);
+ { uint32_t x52 = (x50 & 0xfffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e166m5_6limbs/femulDisplay.log b/src/Specific/solinas32_2e166m5_6limbs/femulDisplay.log
new file mode 100644
index 000000000..f4c573268
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint64_t x24 = (((uint64_t)x5 * x22) + (((uint64_t)x7 * x23) + (((uint64_t)x9 * x21) + (((uint64_t)x11 * x19) + (((uint64_t)x13 * x17) + ((uint64_t)x12 * x15))))));
+ uint64_t x25 = ((((uint64_t)x5 * x23) + (((uint64_t)x7 * x21) + ((0x2 * ((uint64_t)x9 * x19)) + (((uint64_t)x11 * x17) + ((uint64_t)x13 * x15))))) + (0x5 * (0x2 * ((uint64_t)x12 * x22))));
+ uint64_t x26 = ((((uint64_t)x5 * x21) + ((0x2 * ((uint64_t)x7 * x19)) + ((0x2 * ((uint64_t)x9 * x17)) + ((uint64_t)x11 * x15)))) + (0x5 * ((0x2 * ((uint64_t)x13 * x22)) + (0x2 * ((uint64_t)x12 * x23)))));
+ uint64_t x27 = ((((uint64_t)x5 * x19) + (((uint64_t)x7 * x17) + ((uint64_t)x9 * x15))) + (0x5 * (((uint64_t)x11 * x22) + (((uint64_t)x13 * x23) + ((uint64_t)x12 * x21)))));
+ uint64_t x28 = ((((uint64_t)x5 * x17) + ((uint64_t)x7 * x15)) + (0x5 * ((0x2 * ((uint64_t)x9 * x22)) + (((uint64_t)x11 * x23) + (((uint64_t)x13 * x21) + (0x2 * ((uint64_t)x12 * x19)))))));
+ ℤ x29 = (((uint64_t)x5 * x15) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x7 * x22)) + ((0x2 * ((uint64_t)x9 * x23)) + (((uint64_t)x11 * x21) + ((0x2 * ((uint64_t)x13 * x19)) + (0x2 * ((uint64_t)x12 * x17))))))));
+ uint64_t x30 = (x29 >> 0x1c);
+ uint32_t x31 = (x29 & 0xfffffff);
+ uint64_t x32 = (x30 + x28);
+ uint64_t x33 = (x32 >> 0x1c);
+ uint32_t x34 = ((uint32_t)x32 & 0xfffffff);
+ uint64_t x35 = (x33 + x27);
+ uint64_t x36 = (x35 >> 0x1b);
+ uint32_t x37 = ((uint32_t)x35 & 0x7ffffff);
+ uint64_t x38 = (x36 + x26);
+ uint64_t x39 = (x38 >> 0x1c);
+ uint32_t x40 = ((uint32_t)x38 & 0xfffffff);
+ uint64_t x41 = (x39 + x25);
+ uint64_t x42 = (x41 >> 0x1c);
+ uint32_t x43 = ((uint32_t)x41 & 0xfffffff);
+ uint64_t x44 = (x42 + x24);
+ uint64_t x45 = (x44 >> 0x1b);
+ uint32_t x46 = ((uint32_t)x44 & 0x7ffffff);
+ uint64_t x47 = (x31 + (0x5 * x45));
+ uint32_t x48 = (uint32_t) (x47 >> 0x1c);
+ uint32_t x49 = ((uint32_t)x47 & 0xfffffff);
+ uint32_t x50 = (x48 + x34);
+ uint32_t x51 = (x50 >> 0x1c);
+ uint32_t x52 = (x50 & 0xfffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5_6limbs/fesquare.c b/src/Specific/solinas32_2e166m5_6limbs/fesquare.c
new file mode 100644
index 000000000..a6c7d5591
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
+ { uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * (0x2 * ((uint64_t)x9 * x9))));
+ { uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x5 * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
+ { uint64_t x14 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8)))));
+ { uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * ((0x2 * ((uint64_t)x6 * x9)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (0x2 * ((uint64_t)x9 * x6)))))));
+ { ℤ x16 = (((uint64_t)x2 * x2) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
+ { uint64_t x17 = (x16 >> 0x1c);
+ { uint32_t x18 = (x16 & 0xfffffff);
+ { uint64_t x19 = (x17 + x15);
+ { uint64_t x20 = (x19 >> 0x1c);
+ { uint32_t x21 = ((uint32_t)x19 & 0xfffffff);
+ { uint64_t x22 = (x20 + x14);
+ { uint64_t x23 = (x22 >> 0x1b);
+ { uint32_t x24 = ((uint32_t)x22 & 0x7ffffff);
+ { uint64_t x25 = (x23 + x13);
+ { uint64_t x26 = (x25 >> 0x1c);
+ { uint32_t x27 = ((uint32_t)x25 & 0xfffffff);
+ { uint64_t x28 = (x26 + x12);
+ { uint64_t x29 = (x28 >> 0x1c);
+ { uint32_t x30 = ((uint32_t)x28 & 0xfffffff);
+ { uint64_t x31 = (x29 + x11);
+ { uint64_t x32 = (x31 >> 0x1b);
+ { uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
+ { uint64_t x34 = (x18 + (0x5 * x32));
+ { uint32_t x35 = (uint32_t) (x34 >> 0x1c);
+ { uint32_t x36 = ((uint32_t)x34 & 0xfffffff);
+ { uint32_t x37 = (x35 + x21);
+ { uint32_t x38 = (x37 >> 0x1c);
+ { uint32_t x39 = (x37 & 0xfffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e166m5_6limbs/fesquareDisplay.log b/src/Specific/solinas32_2e166m5_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..5b04f3bba
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x11 = (((uint64_t)x2 * x9) + (((uint64_t)x4 * x10) + (((uint64_t)x6 * x8) + (((uint64_t)x8 * x6) + (((uint64_t)x10 * x4) + ((uint64_t)x9 * x2))))));
+ uint64_t x12 = ((((uint64_t)x2 * x10) + (((uint64_t)x4 * x8) + ((0x2 * ((uint64_t)x6 * x6)) + (((uint64_t)x8 * x4) + ((uint64_t)x10 * x2))))) + (0x5 * (0x2 * ((uint64_t)x9 * x9))));
+ uint64_t x13 = ((((uint64_t)x2 * x8) + ((0x2 * ((uint64_t)x4 * x6)) + ((0x2 * ((uint64_t)x6 * x4)) + ((uint64_t)x8 * x2)))) + (0x5 * ((0x2 * ((uint64_t)x10 * x9)) + (0x2 * ((uint64_t)x9 * x10)))));
+ uint64_t x14 = ((((uint64_t)x2 * x6) + (((uint64_t)x4 * x4) + ((uint64_t)x6 * x2))) + (0x5 * (((uint64_t)x8 * x9) + (((uint64_t)x10 * x10) + ((uint64_t)x9 * x8)))));
+ uint64_t x15 = ((((uint64_t)x2 * x4) + ((uint64_t)x4 * x2)) + (0x5 * ((0x2 * ((uint64_t)x6 * x9)) + (((uint64_t)x8 * x10) + (((uint64_t)x10 * x8) + (0x2 * ((uint64_t)x9 * x6)))))));
+ ℤ x16 = (((uint64_t)x2 * x2) +ℤ (0x5 *ℤ ((0x2 * ((uint64_t)x4 * x9)) + ((0x2 * ((uint64_t)x6 * x10)) + (((uint64_t)x8 * x8) + ((0x2 * ((uint64_t)x10 * x6)) + (0x2 * ((uint64_t)x9 * x4))))))));
+ uint64_t x17 = (x16 >> 0x1c);
+ uint32_t x18 = (x16 & 0xfffffff);
+ uint64_t x19 = (x17 + x15);
+ uint64_t x20 = (x19 >> 0x1c);
+ uint32_t x21 = ((uint32_t)x19 & 0xfffffff);
+ uint64_t x22 = (x20 + x14);
+ uint64_t x23 = (x22 >> 0x1b);
+ uint32_t x24 = ((uint32_t)x22 & 0x7ffffff);
+ uint64_t x25 = (x23 + x13);
+ uint64_t x26 = (x25 >> 0x1c);
+ uint32_t x27 = ((uint32_t)x25 & 0xfffffff);
+ uint64_t x28 = (x26 + x12);
+ uint64_t x29 = (x28 >> 0x1c);
+ uint32_t x30 = ((uint32_t)x28 & 0xfffffff);
+ uint64_t x31 = (x29 + x11);
+ uint64_t x32 = (x31 >> 0x1b);
+ uint32_t x33 = ((uint32_t)x31 & 0x7ffffff);
+ uint64_t x34 = (x18 + (0x5 * x32));
+ uint32_t x35 = (uint32_t) (x34 >> 0x1c);
+ uint32_t x36 = ((uint32_t)x34 & 0xfffffff);
+ uint32_t x37 = (x35 + x21);
+ uint32_t x38 = (x37 >> 0x1c);
+ uint32_t x39 = (x37 & 0xfffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5_6limbs/fesub.c b/src/Specific/solinas32_2e166m5_6limbs/fesub.c
new file mode 100644
index 000000000..6156c0d99
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint32_t out[6], const uint32_t in1[6], const uint32_t in2[6]) {
+ { const uint32_t x12 = in1[5];
+ { const uint32_t x13 = in1[4];
+ { const uint32_t x11 = in1[3];
+ { const uint32_t x9 = in1[2];
+ { const uint32_t x7 = in1[1];
+ { const uint32_t x5 = in1[0];
+ { const uint32_t x22 = in2[5];
+ { const uint32_t x23 = in2[4];
+ { const uint32_t x21 = in2[3];
+ { const uint32_t x19 = in2[2];
+ { const uint32_t x17 = in2[1];
+ { const uint32_t x15 = in2[0];
+ out[0] = ((Const 536870902 + x5) - x15);
+ out[1] = ((0x1ffffffe + x7) - x17);
+ out[2] = ((0xffffffe + x9) - x19);
+ out[3] = ((0x1ffffffe + x11) - x21);
+ out[4] = ((0x1ffffffe + x13) - x23);
+ out[5] = ((0xffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e166m5_6limbs/fesubDisplay.log b/src/Specific/solinas32_2e166m5_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..2a8b00026
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0xffffffe + x12) - x22), ((0x1ffffffe + x13) - x23), ((0x1ffffffe + x11) - x21), ((0xffffffe + x9) - x19), ((0x1ffffffe + x7) - x17), ((Const 536870902 + x5) - x15)))
+(x, x0)%core
+ : word32 * word32 * word32 * word32 * word32 * word32 → word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas32_2e166m5_6limbs/freeze.c b/src/Specific/solinas32_2e166m5_6limbs/freeze.c
new file mode 100644
index 000000000..546d09de8
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint32_t out[6], const uint32_t in1[6]) {
+ { const uint32_t x9 = in1[5];
+ { const uint32_t x10 = in1[4];
+ { const uint32_t x8 = in1[3];
+ { const uint32_t x6 = in1[2];
+ { const uint32_t x4 = in1[1];
+ { const uint32_t x2 = in1[0];
+ { uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 268435451);
+ { uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0xfffffff);
+ { uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x7ffffff);
+ { uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0xfffffff);
+ { uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0xfffffff);
+ { uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x7ffffff);
+ { uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ { uint32_t x30 = (x29 & Const 268435451);
+ { uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint32_t x34 = (x29 & 0xfffffff);
+ { uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint32_t x38 = (x29 & 0x7ffffff);
+ { uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint32_t x42 = (x29 & 0xfffffff);
+ { uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint32_t x46 = (x29 & 0xfffffff);
+ { uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint32_t x50 = (x29 & 0x7ffffff);
+ { uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas32_2e166m5_6limbs/freezeDisplay.log b/src/Specific/solinas32_2e166m5_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..005fc1b4b
--- /dev/null
+++ b/src/Specific/solinas32_2e166m5_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word32 * word32 * word32 * word32 * word32 * word32,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint32_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x2, Const 268435451);
+ uint32_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x13, Return x4, 0xfffffff);
+ uint32_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x16, Return x6, 0x7ffffff);
+ uint32_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x19, Return x8, 0xfffffff);
+ uint32_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x22, Return x10, 0xfffffff);
+ uint32_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x25, Return x9, 0x7ffffff);
+ uint32_t x29 = cmovznz32(x28, 0x0, 0xffffffff);
+ uint32_t x30 = (x29 & Const 268435451);
+ uint32_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint32_t x34 = (x29 & 0xfffffff);
+ uint32_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint32_t x38 = (x29 & 0x7ffffff);
+ uint32_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint32_t x42 = (x29 & 0xfffffff);
+ uint32_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint32_t x46 = (x29 & 0xfffffff);
+ uint32_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 28 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint32_t x50 = (x29 & 0x7ffffff);
+ uint32_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 27 (Syntax.TWord 3) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 5) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word32 * word32 * word32 * word32 * word32 * word32 → ReturnType (uint32_t * uint32_t * uint32_t * uint32_t * uint32_t * uint32_t)
diff --git a/src/Specific/solinas64_2e129m25_4limbs/fesub.c b/src/Specific/solinas64_2e129m25_4limbs/fesub.c
index 30af6cbfe..ce33d3af7 100644
--- a/src/Specific/solinas64_2e129m25_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e129m25_4limbs/fesub.c
@@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 17179869134 + x5) - x11);
- out[1] = ((Const 8589934590 + x7) - x13);
- out[2] = ((Const 8589934590 + x9) - x15);
- out[3] = ((Const 8589934590 + x8) - x14);
+ out[0] = ((0x3ffffffce + x5) - x11);
+ out[1] = ((0x1fffffffe + x7) - x13);
+ out[2] = ((0x1fffffffe + x9) - x15);
+ out[3] = ((0x1fffffffe + x8) - x14);
}}}}}}}}
}
diff --git a/src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.log
index 7ebc05a33..9a0916e14 100644
--- a/src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e129m25_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((Const 8589934590 + x8) - x14), ((Const 8589934590 + x9) - x15), ((Const 8589934590 + x7) - x13), ((Const 17179869134 + x5) - x11)))
+ (((0x1fffffffe + x8) - x14), ((0x1fffffffe + x9) - x15), ((0x1fffffffe + x7) - x13), ((0x3ffffffce + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e130m5_4limbs/fesub.c b/src/Specific/solinas64_2e130m5_4limbs/fesub.c
index 8b94725d5..776a276d7 100644
--- a/src/Specific/solinas64_2e130m5_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e130m5_4limbs/fesub.c
@@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 17179869174 + x5) - x11);
- out[1] = ((Const 8589934590 + x7) - x13);
- out[2] = ((Const 17179869182 + x9) - x15);
- out[3] = ((Const 8589934590 + x8) - x14);
+ out[0] = ((0x3fffffff6 + x5) - x11);
+ out[1] = ((0x1fffffffe + x7) - x13);
+ out[2] = ((0x3fffffffe + x9) - x15);
+ out[3] = ((0x1fffffffe + x8) - x14);
}}}}}}}}
}
diff --git a/src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.log
index 80b79f572..dec95f014 100644
--- a/src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e130m5_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((Const 8589934590 + x8) - x14), ((Const 17179869182 + x9) - x15), ((Const 8589934590 + x7) - x13), ((Const 17179869174 + x5) - x11)))
+ (((0x1fffffffe + x8) - x14), ((0x3fffffffe + x9) - x15), ((0x1fffffffe + x7) - x13), ((0x3fffffff6 + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e137m13_3limbs/fesub.c b/src/Specific/solinas64_2e137m13_3limbs/fesub.c
index d0e17b67a..43c7089ba 100644
--- a/src/Specific/solinas64_2e137m13_3limbs/fesub.c
+++ b/src/Specific/solinas64_2e137m13_3limbs/fesub.c
@@ -5,8 +5,8 @@ static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3])
{ const uint64_t x10 = in2[2];
{ const uint64_t x11 = in2[1];
{ const uint64_t x9 = in2[0];
- out[0] = ((Const 140737488355302 + x5) - x9);
+ out[0] = ((0x7fffffffffe6 + x5) - x9);
out[1] = ((0x7ffffffffffe + x7) - x11);
- out[2] = ((Const 70368744177662 + x6) - x10);
+ out[2] = ((0x3ffffffffffe + x6) - x10);
}}}}}}
}
diff --git a/src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.log b/src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.log
index 750b6f1c9..d9a19e025 100644
--- a/src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e137m13_3limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((Const 70368744177662 + x6) - x10), ((0x7ffffffffffe + x7) - x11), ((Const 140737488355302 + x5) - x9)))
+ (((0x3ffffffffffe + x6) - x10), ((0x7ffffffffffe + x7) - x11), ((0x7fffffffffe6 + x5) - x9)))
(x, x0)%core
: word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e137m13_3limbs/freeze.c b/src/Specific/solinas64_2e137m13_3limbs/freeze.c
index 1762cd992..ca0572fce 100644
--- a/src/Specific/solinas64_2e137m13_3limbs/freeze.c
+++ b/src/Specific/solinas64_2e137m13_3limbs/freeze.c
@@ -2,11 +2,11 @@ static void freeze(uint64_t out[3], const uint64_t in1[3]) {
{ const uint64_t x3 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 70368744177651);
+ { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffff3);
{ uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3fffffffffff);
{ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x1fffffffffff);
{ uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & Const 70368744177651);
+ { uint64_t x15 = (x14 & 0x3ffffffffff3);
{ uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
{ uint64_t x19 = (x14 & 0x3fffffffffff);
{ uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
diff --git a/src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.log b/src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.log
index 65caf0d76..b748f9e0f 100644
--- a/src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e137m13_3limbs/freezeDisplay.log
@@ -2,11 +2,11 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 70368744177651);
+ uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffff3);
uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x3fffffffffff);
uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x1fffffffffff);
uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & Const 70368744177651);
+ uint64_t x15 = (x14 & 0x3ffffffffff3);
uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
uint64_t x19 = (x14 & 0x3fffffffffff);
uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
diff --git a/src/Specific/solinas64_2e140m27_3limbs/fesub.c b/src/Specific/solinas64_2e140m27_3limbs/fesub.c
index aca5472d7..da837b1c9 100644
--- a/src/Specific/solinas64_2e140m27_3limbs/fesub.c
+++ b/src/Specific/solinas64_2e140m27_3limbs/fesub.c
@@ -5,7 +5,7 @@ static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3])
{ const uint64_t x10 = in2[2];
{ const uint64_t x11 = in2[1];
{ const uint64_t x9 = in2[0];
- out[0] = ((Const 281474976710602 + x5) - x9);
+ out[0] = ((0xffffffffffca + x5) - x9);
out[1] = ((0xfffffffffffe + x7) - x11);
out[2] = ((0x7ffffffffffe + x6) - x10);
}}}}}}
diff --git a/src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.log b/src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.log
index a63e637f0..12210376d 100644
--- a/src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e140m27_3limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0x7ffffffffffe + x6) - x10), ((0xfffffffffffe + x7) - x11), ((Const 281474976710602 + x5) - x9)))
+ (((0x7ffffffffffe + x6) - x10), ((0xfffffffffffe + x7) - x11), ((0xffffffffffca + x5) - x9)))
(x, x0)%core
: word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e140m27_3limbs/freeze.c b/src/Specific/solinas64_2e140m27_3limbs/freeze.c
index 23f8b12ef..0e10c06cc 100644
--- a/src/Specific/solinas64_2e140m27_3limbs/freeze.c
+++ b/src/Specific/solinas64_2e140m27_3limbs/freeze.c
@@ -2,11 +2,11 @@ static void freeze(uint64_t out[3], const uint64_t in1[3]) {
{ const uint64_t x3 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 140737488355301);
+ { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffe5);
{ uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7fffffffffff);
{ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3fffffffffff);
{ uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & Const 140737488355301);
+ { uint64_t x15 = (x14 & 0x7fffffffffe5);
{ uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
{ uint64_t x19 = (x14 & 0x7fffffffffff);
{ uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
diff --git a/src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.log b/src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.log
index d331ff3e9..15ce8018a 100644
--- a/src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e140m27_3limbs/freezeDisplay.log
@@ -2,11 +2,11 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 140737488355301);
+ uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffe5);
uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x7fffffffffff);
uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 46 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3fffffffffff);
uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & Const 140737488355301);
+ uint64_t x15 = (x14 & 0x7fffffffffe5);
uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
uint64_t x19 = (x14 & 0x7fffffffffff);
uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
diff --git a/src/Specific/solinas64_2e141m9_4limbs/fesub.c b/src/Specific/solinas64_2e141m9_4limbs/fesub.c
index 41b96d6e2..1cd5e39b5 100644
--- a/src/Specific/solinas64_2e141m9_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e141m9_4limbs/fesub.c
@@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 137438953454 + x5) - x11);
+ out[0] = ((0x1fffffffee + x5) - x11);
out[1] = ((0xffffffffe + x7) - x13);
out[2] = ((0xffffffffe + x9) - x15);
out[3] = ((0xffffffffe + x8) - x14);
diff --git a/src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.log
index 05bca3271..aaaa3a8f3 100644
--- a/src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e141m9_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xffffffffe + x8) - x14), ((0xffffffffe + x9) - x15), ((0xffffffffe + x7) - x13), ((Const 137438953454 + x5) - x11)))
+ (((0xffffffffe + x8) - x14), ((0xffffffffe + x9) - x15), ((0xffffffffe + x7) - x13), ((0x1fffffffee + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m3_4limbs/fesub.c b/src/Specific/solinas64_2e150m3_4limbs/fesub.c
index b6f1cd9d8..5a767e64f 100644
--- a/src/Specific/solinas64_2e150m3_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e150m3_4limbs/fesub.c
@@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 549755813882 + x5) - x11);
- out[1] = ((Const 274877906942 + x7) - x13);
+ out[0] = ((0x7ffffffffa + x5) - x11);
+ out[1] = ((0x3ffffffffe + x7) - x13);
out[2] = ((0x7ffffffffe + x9) - x15);
- out[3] = ((Const 274877906942 + x8) - x14);
+ out[3] = ((0x3ffffffffe + x8) - x14);
}}}}}}}}
}
diff --git a/src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.log
index 99c32217b..798f08921 100644
--- a/src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e150m3_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((Const 274877906942 + x8) - x14), ((0x7ffffffffe + x9) - x15), ((Const 274877906942 + x7) - x13), ((Const 549755813882 + x5) - x11)))
+ (((0x3ffffffffe + x8) - x14), ((0x7ffffffffe + x9) - x15), ((0x3ffffffffe + x7) - x13), ((0x7ffffffffa + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e150m5_4limbs/fesub.c b/src/Specific/solinas64_2e150m5_4limbs/fesub.c
index 4f46cac37..6417ee1c0 100644
--- a/src/Specific/solinas64_2e150m5_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e150m5_4limbs/fesub.c
@@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 549755813878 + x5) - x11);
- out[1] = ((Const 274877906942 + x7) - x13);
+ out[0] = ((0x7ffffffff6 + x5) - x11);
+ out[1] = ((0x3ffffffffe + x7) - x13);
out[2] = ((0x7ffffffffe + x9) - x15);
- out[3] = ((Const 274877906942 + x8) - x14);
+ out[3] = ((0x3ffffffffe + x8) - x14);
}}}}}}}}
}
diff --git a/src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.log
index 0a073b8d6..f2e7599a7 100644
--- a/src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e150m5_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((Const 274877906942 + x8) - x14), ((0x7ffffffffe + x9) - x15), ((Const 274877906942 + x7) - x13), ((Const 549755813878 + x5) - x11)))
+ (((0x3ffffffffe + x8) - x14), ((0x7ffffffffe + x9) - x15), ((0x3ffffffffe + x7) - x13), ((0x7ffffffff6 + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e152m17_3limbs/fesub.c b/src/Specific/solinas64_2e152m17_3limbs/fesub.c
index 41457dd62..72692ad0b 100644
--- a/src/Specific/solinas64_2e152m17_3limbs/fesub.c
+++ b/src/Specific/solinas64_2e152m17_3limbs/fesub.c
@@ -5,7 +5,7 @@ static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3])
{ const uint64_t x10 = in2[2];
{ const uint64_t x11 = in2[1];
{ const uint64_t x9 = in2[0];
- out[0] = ((Const 4503599627370462 + x5) - x9);
+ out[0] = ((0xfffffffffffde + x5) - x9);
out[1] = ((0xffffffffffffe + x7) - x11);
out[2] = ((0x7fffffffffffe + x6) - x10);
}}}}}}
diff --git a/src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.log b/src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.log
index 8ac453f99..36d87ccd5 100644
--- a/src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e152m17_3limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0x7fffffffffffe + x6) - x10), ((0xffffffffffffe + x7) - x11), ((Const 4503599627370462 + x5) - x9)))
+ (((0x7fffffffffffe + x6) - x10), ((0xffffffffffffe + x7) - x11), ((0xfffffffffffde + x5) - x9)))
(x, x0)%core
: word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e152m17_3limbs/freeze.c b/src/Specific/solinas64_2e152m17_3limbs/freeze.c
index a0c426f08..10a1650e5 100644
--- a/src/Specific/solinas64_2e152m17_3limbs/freeze.c
+++ b/src/Specific/solinas64_2e152m17_3limbs/freeze.c
@@ -2,11 +2,11 @@ static void freeze(uint64_t out[3], const uint64_t in1[3]) {
{ const uint64_t x3 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x6; uint8_t x7 = _subborrow_u51(0x0, x2, Const 2251799813685231, &x6);
+ { uint64_t x6; uint8_t x7 = _subborrow_u51(0x0, x2, 0x7ffffffffffef, &x6);
{ uint64_t x9; uint8_t x10 = _subborrow_u51(x7, x4, 0x7ffffffffffff, &x9);
{ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffffff);
{ uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & Const 2251799813685231);
+ { uint64_t x15 = (x14 & 0x7ffffffffffef);
{ uint64_t x17; uint8_t x18 = _addcarryx_u51(0x0, x6, x15, &x17);
{ uint64_t x19 = (x14 & 0x7ffffffffffff);
{ uint64_t x21; uint8_t x22 = _addcarryx_u51(x18, x9, x19, &x21);
diff --git a/src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.log b/src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.log
index a69e92894..ddd32769a 100644
--- a/src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e152m17_3limbs/freezeDisplay.log
@@ -2,11 +2,11 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = subborrow_u51(0x0, x2, Const 2251799813685231);
+ uint64_t x6, uint8_t x7 = subborrow_u51(0x0, x2, 0x7ffffffffffef);
uint64_t x9, uint8_t x10 = subborrow_u51(x7, x4, 0x7ffffffffffff);
uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 50 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0x3ffffffffffff);
uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & Const 2251799813685231);
+ uint64_t x15 = (x14 & 0x7ffffffffffef);
uint64_t x17, uint8_t x18 = addcarryx_u51(0x0, x6, x15);
uint64_t x19 = (x14 & 0x7ffffffffffff);
uint64_t x21, uint8_t x22 = addcarryx_u51(x18, x9, x19);
diff --git a/src/Specific/solinas64_2e158m15_3limbs/fesub.c b/src/Specific/solinas64_2e158m15_3limbs/fesub.c
index efaadd2d5..54d3f502f 100644
--- a/src/Specific/solinas64_2e158m15_3limbs/fesub.c
+++ b/src/Specific/solinas64_2e158m15_3limbs/fesub.c
@@ -5,7 +5,7 @@ static void fesub(uint64_t out[3], const uint64_t in1[3], const uint64_t in2[3])
{ const uint64_t x10 = in2[2];
{ const uint64_t x11 = in2[1];
{ const uint64_t x9 = in2[0];
- out[0] = ((Const 18014398509481954 + x5) - x9);
+ out[0] = ((0x3fffffffffffe2 + x5) - x9);
out[1] = ((0x3ffffffffffffe + x7) - x11);
out[2] = ((0x1ffffffffffffe + x6) - x10);
}}}}}}
diff --git a/src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.log b/src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.log
index fb27cdf38..05695579b 100644
--- a/src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e158m15_3limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x6, x7, x5, (x10, x11, x9))%core,
- (((0x1ffffffffffffe + x6) - x10), ((0x3ffffffffffffe + x7) - x11), ((Const 18014398509481954 + x5) - x9)))
+ (((0x1ffffffffffffe + x6) - x10), ((0x3ffffffffffffe + x7) - x11), ((0x3fffffffffffe2 + x5) - x9)))
(x, x0)%core
: word64 * word64 * word64 → word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e158m15_3limbs/freeze.c b/src/Specific/solinas64_2e158m15_3limbs/freeze.c
index 4f1832611..d6722b135 100644
--- a/src/Specific/solinas64_2e158m15_3limbs/freeze.c
+++ b/src/Specific/solinas64_2e158m15_3limbs/freeze.c
@@ -2,11 +2,11 @@ static void freeze(uint64_t out[3], const uint64_t in1[3]) {
{ const uint64_t x3 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 9007199254740977);
+ { uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffff1);
{ uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x1fffffffffffff);
{ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0xfffffffffffff);
{ uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- { uint64_t x15 = (x14 & Const 9007199254740977);
+ { uint64_t x15 = (x14 & 0x1ffffffffffff1);
{ uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
{ uint64_t x19 = (x14 & 0x1fffffffffffff);
{ uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
diff --git a/src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.log b/src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.log
index 96c79d283..4345bf25c 100644
--- a/src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e158m15_3limbs/freezeDisplay.log
@@ -2,11 +2,11 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x3, x4, x2)%core,
- uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 9007199254740977);
+ uint64_t x6, uint8_t x7 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffff1);
uint64_t x9, uint8_t x10 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x7, Return x4, 0x1fffffffffffff);
uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 52 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x10, Return x3, 0xfffffffffffff);
uint64_t x14 = cmovznz64(x13, 0x0, 0xffffffffffffffffL);
- uint64_t x15 = (x14 & Const 9007199254740977);
+ uint64_t x15 = (x14 & 0x1ffffffffffff1);
uint64_t x17, uint8_t x18 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x6, Return x15);
uint64_t x19 = (x14 & 0x1fffffffffffff);
uint64_t x21, uint8_t x22 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x18, Return x9, Return x19);
diff --git a/src/Specific/solinas64_2e165m25_4limbs/fesub.c b/src/Specific/solinas64_2e165m25_4limbs/fesub.c
index c1bc872c7..5f0e809c0 100644
--- a/src/Specific/solinas64_2e165m25_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e165m25_4limbs/fesub.c
@@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 8796093022158 + x5) - x11);
+ out[0] = ((0x7ffffffffce + x5) - x11);
out[1] = ((0x3fffffffffe + x7) - x13);
out[2] = ((0x3fffffffffe + x9) - x15);
out[3] = ((0x3fffffffffe + x8) - x14);
diff --git a/src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.log
index 6a6cd8e83..e29d33fc2 100644
--- a/src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e165m25_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x3fffffffffe + x8) - x14), ((0x3fffffffffe + x9) - x15), ((0x3fffffffffe + x7) - x13), ((Const 8796093022158 + x5) - x11)))
+ (((0x3fffffffffe + x8) - x14), ((0x3fffffffffe + x9) - x15), ((0x3fffffffffe + x7) - x13), ((0x7ffffffffce + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e166m5_4limbs/fesub.c b/src/Specific/solinas64_2e166m5_4limbs/fesub.c
index a261e6c5e..8031982a5 100644
--- a/src/Specific/solinas64_2e166m5_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e166m5_4limbs/fesub.c
@@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 8796093022198 + x5) - x11);
+ out[0] = ((0x7fffffffff6 + x5) - x11);
out[1] = ((0x3fffffffffe + x7) - x13);
out[2] = ((0x7fffffffffe + x9) - x15);
out[3] = ((0x3fffffffffe + x8) - x14);
diff --git a/src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.log
index ff4bb8bf3..81b67f3d0 100644
--- a/src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e166m5_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x3fffffffffe + x8) - x14), ((0x7fffffffffe + x9) - x15), ((0x3fffffffffe + x7) - x13), ((Const 8796093022198 + x5) - x11)))
+ (((0x3fffffffffe + x8) - x14), ((0x7fffffffffe + x9) - x15), ((0x3fffffffffe + x7) - x13), ((0x7fffffffff6 + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e171m19_4limbs/fesub.c b/src/Specific/solinas64_2e171m19_4limbs/fesub.c
index 933e1fac6..729b06baf 100644
--- a/src/Specific/solinas64_2e171m19_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e171m19_4limbs/fesub.c
@@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 17592186044378 + x5) - x11);
+ out[0] = ((0xfffffffffda + x5) - x11);
out[1] = ((0xffffffffffe + x7) - x13);
out[2] = ((0xffffffffffe + x9) - x15);
out[3] = ((0x7fffffffffe + x8) - x14);
diff --git a/src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.log
index 14c632015..1773b3869 100644
--- a/src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e171m19_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x7fffffffffe + x8) - x14), ((0xffffffffffe + x9) - x15), ((0xffffffffffe + x7) - x13), ((Const 17592186044378 + x5) - x11)))
+ (((0x7fffffffffe + x8) - x14), ((0xffffffffffe + x9) - x15), ((0xffffffffffe + x7) - x13), ((0xfffffffffda + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m17_4limbs/fesub.c b/src/Specific/solinas64_2e174m17_4limbs/fesub.c
index ed0213eb5..901f8fd88 100644
--- a/src/Specific/solinas64_2e174m17_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e174m17_4limbs/fesub.c
@@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 35184372088798 + x5) - x11);
+ out[0] = ((0x1fffffffffde + x5) - x11);
out[1] = ((0xffffffffffe + x7) - x13);
- out[2] = ((Const 35184372088830 + x9) - x15);
+ out[2] = ((0x1ffffffffffe + x9) - x15);
out[3] = ((0xffffffffffe + x8) - x14);
}}}}}}}}
}
diff --git a/src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.log
index 60202bd7b..e0d979a9d 100644
--- a/src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e174m17_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xffffffffffe + x8) - x14), ((Const 35184372088830 + x9) - x15), ((0xffffffffffe + x7) - x13), ((Const 35184372088798 + x5) - x11)))
+ (((0xffffffffffe + x8) - x14), ((0x1ffffffffffe + x9) - x15), ((0xffffffffffe + x7) - x13), ((0x1fffffffffde + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e174m3_4limbs/fesub.c b/src/Specific/solinas64_2e174m3_4limbs/fesub.c
index 3c165b60b..6f793d1b7 100644
--- a/src/Specific/solinas64_2e174m3_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e174m3_4limbs/fesub.c
@@ -7,9 +7,9 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 35184372088826 + x5) - x11);
+ out[0] = ((0x1ffffffffffa + x5) - x11);
out[1] = ((0xffffffffffe + x7) - x13);
- out[2] = ((Const 35184372088830 + x9) - x15);
+ out[2] = ((0x1ffffffffffe + x9) - x15);
out[3] = ((0xffffffffffe + x8) - x14);
}}}}}}}}
}
diff --git a/src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.log
index f8788e150..3ff577966 100644
--- a/src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e174m3_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xffffffffffe + x8) - x14), ((Const 35184372088830 + x9) - x15), ((0xffffffffffe + x7) - x13), ((Const 35184372088826 + x5) - x11)))
+ (((0xffffffffffe + x8) - x14), ((0x1ffffffffffe + x9) - x15), ((0xffffffffffe + x7) - x13), ((0x1ffffffffffa + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e189m25_5limbs/fesub.c b/src/Specific/solinas64_2e189m25_5limbs/fesub.c
index c66bd3a31..ce859c6d9 100644
--- a/src/Specific/solinas64_2e189m25_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e189m25_5limbs/fesub.c
@@ -9,10 +9,10 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 549755813838 + x5) - x13);
+ out[0] = ((0x7fffffffce + x5) - x13);
out[1] = ((0x7ffffffffe + x7) - x15);
out[2] = ((0x7ffffffffe + x9) - x17);
out[3] = ((0x7ffffffffe + x11) - x19);
- out[4] = ((Const 274877906942 + x10) - x18);
+ out[4] = ((0x3ffffffffe + x10) - x18);
}}}}}}}}}}
}
diff --git a/src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.log
index d1c0dd6a1..a2562fa02 100644
--- a/src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e189m25_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((Const 274877906942 + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0x7ffffffffe + x9) - x17), ((0x7ffffffffe + x7) - x15), ((Const 549755813838 + x5) - x13)))
+ (((0x3ffffffffe + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0x7ffffffffe + x9) - x17), ((0x7ffffffffe + x7) - x15), ((0x7fffffffce + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e189m25_5limbs/freeze.c b/src/Specific/solinas64_2e189m25_5limbs/freeze.c
index d14e5b986..9fefdac0a 100644
--- a/src/Specific/solinas64_2e189m25_5limbs/freeze.c
+++ b/src/Specific/solinas64_2e189m25_5limbs/freeze.c
@@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 274877906919);
+ { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffe7);
{ uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3fffffffff);
{ uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3fffffffff);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3fffffffff);
{ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x1fffffffff);
{ uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & Const 274877906919);
+ { uint64_t x25 = (x24 & 0x3fffffffe7);
{ uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
{ uint64_t x29 = (x24 & 0x3fffffffff);
{ uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.log
index 2d1999392..4e94d533c 100644
--- a/src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e189m25_5limbs/freezeDisplay.log
@@ -2,13 +2,13 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 274877906919);
+ uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffe7);
uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3fffffffff);
uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3fffffffff);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3fffffffff);
uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x1fffffffff);
uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & Const 274877906919);
+ uint64_t x25 = (x24 & 0x3fffffffe7);
uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
uint64_t x29 = (x24 & 0x3fffffffff);
uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e190m11_5limbs/fesub.c b/src/Specific/solinas64_2e190m11_5limbs/fesub.c
index fff54b745..57eba50a6 100644
--- a/src/Specific/solinas64_2e190m11_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e190m11_5limbs/fesub.c
@@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 549755813866 + x5) - x13);
+ out[0] = ((0x7fffffffea + x5) - x13);
out[1] = ((0x7ffffffffe + x7) - x15);
out[2] = ((0x7ffffffffe + x9) - x17);
out[3] = ((0x7ffffffffe + x11) - x19);
diff --git a/src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.log
index c794eb059..bdf3bab02 100644
--- a/src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e190m11_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x7ffffffffe + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0x7ffffffffe + x9) - x17), ((0x7ffffffffe + x7) - x15), ((Const 549755813866 + x5) - x13)))
+ (((0x7ffffffffe + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0x7ffffffffe + x9) - x17), ((0x7ffffffffe + x7) - x15), ((0x7fffffffea + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e191m19_4limbs/fesub.c b/src/Specific/solinas64_2e191m19_4limbs/fesub.c
index 91526bf9a..b7adcc113 100644
--- a/src/Specific/solinas64_2e191m19_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e191m19_4limbs/fesub.c
@@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 562949953421274 + x5) - x11);
+ out[0] = ((0x1ffffffffffda + x5) - x11);
out[1] = ((0x1fffffffffffe + x7) - x13);
out[2] = ((0x1fffffffffffe + x9) - x15);
out[3] = ((0xfffffffffffe + x8) - x14);
diff --git a/src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.log
index a94f0d59d..7d3dd7878 100644
--- a/src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e191m19_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0xfffffffffffe + x8) - x14), ((0x1fffffffffffe + x9) - x15), ((0x1fffffffffffe + x7) - x13), ((Const 562949953421274 + x5) - x11)))
+ (((0xfffffffffffe + x8) - x14), ((0x1fffffffffffe + x9) - x15), ((0x1fffffffffffe + x7) - x13), ((0x1ffffffffffda + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e191m19_4limbs/freeze.c b/src/Specific/solinas64_2e191m19_4limbs/freeze.c
index 61896a565..f9254f645 100644
--- a/src/Specific/solinas64_2e191m19_4limbs/freeze.c
+++ b/src/Specific/solinas64_2e191m19_4limbs/freeze.c
@@ -3,12 +3,12 @@ static void freeze(uint64_t out[4], const uint64_t in1[4]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 281474976710637);
+ { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffed);
{ uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0xffffffffffff);
{ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffffff);
{ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffffff);
{ uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & Const 281474976710637);
+ { uint64_t x20 = (x19 & 0xffffffffffed);
{ uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
{ uint64_t x24 = (x19 & 0xffffffffffff);
{ uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
diff --git a/src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.log b/src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.log
index 217bcd03b..33e548f8a 100644
--- a/src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e191m19_4limbs/freezeDisplay.log
@@ -2,12 +2,12 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 281474976710637);
+ uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffed);
uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0xffffffffffff);
uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0xffffffffffff);
uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x7fffffffffff);
uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & Const 281474976710637);
+ uint64_t x20 = (x19 & 0xffffffffffed);
uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
uint64_t x24 = (x19 & 0xffffffffffff);
uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.c b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.c
index 28d336120..3cd07ae40 100644
--- a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesub.c
@@ -10,7 +10,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
out[0] = ((0xfffffffffe + x5) - x13);
- out[1] = ((Const 549688705022 + x7) - x15);
+ out[1] = ((0x7ffbfffffe + x7) - x15);
out[2] = ((0xfffffffffe + x9) - x17);
out[3] = ((0x7ffffffffe + x11) - x19);
out[4] = ((0x7ffffffffe + x10) - x18);
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.log
index 6112bbc17..7372f4ab9 100644
--- a/src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x7ffffffffe + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((Const 549688705022 + x7) - x15), ((0xfffffffffe + x5) - x13)))
+ (((0x7ffffffffe + x10) - x18), ((0x7ffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((0x7ffbfffffe + x7) - x15), ((0xfffffffffe + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.c b/src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.c
index a78ca39fb..4d7951d82 100644
--- a/src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.c
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/freeze.c
@@ -5,14 +5,14 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) {
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
{ uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffff);
- { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, Const 274844352511);
+ { uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffdffffff);
{ uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3fffffffff);
{ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3fffffffff);
{ uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
{ uint64_t x25 = (x24 & 0x7fffffffff);
{ uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- { uint64_t x29 = (x24 & Const 274844352511);
+ { uint64_t x29 = (x24 & 0x3ffdffffff);
{ uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
{ uint64_t x33 = (x24 & 0x7fffffffff);
{ uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
diff --git a/src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.log
index e0a95a07a..03365946d 100644
--- a/src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e192m2e64m1_5limbs/freezeDisplay.log
@@ -3,14 +3,14 @@ Interp-η
(λ var : Syntax.base_type → Type,
λ '(x7, x8, x6, x4, x2)%core,
uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffff);
- uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, Const 274844352511);
+ uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffdffffff);
uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3fffffffff);
uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3fffffffff);
uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
uint64_t x25 = (x24 & 0x7fffffffff);
uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
- uint64_t x29 = (x24 & Const 274844352511);
+ uint64_t x29 = (x24 & 0x3ffdffffff);
uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
uint64_t x33 = (x24 & 0x7fffffffff);
uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x32, Return x16, Return x33);
diff --git a/src/Specific/solinas64_2e194m33_5limbs/fesub.c b/src/Specific/solinas64_2e194m33_5limbs/fesub.c
index 15831bbc3..af5e3276a 100644
--- a/src/Specific/solinas64_2e194m33_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e194m33_5limbs/fesub.c
@@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 1099511627710 + x5) - x13);
+ out[0] = ((0xffffffffbe + x5) - x13);
out[1] = ((0xfffffffffe + x7) - x15);
out[2] = ((0xfffffffffe + x9) - x17);
out[3] = ((0xfffffffffe + x11) - x19);
diff --git a/src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.log
index af3be2036..77468d508 100644
--- a/src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e194m33_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x7ffffffffe + x10) - x18), ((0xfffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((0xfffffffffe + x7) - x15), ((Const 1099511627710 + x5) - x13)))
+ (((0x7ffffffffe + x10) - x18), ((0xfffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((0xfffffffffe + x7) - x15), ((0xffffffffbe + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e194m33_5limbs/freeze.c b/src/Specific/solinas64_2e194m33_5limbs/freeze.c
index 5cdddffcf..78d62c5d8 100644
--- a/src/Specific/solinas64_2e194m33_5limbs/freeze.c
+++ b/src/Specific/solinas64_2e194m33_5limbs/freeze.c
@@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 549755813855);
+ { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffdf);
{ uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x7fffffffff);
{ uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x7fffffffff);
{ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3fffffffff);
{ uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & Const 549755813855);
+ { uint64_t x25 = (x24 & 0x7fffffffdf);
{ uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
{ uint64_t x29 = (x24 & 0x7fffffffff);
{ uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.log
index 214521270..f2db1e405 100644
--- a/src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e194m33_5limbs/freezeDisplay.log
@@ -2,13 +2,13 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 549755813855);
+ uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffdf);
uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x7fffffffff);
uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x7fffffffff);
uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3fffffffff);
uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & Const 549755813855);
+ uint64_t x25 = (x24 & 0x7fffffffdf);
uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
uint64_t x29 = (x24 & 0x7fffffffff);
uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e198m17_5limbs/fesub.c b/src/Specific/solinas64_2e198m17_5limbs/fesub.c
index eefcf8a63..b921e2e67 100644
--- a/src/Specific/solinas64_2e198m17_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e198m17_5limbs/fesub.c
@@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 2199023255518 + x5) - x13);
+ out[0] = ((0x1ffffffffde + x5) - x13);
out[1] = ((0x1fffffffffe + x7) - x15);
out[2] = ((0xfffffffffe + x9) - x17);
out[3] = ((0x1fffffffffe + x11) - x19);
diff --git a/src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.log
index 59d635b7b..a9271c01c 100644
--- a/src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e198m17_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0xfffffffffe + x10) - x18), ((0x1fffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((0x1fffffffffe + x7) - x15), ((Const 2199023255518 + x5) - x13)))
+ (((0xfffffffffe + x10) - x18), ((0x1fffffffffe + x11) - x19), ((0xfffffffffe + x9) - x17), ((0x1fffffffffe + x7) - x15), ((0x1ffffffffde + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e198m17_5limbs/freeze.c b/src/Specific/solinas64_2e198m17_5limbs/freeze.c
index d92e169b8..91d69ba0a 100644
--- a/src/Specific/solinas64_2e198m17_5limbs/freeze.c
+++ b/src/Specific/solinas64_2e198m17_5limbs/freeze.c
@@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 1099511627759);
+ { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffef);
{ uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0xffffffffff);
{ uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0xffffffffff);
{ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x7fffffffff);
{ uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & Const 1099511627759);
+ { uint64_t x25 = (x24 & 0xffffffffef);
{ uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
{ uint64_t x29 = (x24 & 0xffffffffff);
{ uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.log
index 65abc09f1..8cc8ad621 100644
--- a/src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e198m17_5limbs/freezeDisplay.log
@@ -2,13 +2,13 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 1099511627759);
+ uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffef);
uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0xffffffffff);
uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7fffffffff);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0xffffffffff);
uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 39 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x7fffffffff);
uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & Const 1099511627759);
+ uint64_t x25 = (x24 & 0xffffffffef);
uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
uint64_t x29 = (x24 & 0xffffffffff);
uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e206m5_5limbs/fesub.c b/src/Specific/solinas64_2e206m5_5limbs/fesub.c
index d18b70c32..a55886274 100644
--- a/src/Specific/solinas64_2e206m5_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e206m5_5limbs/fesub.c
@@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 8796093022198 + x5) - x13);
+ out[0] = ((0x7fffffffff6 + x5) - x13);
out[1] = ((0x3fffffffffe + x7) - x15);
out[2] = ((0x3fffffffffe + x9) - x17);
out[3] = ((0x3fffffffffe + x11) - x19);
diff --git a/src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.log
index c4085232a..784e4571c 100644
--- a/src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e206m5_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x3fffffffffe + x10) - x18), ((0x3fffffffffe + x11) - x19), ((0x3fffffffffe + x9) - x17), ((0x3fffffffffe + x7) - x15), ((Const 8796093022198 + x5) - x13)))
+ (((0x3fffffffffe + x10) - x18), ((0x3fffffffffe + x11) - x19), ((0x3fffffffffe + x9) - x17), ((0x3fffffffffe + x7) - x15), ((0x7fffffffff6 + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e212m29_5limbs/fesub.c b/src/Specific/solinas64_2e212m29_5limbs/fesub.c
index 53937519c..45d29efd6 100644
--- a/src/Specific/solinas64_2e212m29_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e212m29_5limbs/fesub.c
@@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 17592186044358 + x5) - x13);
+ out[0] = ((0xfffffffffc6 + x5) - x13);
out[1] = ((0x7fffffffffe + x7) - x15);
out[2] = ((0xffffffffffe + x9) - x17);
out[3] = ((0x7fffffffffe + x11) - x19);
diff --git a/src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.log
index 575066130..40ae8723a 100644
--- a/src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e212m29_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x7fffffffffe + x10) - x18), ((0x7fffffffffe + x11) - x19), ((0xffffffffffe + x9) - x17), ((0x7fffffffffe + x7) - x15), ((Const 17592186044358 + x5) - x13)))
+ (((0x7fffffffffe + x10) - x18), ((0x7fffffffffe + x11) - x19), ((0xffffffffffe + x9) - x17), ((0x7fffffffffe + x7) - x15), ((0xfffffffffc6 + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e212m29_5limbs/freeze.c b/src/Specific/solinas64_2e212m29_5limbs/freeze.c
index 0c8f1e8df..63bd21e1c 100644
--- a/src/Specific/solinas64_2e212m29_5limbs/freeze.c
+++ b/src/Specific/solinas64_2e212m29_5limbs/freeze.c
@@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8796093022179);
+ { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffe3);
{ uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffffffff);
{ uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7ffffffffff);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffffffff);
{ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffff);
{ uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & Const 8796093022179);
+ { uint64_t x25 = (x24 & 0x7ffffffffe3);
{ uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
{ uint64_t x29 = (x24 & 0x3ffffffffff);
{ uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.log
index d43037392..d300528f6 100644
--- a/src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e212m29_5limbs/freezeDisplay.log
@@ -2,13 +2,13 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8796093022179);
+ uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffe3);
uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x3ffffffffff);
uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x7ffffffffff);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x3ffffffffff);
uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffff);
uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & Const 8796093022179);
+ uint64_t x25 = (x24 & 0x7ffffffffe3);
uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
uint64_t x29 = (x24 & 0x3ffffffffff);
uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e213m3_5limbs/fesub.c b/src/Specific/solinas64_2e213m3_5limbs/fesub.c
index 2bd522da3..60ab8a21f 100644
--- a/src/Specific/solinas64_2e213m3_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e213m3_5limbs/fesub.c
@@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 17592186044410 + x5) - x13);
+ out[0] = ((0xffffffffffa + x5) - x13);
out[1] = ((0xffffffffffe + x7) - x15);
out[2] = ((0x7fffffffffe + x9) - x17);
out[3] = ((0xffffffffffe + x11) - x19);
diff --git a/src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.log
index 6df32d9d1..88bb8871c 100644
--- a/src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e213m3_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x7fffffffffe + x10) - x18), ((0xffffffffffe + x11) - x19), ((0x7fffffffffe + x9) - x17), ((0xffffffffffe + x7) - x15), ((Const 17592186044410 + x5) - x13)))
+ (((0x7fffffffffe + x10) - x18), ((0xffffffffffe + x11) - x19), ((0x7fffffffffe + x9) - x17), ((0xffffffffffe + x7) - x15), ((0xffffffffffa + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e213m3_5limbs/freeze.c b/src/Specific/solinas64_2e213m3_5limbs/freeze.c
index 0d09f19ba..172111a41 100644
--- a/src/Specific/solinas64_2e213m3_5limbs/freeze.c
+++ b/src/Specific/solinas64_2e213m3_5limbs/freeze.c
@@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8796093022205);
+ { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffd);
{ uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x7ffffffffff);
{ uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffffffff);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x7ffffffffff);
{ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffff);
{ uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & Const 8796093022205);
+ { uint64_t x25 = (x24 & 0x7fffffffffd);
{ uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
{ uint64_t x29 = (x24 & 0x7ffffffffff);
{ uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.log
index 99807b6cb..582a7d192 100644
--- a/src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e213m3_5limbs/freezeDisplay.log
@@ -2,13 +2,13 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8796093022205);
+ uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffd);
uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x7ffffffffff);
uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x3ffffffffff);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x7ffffffffff);
uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0x3ffffffffff);
uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & Const 8796093022205);
+ uint64_t x25 = (x24 & 0x7fffffffffd);
uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
uint64_t x29 = (x24 & 0x7ffffffffff);
uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.c b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.c
index 55ab4e110..92276f1f9 100644
--- a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesub.c
@@ -9,9 +9,9 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 35184372088830 + x5) - x13);
+ out[0] = ((0x1ffffffffffe + x5) - x13);
out[1] = ((0xffffffffffe + x7) - x15);
- out[2] = ((Const 17592181850110 + x9) - x17);
+ out[2] = ((0xfffffbffffe + x9) - x17);
out[3] = ((0xffffffffffe + x11) - x19);
out[4] = ((0xffffffffffe + x10) - x18);
}}}}}}}}}}
diff --git a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.log
index 4c3aff559..354b61ffe 100644
--- a/src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e216m2e108m1_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0xffffffffffe + x10) - x18), ((0xffffffffffe + x11) - x19), ((Const 17592181850110 + x9) - x17), ((0xffffffffffe + x7) - x15), ((Const 35184372088830 + x5) - x13)))
+ (((0xffffffffffe + x10) - x18), ((0xffffffffffe + x11) - x19), ((0xfffffbffffe + x9) - x17), ((0xffffffffffe + x7) - x15), ((0x1ffffffffffe + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e221m3_5limbs/fesub.c b/src/Specific/solinas64_2e221m3_5limbs/fesub.c
index 23ba6c7c8..555e77138 100644
--- a/src/Specific/solinas64_2e221m3_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e221m3_5limbs/fesub.c
@@ -9,10 +9,10 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 70368744177658 + x5) - x13);
- out[1] = ((Const 35184372088830 + x7) - x15);
- out[2] = ((Const 35184372088830 + x9) - x17);
- out[3] = ((Const 35184372088830 + x11) - x19);
- out[4] = ((Const 35184372088830 + x10) - x18);
+ out[0] = ((0x3ffffffffffa + x5) - x13);
+ out[1] = ((0x1ffffffffffe + x7) - x15);
+ out[2] = ((0x1ffffffffffe + x9) - x17);
+ out[3] = ((0x1ffffffffffe + x11) - x19);
+ out[4] = ((0x1ffffffffffe + x10) - x18);
}}}}}}}}}}
}
diff --git a/src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.log
index 72bc5753d..ff9597411 100644
--- a/src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e221m3_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((Const 35184372088830 + x10) - x18), ((Const 35184372088830 + x11) - x19), ((Const 35184372088830 + x9) - x17), ((Const 35184372088830 + x7) - x15), ((Const 70368744177658 + x5) - x13)))
+ (((0x1ffffffffffe + x10) - x18), ((0x1ffffffffffe + x11) - x19), ((0x1ffffffffffe + x9) - x17), ((0x1ffffffffffe + x7) - x15), ((0x3ffffffffffa + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e222m117_5limbs/fesub.c b/src/Specific/solinas64_2e222m117_5limbs/fesub.c
index c3a416f25..c2a38ad49 100644
--- a/src/Specific/solinas64_2e222m117_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e222m117_5limbs/fesub.c
@@ -9,10 +9,10 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 70368744177430 + x5) - x13);
- out[1] = ((Const 35184372088830 + x7) - x15);
- out[2] = ((Const 70368744177662 + x9) - x17);
- out[3] = ((Const 35184372088830 + x11) - x19);
- out[4] = ((Const 35184372088830 + x10) - x18);
+ out[0] = ((0x3fffffffff16 + x5) - x13);
+ out[1] = ((0x1ffffffffffe + x7) - x15);
+ out[2] = ((0x3ffffffffffe + x9) - x17);
+ out[3] = ((0x1ffffffffffe + x11) - x19);
+ out[4] = ((0x1ffffffffffe + x10) - x18);
}}}}}}}}}}
}
diff --git a/src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.log
index 88fd72c73..ccfc6bccd 100644
--- a/src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e222m117_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((Const 35184372088830 + x10) - x18), ((Const 35184372088830 + x11) - x19), ((Const 70368744177662 + x9) - x17), ((Const 35184372088830 + x7) - x15), ((Const 70368744177430 + x5) - x13)))
+ (((0x1ffffffffffe + x10) - x18), ((0x1ffffffffffe + x11) - x19), ((0x3ffffffffffe + x9) - x17), ((0x1ffffffffffe + x7) - x15), ((0x3fffffffff16 + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e222m117_5limbs/freeze.c b/src/Specific/solinas64_2e222m117_5limbs/freeze.c
index e4e3dcab2..7905a55d4 100644
--- a/src/Specific/solinas64_2e222m117_5limbs/freeze.c
+++ b/src/Specific/solinas64_2e222m117_5limbs/freeze.c
@@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 35184372088715);
+ { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffff8b);
{ uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0xfffffffffff);
{ uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1fffffffffff);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0xfffffffffff);
{ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0xfffffffffff);
{ uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & Const 35184372088715);
+ { uint64_t x25 = (x24 & 0x1fffffffff8b);
{ uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
{ uint64_t x29 = (x24 & 0xfffffffffff);
{ uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.log
index 22783f4fd..ee234450a 100644
--- a/src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e222m117_5limbs/freezeDisplay.log
@@ -2,13 +2,13 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 35184372088715);
+ uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffff8b);
uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0xfffffffffff);
uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1fffffffffff);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0xfffffffffff);
uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0xfffffffffff);
uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & Const 35184372088715);
+ uint64_t x25 = (x24 & 0x1fffffffff8b);
uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
uint64_t x29 = (x24 & 0xfffffffffff);
uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.c b/src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.c
index 92007cb82..9bd4af647 100644
--- a/src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.c
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/freeze.c
@@ -6,14 +6,14 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) {
{ const uint64_t x2 = in1[0];
{ uint64_t x10, ℤ x11 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0x1);
{ uint64_t x13, ℤ x14 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x11, Return x4, 0x0);
- { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, Const 35184372088768);
+ { uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1fffffffffc0);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1fffffffffff);
{ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0xfffffffffff);
{ uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
{ uint8_t x25 = ((uint8_t)x24 & 0x1);
{ uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
{ uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, 0x0);
- { uint64_t x32 = (x24 & Const 35184372088768);
+ { uint64_t x32 = (x24 & 0x1fffffffffc0);
{ uint64_t x34, uint8_t x35 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x16, Return x32);
{ uint64_t x36 = (x24 & 0x1fffffffffff);
{ uint64_t x38, uint8_t x39 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x19, Return x36);
diff --git a/src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.log
index decdaa341..86c5ce8e8 100644
--- a/src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e224m2e96p1_5limbs/freezeDisplay.log
@@ -4,14 +4,14 @@ Interp-η
λ '(x7, x8, x6, x4, x2)%core,
uint64_t x10, ℤ x11 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0x1);
uint64_t x13, ℤ x14 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x11, Return x4, 0x0);
- uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, Const 35184372088768);
+ uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 45 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0x1fffffffffc0);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1fffffffffff);
uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0xfffffffffff);
uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
uint8_t x25 = ((uint8_t)x24 & 0x1);
uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
uint64_t x30, uint8_t x31 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, 0x0);
- uint64_t x32 = (x24 & Const 35184372088768);
+ uint64_t x32 = (x24 & 0x1fffffffffc0);
uint64_t x34, uint8_t x35 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x31, Return x16, Return x32);
uint64_t x36 = (x24 & 0x1fffffffffff);
uint64_t x38, uint8_t x39 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x35, Return x19, Return x36);
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/feadd.c b/src/Specific/solinas64_2e224m2e96p1_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e224m2e96p1_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/freeze.c b/src/Specific/solinas64_2e224m2e96p1_6limbs/freeze.c
new file mode 100644
index 000000000..ceb4a7f2a
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/freeze.c
@@ -0,0 +1,33 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, ℤ x13 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0x1);
+ { uint64_t x15, ℤ x16 = Op (Syntax.SubWithGetBorrow 37 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x13, Return x4, 0x0);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 37 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffe00000);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3fffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1fffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint8_t x30 = ((uint8_t)x29 & 0x1);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, 0x0);
+ { uint64_t x37 = (x29 & 0x1fffe00000);
+ { uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x18, Return x37);
+ { uint64_t x41 = (x29 & 0x3fffffffff);
+ { uint64_t x43, uint8_t x44 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x21, Return x41);
+ { uint64_t x45 = (x29 & 0x1fffffffff);
+ { uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x24, Return x45);
+ { uint64_t x49 = (x29 & 0x1fffffffff);
+ { uint64_t x51, uint8_t _ = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x27, Return x49);
+ out[0] = x32;
+ out[1] = x35;
+ out[2] = x39;
+ out[3] = x43;
+ out[4] = x47;
+ out[5] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e224m2e96p1_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e224m2e96p1_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..b64dbd5e4
--- /dev/null
+++ b/src/Specific/solinas64_2e224m2e96p1_6limbs/freezeDisplay.log
@@ -0,0 +1,25 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, ℤ x13 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (0x0, Return x2, 0x1);
+ uint64_t x15, ℤ x16 = Op (Syntax.SubWithGetBorrow 37 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x13, Return x4, 0x0);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 37 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffe00000);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3fffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1fffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint8_t x30 = ((uint8_t)x29 & 0x1);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x35, uint8_t x36 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, 0x0);
+ uint64_t x37 = (x29 & 0x1fffe00000);
+ uint64_t x39, uint8_t x40 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x36, Return x18, Return x37);
+ uint64_t x41 = (x29 & 0x3fffffffff);
+ uint64_t x43, uint8_t x44 = Op (Syntax.AddWithGetCarry 38 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x40, Return x21, Return x41);
+ uint64_t x45 = (x29 & 0x1fffffffff);
+ uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x24, Return x45);
+ uint64_t x49 = (x29 & 0x1fffffffff);
+ uint64_t x51, uint8_t _ = Op (Syntax.AddWithGetCarry 37 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x27, Return x49);
+ (Return x51, Return x47, Return x43, Return x39, Return x35, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e226m5_5limbs/fesub.c b/src/Specific/solinas64_2e226m5_5limbs/fesub.c
index 33f348616..3abd171ea 100644
--- a/src/Specific/solinas64_2e226m5_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e226m5_5limbs/fesub.c
@@ -9,10 +9,10 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 140737488355318 + x5) - x13);
- out[1] = ((Const 70368744177662 + x7) - x15);
- out[2] = ((Const 70368744177662 + x9) - x17);
- out[3] = ((Const 70368744177662 + x11) - x19);
- out[4] = ((Const 70368744177662 + x10) - x18);
+ out[0] = ((0x7ffffffffff6 + x5) - x13);
+ out[1] = ((0x3ffffffffffe + x7) - x15);
+ out[2] = ((0x3ffffffffffe + x9) - x17);
+ out[3] = ((0x3ffffffffffe + x11) - x19);
+ out[4] = ((0x3ffffffffffe + x10) - x18);
}}}}}}}}}}
}
diff --git a/src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.log
index d120587a3..c91c66cd3 100644
--- a/src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e226m5_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((Const 70368744177662 + x10) - x18), ((Const 70368744177662 + x11) - x19), ((Const 70368744177662 + x9) - x17), ((Const 70368744177662 + x7) - x15), ((Const 140737488355318 + x5) - x13)))
+ (((0x3ffffffffffe + x10) - x18), ((0x3ffffffffffe + x11) - x19), ((0x3ffffffffffe + x9) - x17), ((0x3ffffffffffe + x7) - x15), ((0x7ffffffffff6 + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e230m27_5limbs/fesub.c b/src/Specific/solinas64_2e230m27_5limbs/fesub.c
index 640b6ec3b..134570c81 100644
--- a/src/Specific/solinas64_2e230m27_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e230m27_5limbs/fesub.c
@@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 140737488355274 + x5) - x13);
+ out[0] = ((0x7fffffffffca + x5) - x13);
out[1] = ((0x7ffffffffffe + x7) - x15);
out[2] = ((0x7ffffffffffe + x9) - x17);
out[3] = ((0x7ffffffffffe + x11) - x19);
diff --git a/src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.log
index caf713a08..9a32db234 100644
--- a/src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e230m27_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x7ffffffffffe + x10) - x18), ((0x7ffffffffffe + x11) - x19), ((0x7ffffffffffe + x9) - x17), ((0x7ffffffffffe + x7) - x15), ((Const 140737488355274 + x5) - x13)))
+ (((0x7ffffffffffe + x10) - x18), ((0x7ffffffffffe + x11) - x19), ((0x7ffffffffffe + x9) - x17), ((0x7ffffffffffe + x7) - x15), ((0x7fffffffffca + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e235m15_4limbs/fesub.c b/src/Specific/solinas64_2e235m15_4limbs/fesub.c
index bff07d25d..6a22e87ef 100644
--- a/src/Specific/solinas64_2e235m15_4limbs/fesub.c
+++ b/src/Specific/solinas64_2e235m15_4limbs/fesub.c
@@ -7,7 +7,7 @@ static void fesub(uint64_t out[4], const uint64_t in1[4], const uint64_t in2[4])
{ const uint64_t x15 = in2[2];
{ const uint64_t x13 = in2[1];
{ const uint64_t x11 = in2[0];
- out[0] = ((Const 1152921504606846946 + x5) - x11);
+ out[0] = ((0xfffffffffffffe2 + x5) - x11);
out[1] = ((0xffffffffffffffe + x7) - x13);
out[2] = ((0xffffffffffffffe + x9) - x15);
out[3] = ((0x7fffffffffffffe + x8) - x14);
diff --git a/src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.log b/src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.log
index 356050985..46f99dab1 100644
--- a/src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e235m15_4limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x8, x9, x7, x5, (x14, x15, x13, x11))%core,
- (((0x7fffffffffffffe + x8) - x14), ((0xffffffffffffffe + x9) - x15), ((0xffffffffffffffe + x7) - x13), ((Const 1152921504606846946 + x5) - x11)))
+ (((0x7fffffffffffffe + x8) - x14), ((0xffffffffffffffe + x9) - x15), ((0xffffffffffffffe + x7) - x13), ((0xfffffffffffffe2 + x5) - x11)))
(x, x0)%core
: word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e235m15_4limbs/freeze.c b/src/Specific/solinas64_2e235m15_4limbs/freeze.c
index 8e7752601..9d95407c0 100644
--- a/src/Specific/solinas64_2e235m15_4limbs/freeze.c
+++ b/src/Specific/solinas64_2e235m15_4limbs/freeze.c
@@ -3,12 +3,12 @@ static void freeze(uint64_t out[4], const uint64_t in1[4]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 576460752303423473);
+ { uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffff1);
{ uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7ffffffffffffff);
{ uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x7ffffffffffffff);
{ uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x3ffffffffffffff);
{ uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- { uint64_t x20 = (x19 & Const 576460752303423473);
+ { uint64_t x20 = (x19 & 0x7fffffffffffff1);
{ uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
{ uint64_t x24 = (x19 & 0x7ffffffffffffff);
{ uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
diff --git a/src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.log b/src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.log
index 14bfc493c..b26bb700c 100644
--- a/src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e235m15_4limbs/freezeDisplay.log
@@ -2,12 +2,12 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x5, x6, x4, x2)%core,
- uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 576460752303423473);
+ uint64_t x8, uint8_t x9 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffffffff1);
uint64_t x11, uint8_t x12 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x9, Return x4, 0x7ffffffffffffff);
uint64_t x14, uint8_t x15 = Op (Syntax.SubWithGetBorrow 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x12, Return x6, 0x7ffffffffffffff);
uint64_t x17, uint8_t x18 = Op (Syntax.SubWithGetBorrow 58 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x15, Return x5, 0x3ffffffffffffff);
uint64_t x19 = cmovznz64(x18, 0x0, 0xffffffffffffffffL);
- uint64_t x20 = (x19 & Const 576460752303423473);
+ uint64_t x20 = (x19 & 0x7fffffffffffff1);
uint64_t x22, uint8_t x23 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x8, Return x20);
uint64_t x24 = (x19 & 0x7ffffffffffffff);
uint64_t x26, uint8_t x27 = Op (Syntax.AddWithGetCarry 59 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x23, Return x11, Return x24);
diff --git a/src/Specific/solinas64_2e243m9_5limbs/fesub.c b/src/Specific/solinas64_2e243m9_5limbs/fesub.c
index 7929f8406..0c1ddafdb 100644
--- a/src/Specific/solinas64_2e243m9_5limbs/fesub.c
+++ b/src/Specific/solinas64_2e243m9_5limbs/fesub.c
@@ -9,7 +9,7 @@ static void fesub(uint64_t out[5], const uint64_t in1[5], const uint64_t in2[5])
{ const uint64_t x17 = in2[2];
{ const uint64_t x15 = in2[1];
{ const uint64_t x13 = in2[0];
- out[0] = ((Const 1125899906842606 + x5) - x13);
+ out[0] = ((0x3ffffffffffee + x5) - x13);
out[1] = ((0x3fffffffffffe + x7) - x15);
out[2] = ((0x1fffffffffffe + x9) - x17);
out[3] = ((0x3fffffffffffe + x11) - x19);
diff --git a/src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.log b/src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.log
index ad3326534..1a4484124 100644
--- a/src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.log
+++ b/src/Specific/solinas64_2e243m9_5limbs/fesubDisplay.log
@@ -2,6 +2,6 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x10, x11, x9, x7, x5, (x18, x19, x17, x15, x13))%core,
- (((0x1fffffffffffe + x10) - x18), ((0x3fffffffffffe + x11) - x19), ((0x1fffffffffffe + x9) - x17), ((0x3fffffffffffe + x7) - x15), ((Const 1125899906842606 + x5) - x13)))
+ (((0x1fffffffffffe + x10) - x18), ((0x3fffffffffffe + x11) - x19), ((0x1fffffffffffe + x9) - x17), ((0x3fffffffffffe + x7) - x15), ((0x3ffffffffffee + x5) - x13)))
(x, x0)%core
: word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e243m9_5limbs/freeze.c b/src/Specific/solinas64_2e243m9_5limbs/freeze.c
index 9ab331db9..2f3cac0e8 100644
--- a/src/Specific/solinas64_2e243m9_5limbs/freeze.c
+++ b/src/Specific/solinas64_2e243m9_5limbs/freeze.c
@@ -4,13 +4,13 @@ static void freeze(uint64_t out[5], const uint64_t in1[5]) {
{ const uint64_t x6 = in1[2];
{ const uint64_t x4 = in1[1];
{ const uint64_t x2 = in1[0];
- { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 562949953421303);
+ { uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffff7);
{ uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x1ffffffffffff);
{ uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0xffffffffffff);
{ uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1ffffffffffff);
{ uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0xffffffffffff);
{ uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- { uint64_t x25 = (x24 & Const 562949953421303);
+ { uint64_t x25 = (x24 & 0x1fffffffffff7);
{ uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
{ uint64_t x29 = (x24 & 0x1ffffffffffff);
{ uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.log b/src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.log
index a1e031534..adf7a911b 100644
--- a/src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.log
+++ b/src/Specific/solinas64_2e243m9_5limbs/freezeDisplay.log
@@ -2,13 +2,13 @@
Interp-η
(λ var : Syntax.base_type → Type,
λ '(x7, x8, x6, x4, x2)%core,
- uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 562949953421303);
+ uint64_t x10, uint8_t x11 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffff7);
uint64_t x13, uint8_t x14 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x11, Return x4, 0x1ffffffffffff);
uint64_t x16, uint8_t x17 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x14, Return x6, 0xffffffffffff);
uint64_t x19, uint8_t x20 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x17, Return x8, 0x1ffffffffffff);
uint64_t x22, uint8_t x23 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x20, Return x7, 0xffffffffffff);
uint64_t x24 = cmovznz64(x23, 0x0, 0xffffffffffffffffL);
- uint64_t x25 = (x24 & Const 562949953421303);
+ uint64_t x25 = (x24 & 0x1fffffffffff7);
uint64_t x27, uint8_t x28 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x10, Return x25);
uint64_t x29 = (x24 & 0x1ffffffffffff);
uint64_t x31, uint8_t x32 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x28, Return x13, Return x29);
diff --git a/src/Specific/solinas64_2e243m9_6limbs/feadd.c b/src/Specific/solinas64_2e243m9_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e243m9_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e243m9_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e243m9_6limbs/femul.c b/src/Specific/solinas64_2e243m9_6limbs/femul.c
new file mode 100644
index 000000000..1f3dd625a
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ { uint64_t x30 = (uint64_t) (x29 >> 0x29);
+ { uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint64_t x33 = (uint64_t) (x32 >> 0x28);
+ { uint64_t x34 = ((uint64_t)x32 & 0xffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint64_t x36 = (uint64_t) (x35 >> 0x29);
+ { uint64_t x37 = ((uint64_t)x35 & 0x1ffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint64_t x39 = (uint64_t) (x38 >> 0x28);
+ { uint64_t x40 = ((uint64_t)x38 & 0xffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x29);
+ { uint64_t x43 = ((uint64_t)x41 & 0x1ffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x28);
+ { uint64_t x46 = ((uint64_t)x44 & 0xffffffffff);
+ { uint64_t x47 = (x31 + (0x9 * x45));
+ { uint64_t x48 = (x47 >> 0x29);
+ { uint64_t x49 = (x47 & 0x1ffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x28);
+ { uint64_t x52 = (x50 & 0xffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e243m9_6limbs/femulDisplay.log b/src/Specific/solinas64_2e243m9_6limbs/femulDisplay.log
new file mode 100644
index 000000000..6b6b1ee55
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ uint64_t x30 = (uint64_t) (x29 >> 0x29);
+ uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint64_t x33 = (uint64_t) (x32 >> 0x28);
+ uint64_t x34 = ((uint64_t)x32 & 0xffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint64_t x36 = (uint64_t) (x35 >> 0x29);
+ uint64_t x37 = ((uint64_t)x35 & 0x1ffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint64_t x39 = (uint64_t) (x38 >> 0x28);
+ uint64_t x40 = ((uint64_t)x38 & 0xffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint64_t x42 = (uint64_t) (x41 >> 0x29);
+ uint64_t x43 = ((uint64_t)x41 & 0x1ffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x28);
+ uint64_t x46 = ((uint64_t)x44 & 0xffffffffff);
+ uint64_t x47 = (x31 + (0x9 * x45));
+ uint64_t x48 = (x47 >> 0x29);
+ uint64_t x49 = (x47 & 0x1ffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x28);
+ uint64_t x52 = (x50 & 0xffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e243m9_6limbs/fesquare.c b/src/Specific/solinas64_2e243m9_6limbs/fesquare.c
new file mode 100644
index 000000000..c1d0d52c6
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ { uint64_t x17 = (uint64_t) (x16 >> 0x29);
+ { uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint64_t x20 = (uint64_t) (x19 >> 0x28);
+ { uint64_t x21 = ((uint64_t)x19 & 0xffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint64_t x23 = (uint64_t) (x22 >> 0x29);
+ { uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x28);
+ { uint64_t x27 = ((uint64_t)x25 & 0xffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x29);
+ { uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x28);
+ { uint64_t x33 = ((uint64_t)x31 & 0xffffffffff);
+ { uint64_t x34 = (x18 + (0x9 * x32));
+ { uint64_t x35 = (x34 >> 0x29);
+ { uint64_t x36 = (x34 & 0x1ffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x28);
+ { uint64_t x39 = (x37 & 0xffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e243m9_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e243m9_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..5b9f6a27c
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ uint64_t x17 = (uint64_t) (x16 >> 0x29);
+ uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint64_t x20 = (uint64_t) (x19 >> 0x28);
+ uint64_t x21 = ((uint64_t)x19 & 0xffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint64_t x23 = (uint64_t) (x22 >> 0x29);
+ uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint64_t x26 = (uint64_t) (x25 >> 0x28);
+ uint64_t x27 = ((uint64_t)x25 & 0xffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint64_t x29 = (uint64_t) (x28 >> 0x29);
+ uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x28);
+ uint64_t x33 = ((uint64_t)x31 & 0xffffffffff);
+ uint64_t x34 = (x18 + (0x9 * x32));
+ uint64_t x35 = (x34 >> 0x29);
+ uint64_t x36 = (x34 & 0x1ffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x28);
+ uint64_t x39 = (x37 & 0xffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e243m9_6limbs/fesub.c b/src/Specific/solinas64_2e243m9_6limbs/fesub.c
new file mode 100644
index 000000000..50c317b29
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((0x3ffffffffee + x5) - x15);
+ out[1] = ((0x1fffffffffe + x7) - x17);
+ out[2] = ((0x3fffffffffe + x9) - x19);
+ out[3] = ((0x1fffffffffe + x11) - x21);
+ out[4] = ((0x3fffffffffe + x13) - x23);
+ out[5] = ((0x1fffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e243m9_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e243m9_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..22e0778d0
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x1fffffffffe + x12) - x22), ((0x3fffffffffe + x13) - x23), ((0x1fffffffffe + x11) - x21), ((0x3fffffffffe + x9) - x19), ((0x1fffffffffe + x7) - x17), ((0x3ffffffffee + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e243m9_6limbs/freeze.c b/src/Specific/solinas64_2e243m9_6limbs/freeze.c
new file mode 100644
index 000000000..56fe99d55
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffff7);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0x1fffffffff7);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0xffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0x1ffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0xffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0x1ffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0xffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e243m9_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e243m9_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..2240ec6b1
--- /dev/null
+++ b/src/Specific/solinas64_2e243m9_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffff7);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0x1fffffffff7);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0xffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0x1ffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0xffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0x1ffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0xffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 40 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e251m9_6limbs/feadd.c b/src/Specific/solinas64_2e251m9_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e251m9_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e251m9_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e251m9_6limbs/femul.c b/src/Specific/solinas64_2e251m9_6limbs/femul.c
new file mode 100644
index 000000000..3bc17a4ad
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + ((0x2 * ((uint128_t)x13 * x23)) + (0x2 * ((uint128_t)x12 * x21))))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * ((0x2 * ((uint128_t)x9 * x22)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + (0x2 * ((uint128_t)x12 * x19)))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))));
+ { uint64_t x30 = (uint64_t) (x29 >> 0x2a);
+ { uint64_t x31 = ((uint64_t)x29 & 0x3ffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint64_t x33 = (uint64_t) (x32 >> 0x2a);
+ { uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint64_t x36 = (uint64_t) (x35 >> 0x2a);
+ { uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint64_t x39 = (uint64_t) (x38 >> 0x2a);
+ { uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x2a);
+ { uint64_t x43 = ((uint64_t)x41 & 0x3ffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x29);
+ { uint64_t x46 = ((uint64_t)x44 & 0x1ffffffffff);
+ { uint64_t x47 = (x31 + (0x9 * x45));
+ { uint64_t x48 = (x47 >> 0x2a);
+ { uint64_t x49 = (x47 & 0x3ffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x2a);
+ { uint64_t x52 = (x50 & 0x3ffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e251m9_6limbs/femulDisplay.log b/src/Specific/solinas64_2e251m9_6limbs/femulDisplay.log
new file mode 100644
index 000000000..439f15a88
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + ((0x2 * ((uint128_t)x13 * x23)) + (0x2 * ((uint128_t)x12 * x21))))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * ((0x2 * ((uint128_t)x9 * x22)) + ((0x2 * ((uint128_t)x11 * x23)) + ((0x2 * ((uint128_t)x13 * x21)) + (0x2 * ((uint128_t)x12 * x19)))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + ((0x2 * ((uint128_t)x11 * x21)) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))));
+ uint64_t x30 = (uint64_t) (x29 >> 0x2a);
+ uint64_t x31 = ((uint64_t)x29 & 0x3ffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint64_t x33 = (uint64_t) (x32 >> 0x2a);
+ uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint64_t x36 = (uint64_t) (x35 >> 0x2a);
+ uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint64_t x39 = (uint64_t) (x38 >> 0x2a);
+ uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint64_t x42 = (uint64_t) (x41 >> 0x2a);
+ uint64_t x43 = ((uint64_t)x41 & 0x3ffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x29);
+ uint64_t x46 = ((uint64_t)x44 & 0x1ffffffffff);
+ uint64_t x47 = (x31 + (0x9 * x45));
+ uint64_t x48 = (x47 >> 0x2a);
+ uint64_t x49 = (x47 & 0x3ffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x2a);
+ uint64_t x52 = (x50 & 0x3ffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e251m9_6limbs/fesquare.c b/src/Specific/solinas64_2e251m9_6limbs/fesquare.c
new file mode 100644
index 000000000..d638fab8c
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + ((0x2 * ((uint128_t)x10 * x10)) + (0x2 * ((uint128_t)x9 * x8))))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * ((0x2 * ((uint128_t)x6 * x9)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + (0x2 * ((uint128_t)x9 * x6)))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))));
+ { uint64_t x17 = (uint64_t) (x16 >> 0x2a);
+ { uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint64_t x20 = (uint64_t) (x19 >> 0x2a);
+ { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint64_t x23 = (uint64_t) (x22 >> 0x2a);
+ { uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x2a);
+ { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x2a);
+ { uint64_t x30 = ((uint64_t)x28 & 0x3ffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x29);
+ { uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffff);
+ { uint64_t x34 = (x18 + (0x9 * x32));
+ { uint64_t x35 = (x34 >> 0x2a);
+ { uint64_t x36 = (x34 & 0x3ffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x2a);
+ { uint64_t x39 = (x37 & 0x3ffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e251m9_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e251m9_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..a59d1e7f0
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + ((0x2 * ((uint128_t)x10 * x10)) + (0x2 * ((uint128_t)x9 * x8))))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * ((0x2 * ((uint128_t)x6 * x9)) + ((0x2 * ((uint128_t)x8 * x10)) + ((0x2 * ((uint128_t)x10 * x8)) + (0x2 * ((uint128_t)x9 * x6)))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + ((0x2 * ((uint128_t)x8 * x8)) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))));
+ uint64_t x17 = (uint64_t) (x16 >> 0x2a);
+ uint64_t x18 = ((uint64_t)x16 & 0x3ffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint64_t x20 = (uint64_t) (x19 >> 0x2a);
+ uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint64_t x23 = (uint64_t) (x22 >> 0x2a);
+ uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint64_t x26 = (uint64_t) (x25 >> 0x2a);
+ uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint64_t x29 = (uint64_t) (x28 >> 0x2a);
+ uint64_t x30 = ((uint64_t)x28 & 0x3ffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x29);
+ uint64_t x33 = ((uint64_t)x31 & 0x1ffffffffff);
+ uint64_t x34 = (x18 + (0x9 * x32));
+ uint64_t x35 = (x34 >> 0x2a);
+ uint64_t x36 = (x34 & 0x3ffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x2a);
+ uint64_t x39 = (x37 & 0x3ffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e251m9_6limbs/fesub.c b/src/Specific/solinas64_2e251m9_6limbs/fesub.c
new file mode 100644
index 000000000..dcbe60b66
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((Const 8796093022190 + x5) - x15);
+ out[1] = ((0x7fffffffffe + x7) - x17);
+ out[2] = ((0x7fffffffffe + x9) - x19);
+ out[3] = ((0x7fffffffffe + x11) - x21);
+ out[4] = ((0x7fffffffffe + x13) - x23);
+ out[5] = ((0x3fffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e251m9_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e251m9_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..f58a21075
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x3fffffffffe + x12) - x22), ((0x7fffffffffe + x13) - x23), ((0x7fffffffffe + x11) - x21), ((0x7fffffffffe + x9) - x19), ((0x7fffffffffe + x7) - x17), ((Const 8796093022190 + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e251m9_6limbs/freeze.c b/src/Specific/solinas64_2e251m9_6limbs/freeze.c
new file mode 100644
index 000000000..82690b8d6
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 4398046511095);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x3ffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & Const 4398046511095);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0x3ffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0x3ffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0x3ffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0x3ffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0x1ffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e251m9_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e251m9_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..262d009bf
--- /dev/null
+++ b/src/Specific/solinas64_2e251m9_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 4398046511095);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x3ffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1ffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & Const 4398046511095);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0x3ffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0x3ffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0x3ffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0x3ffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0x1ffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 41 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m19_6limbs/feadd.c b/src/Specific/solinas64_2e255m19_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e255m19_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e255m19_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m19_6limbs/femul.c b/src/Specific/solinas64_2e255m19_6limbs/femul.c
new file mode 100644
index 000000000..c99e800f9
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x13 * (0x2 * ((uint128_t)x12 * x22))));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x13 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x13 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x13 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0x13 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ { uint64_t x30 = (uint64_t) (x29 >> 0x2b);
+ { uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint64_t x33 = (uint64_t) (x32 >> 0x2a);
+ { uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint64_t x36 = (uint64_t) (x35 >> 0x2b);
+ { uint64_t x37 = ((uint64_t)x35 & 0x7ffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint64_t x39 = (uint64_t) (x38 >> 0x2a);
+ { uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x2b);
+ { uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x2a);
+ { uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff);
+ { uint64_t x47 = (x31 + (0x13 * x45));
+ { uint64_t x48 = (x47 >> 0x2b);
+ { uint64_t x49 = (x47 & 0x7ffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x2a);
+ { uint64_t x52 = (x50 & 0x3ffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e255m19_6limbs/femulDisplay.log b/src/Specific/solinas64_2e255m19_6limbs/femulDisplay.log
new file mode 100644
index 000000000..b29b13537
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x13 * (0x2 * ((uint128_t)x12 * x22))));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x13 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x13 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x13 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0x13 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ uint64_t x30 = (uint64_t) (x29 >> 0x2b);
+ uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint64_t x33 = (uint64_t) (x32 >> 0x2a);
+ uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint64_t x36 = (uint64_t) (x35 >> 0x2b);
+ uint64_t x37 = ((uint64_t)x35 & 0x7ffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint64_t x39 = (uint64_t) (x38 >> 0x2a);
+ uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint64_t x42 = (uint64_t) (x41 >> 0x2b);
+ uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x2a);
+ uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff);
+ uint64_t x47 = (x31 + (0x13 * x45));
+ uint64_t x48 = (x47 >> 0x2b);
+ uint64_t x49 = (x47 & 0x7ffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x2a);
+ uint64_t x52 = (x50 & 0x3ffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m19_6limbs/fesquare.c b/src/Specific/solinas64_2e255m19_6limbs/fesquare.c
new file mode 100644
index 000000000..58321a3b8
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x13 * (0x2 * ((uint128_t)x9 * x9))));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ { uint64_t x17 = (uint64_t) (x16 >> 0x2b);
+ { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint64_t x20 = (uint64_t) (x19 >> 0x2a);
+ { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint64_t x23 = (uint64_t) (x22 >> 0x2b);
+ { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x2a);
+ { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x2b);
+ { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x2a);
+ { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff);
+ { uint64_t x34 = (x18 + (0x13 * x32));
+ { uint64_t x35 = (x34 >> 0x2b);
+ { uint64_t x36 = (x34 & 0x7ffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x2a);
+ { uint64_t x39 = (x37 & 0x3ffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e255m19_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e255m19_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..bd69925ce
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x13 * (0x2 * ((uint128_t)x9 * x9))));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ uint64_t x17 = (uint64_t) (x16 >> 0x2b);
+ uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint64_t x20 = (uint64_t) (x19 >> 0x2a);
+ uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint64_t x23 = (uint64_t) (x22 >> 0x2b);
+ uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint64_t x26 = (uint64_t) (x25 >> 0x2a);
+ uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint64_t x29 = (uint64_t) (x28 >> 0x2b);
+ uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x2a);
+ uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff);
+ uint64_t x34 = (x18 + (0x13 * x32));
+ uint64_t x35 = (x34 >> 0x2b);
+ uint64_t x36 = (x34 & 0x7ffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x2a);
+ uint64_t x39 = (x37 & 0x3ffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m19_6limbs/fesub.c b/src/Specific/solinas64_2e255m19_6limbs/fesub.c
new file mode 100644
index 000000000..54f3005a3
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((0xfffffffffda + x5) - x15);
+ out[1] = ((0x7fffffffffe + x7) - x17);
+ out[2] = ((0xffffffffffe + x9) - x19);
+ out[3] = ((0x7fffffffffe + x11) - x21);
+ out[4] = ((0xffffffffffe + x13) - x23);
+ out[5] = ((0x7fffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e255m19_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e255m19_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..486c4c548
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x7fffffffffe + x12) - x22), ((0xffffffffffe + x13) - x23), ((0x7fffffffffe + x11) - x21), ((0xffffffffffe + x9) - x19), ((0x7fffffffffe + x7) - x17), ((0xfffffffffda + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m19_6limbs/freeze.c b/src/Specific/solinas64_2e255m19_6limbs/freeze.c
new file mode 100644
index 000000000..7ae8b3623
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffed);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x7ffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0x7ffffffffed);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0x3ffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0x7ffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0x3ffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0x7ffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0x3ffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e255m19_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e255m19_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..a6ed6c0c3
--- /dev/null
+++ b/src/Specific/solinas64_2e255m19_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffed);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x7ffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0x7ffffffffed);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0x3ffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0x7ffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0x3ffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0x7ffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0x3ffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m765_6limbs/feadd.c b/src/Specific/solinas64_2e255m765_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e255m765_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e255m765_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m765_6limbs/femul.c b/src/Specific/solinas64_2e255m765_6limbs/femul.c
new file mode 100644
index 000000000..0e0cb8e27
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x2fd * (0x2 * ((uint128_t)x12 * x22))));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x2fd * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x2fd * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x2fd * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0x2fd * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ { uint64_t x30 = (uint64_t) (x29 >> 0x2b);
+ { uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint64_t x33 = (uint64_t) (x32 >> 0x2a);
+ { uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint64_t x36 = (uint64_t) (x35 >> 0x2b);
+ { uint64_t x37 = ((uint64_t)x35 & 0x7ffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint64_t x39 = (uint64_t) (x38 >> 0x2a);
+ { uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x2b);
+ { uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x2a);
+ { uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff);
+ { uint64_t x47 = (x31 + (0x2fd * x45));
+ { uint64_t x48 = (x47 >> 0x2b);
+ { uint64_t x49 = (x47 & 0x7ffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x2a);
+ { uint64_t x52 = (x50 & 0x3ffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e255m765_6limbs/femulDisplay.log b/src/Specific/solinas64_2e255m765_6limbs/femulDisplay.log
new file mode 100644
index 000000000..1adaefd95
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x2fd * (0x2 * ((uint128_t)x12 * x22))));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x2fd * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x2fd * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x2fd * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0x2fd * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ uint64_t x30 = (uint64_t) (x29 >> 0x2b);
+ uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint64_t x33 = (uint64_t) (x32 >> 0x2a);
+ uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint64_t x36 = (uint64_t) (x35 >> 0x2b);
+ uint64_t x37 = ((uint64_t)x35 & 0x7ffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint64_t x39 = (uint64_t) (x38 >> 0x2a);
+ uint64_t x40 = ((uint64_t)x38 & 0x3ffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint64_t x42 = (uint64_t) (x41 >> 0x2b);
+ uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x2a);
+ uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff);
+ uint64_t x47 = (x31 + (0x2fd * x45));
+ uint64_t x48 = (x47 >> 0x2b);
+ uint64_t x49 = (x47 & 0x7ffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x2a);
+ uint64_t x52 = (x50 & 0x3ffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m765_6limbs/fesquare.c b/src/Specific/solinas64_2e255m765_6limbs/fesquare.c
new file mode 100644
index 000000000..063e8a157
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x2fd * (0x2 * ((uint128_t)x9 * x9))));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x2fd * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x2fd * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x2fd * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0x2fd * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ { uint64_t x17 = (uint64_t) (x16 >> 0x2b);
+ { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint64_t x20 = (uint64_t) (x19 >> 0x2a);
+ { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint64_t x23 = (uint64_t) (x22 >> 0x2b);
+ { uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x2a);
+ { uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x2b);
+ { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x2a);
+ { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff);
+ { uint64_t x34 = (x18 + (0x2fd * x32));
+ { uint64_t x35 = (x34 >> 0x2b);
+ { uint64_t x36 = (x34 & 0x7ffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x2a);
+ { uint64_t x39 = (x37 & 0x3ffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e255m765_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e255m765_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..0b5898c36
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x2fd * (0x2 * ((uint128_t)x9 * x9))));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x2fd * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x2fd * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x2fd * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0x2fd * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ uint64_t x17 = (uint64_t) (x16 >> 0x2b);
+ uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint64_t x20 = (uint64_t) (x19 >> 0x2a);
+ uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint64_t x23 = (uint64_t) (x22 >> 0x2b);
+ uint64_t x24 = ((uint64_t)x22 & 0x7ffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint64_t x26 = (uint64_t) (x25 >> 0x2a);
+ uint64_t x27 = ((uint64_t)x25 & 0x3ffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint64_t x29 = (uint64_t) (x28 >> 0x2b);
+ uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x2a);
+ uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff);
+ uint64_t x34 = (x18 + (0x2fd * x32));
+ uint64_t x35 = (x34 >> 0x2b);
+ uint64_t x36 = (x34 & 0x7ffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x2a);
+ uint64_t x39 = (x37 & 0x3ffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m765_6limbs/fesub.c b/src/Specific/solinas64_2e255m765_6limbs/fesub.c
new file mode 100644
index 000000000..fdc5c7f23
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((Const 17592186042886 + x5) - x15);
+ out[1] = ((0x7fffffffffe + x7) - x17);
+ out[2] = ((0xffffffffffe + x9) - x19);
+ out[3] = ((0x7fffffffffe + x11) - x21);
+ out[4] = ((0xffffffffffe + x13) - x23);
+ out[5] = ((0x7fffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e255m765_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e255m765_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..5befbd242
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x7fffffffffe + x12) - x22), ((0xffffffffffe + x13) - x23), ((0x7fffffffffe + x11) - x21), ((0xffffffffffe + x9) - x19), ((0x7fffffffffe + x7) - x17), ((Const 17592186042886 + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e255m765_6limbs/freeze.c b/src/Specific/solinas64_2e255m765_6limbs/freeze.c
new file mode 100644
index 000000000..853fcdf56
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffd03);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x7ffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0x7fffffffd03);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0x3ffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0x7ffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0x3ffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0x7ffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0x3ffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e255m765_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e255m765_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..1e37295db
--- /dev/null
+++ b/src/Specific/solinas64_2e255m765_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7fffffffd03);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3ffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x7ffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0x7fffffffd03);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0x3ffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0x7ffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0x3ffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0x7ffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0x3ffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m189_6limbs/feadd.c b/src/Specific/solinas64_2e256m189_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m189_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e256m189_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m189_6limbs/femul.c b/src/Specific/solinas64_2e256m189_6limbs/femul.c
new file mode 100644
index 000000000..eeb119f7d
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((0x2 * ((uint128_t)x9 * x19)) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0xbd * (0x2 * ((uint128_t)x12 * x22))));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((uint128_t)x11 * x15)))) + (0xbd * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0xbd * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0xbd * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19)))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0xbd * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))));
+ { uint64_t x30 = (uint64_t) (x29 >> 0x2b);
+ { uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint64_t x33 = (uint64_t) (x32 >> 0x2b);
+ { uint64_t x34 = ((uint64_t)x32 & 0x7ffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint64_t x36 = (uint64_t) (x35 >> 0x2a);
+ { uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint64_t x39 = (uint64_t) (x38 >> 0x2b);
+ { uint64_t x40 = ((uint64_t)x38 & 0x7ffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x2b);
+ { uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x2a);
+ { uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff);
+ { uint64_t x47 = (x31 + (0xbd * x45));
+ { uint64_t x48 = (x47 >> 0x2b);
+ { uint64_t x49 = (x47 & 0x7ffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x2b);
+ { uint64_t x52 = (x50 & 0x7ffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m189_6limbs/femulDisplay.log b/src/Specific/solinas64_2e256m189_6limbs/femulDisplay.log
new file mode 100644
index 000000000..5147bd4a8
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((0x2 * ((uint128_t)x9 * x19)) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0xbd * (0x2 * ((uint128_t)x12 * x22))));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((uint128_t)x11 * x15)))) + (0xbd * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0xbd * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0xbd * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19)))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0xbd * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))));
+ uint64_t x30 = (uint64_t) (x29 >> 0x2b);
+ uint64_t x31 = ((uint64_t)x29 & 0x7ffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint64_t x33 = (uint64_t) (x32 >> 0x2b);
+ uint64_t x34 = ((uint64_t)x32 & 0x7ffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint64_t x36 = (uint64_t) (x35 >> 0x2a);
+ uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint64_t x39 = (uint64_t) (x38 >> 0x2b);
+ uint64_t x40 = ((uint64_t)x38 & 0x7ffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint64_t x42 = (uint64_t) (x41 >> 0x2b);
+ uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x2a);
+ uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff);
+ uint64_t x47 = (x31 + (0xbd * x45));
+ uint64_t x48 = (x47 >> 0x2b);
+ uint64_t x49 = (x47 & 0x7ffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x2b);
+ uint64_t x52 = (x50 & 0x7ffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m189_6limbs/fesquare.c b/src/Specific/solinas64_2e256m189_6limbs/fesquare.c
new file mode 100644
index 000000000..b5f9dabbf
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + ((0x2 * ((uint128_t)x6 * x6)) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0xbd * (0x2 * ((uint128_t)x9 * x9))));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0xbd * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0xbd * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xbd * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6)))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0xbd * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))));
+ { uint64_t x17 = (uint64_t) (x16 >> 0x2b);
+ { uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint64_t x20 = (uint64_t) (x19 >> 0x2b);
+ { uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint64_t x23 = (uint64_t) (x22 >> 0x2a);
+ { uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x2b);
+ { uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x2b);
+ { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x2a);
+ { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff);
+ { uint64_t x34 = (x18 + (0xbd * x32));
+ { uint64_t x35 = (x34 >> 0x2b);
+ { uint64_t x36 = (x34 & 0x7ffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x2b);
+ { uint64_t x39 = (x37 & 0x7ffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m189_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e256m189_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..c679ff673
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + ((0x2 * ((uint128_t)x6 * x6)) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0xbd * (0x2 * ((uint128_t)x9 * x9))));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0xbd * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0xbd * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xbd * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6)))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0xbd * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))));
+ uint64_t x17 = (uint64_t) (x16 >> 0x2b);
+ uint64_t x18 = ((uint64_t)x16 & 0x7ffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint64_t x20 = (uint64_t) (x19 >> 0x2b);
+ uint64_t x21 = ((uint64_t)x19 & 0x7ffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint64_t x23 = (uint64_t) (x22 >> 0x2a);
+ uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint64_t x26 = (uint64_t) (x25 >> 0x2b);
+ uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint64_t x29 = (uint64_t) (x28 >> 0x2b);
+ uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x2a);
+ uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff);
+ uint64_t x34 = (x18 + (0xbd * x32));
+ uint64_t x35 = (x34 >> 0x2b);
+ uint64_t x36 = (x34 & 0x7ffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x2b);
+ uint64_t x39 = (x37 & 0x7ffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m189_6limbs/fesub.c b/src/Specific/solinas64_2e256m189_6limbs/fesub.c
new file mode 100644
index 000000000..176aaf919
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((Const 17592186044038 + x5) - x15);
+ out[1] = ((0xffffffffffe + x7) - x17);
+ out[2] = ((0x7fffffffffe + x9) - x19);
+ out[3] = ((0xffffffffffe + x11) - x21);
+ out[4] = ((0xffffffffffe + x13) - x23);
+ out[5] = ((0x7fffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m189_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e256m189_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..3b4749268
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x7fffffffffe + x12) - x22), ((0xffffffffffe + x13) - x23), ((0xffffffffffe + x11) - x21), ((0x7fffffffffe + x9) - x19), ((0xffffffffffe + x7) - x17), ((Const 17592186044038 + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m189_6limbs/freeze.c b/src/Specific/solinas64_2e256m189_6limbs/freeze.c
new file mode 100644
index 000000000..4ae724a39
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8796093022019);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x7ffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & Const 8796093022019);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0x7ffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0x3ffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0x7ffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0x7ffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0x3ffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m189_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e256m189_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..54e1f5906
--- /dev/null
+++ b/src/Specific/solinas64_2e256m189_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8796093022019);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x7ffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & Const 8796093022019);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0x7ffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0x3ffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0x7ffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0x7ffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0x3ffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feadd.c b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freeze.c b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freeze.c
new file mode 100644
index 000000000..ef8bc0847
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freeze.c
@@ -0,0 +1,33 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffff);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff);
+ { uint64_t x18, ℤ x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) Syntax.TZ) (Return x16, Return x6, 0x3ff);
+ { uint64_t x21, ℤ x22 = Op (Syntax.SubWithGetBorrow 43 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x19, Return x8, 0x0);
+ { uint64_t x24, ℤ x25 = Op (Syntax.SubWithGetBorrow 43 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) Syntax.TZ) (Return x22, Return x10, 0x200000);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, Const 4398046510080);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0x7ffffffffff);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0x7ffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0x3ff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x43, uint8_t x44 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, 0x0);
+ { uint64_t x45 = (x29 & 0x200000);
+ { uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x24, Return x45);
+ { uint64_t x49 = (x29 & Const 4398046510080);
+ { uint64_t x51, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x27, Return x49);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x43;
+ out[4] = x47;
+ out[5] = x51;
+ }}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..74f07be44
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e224p2e192p2e96m1_6limbs/freezeDisplay.log
@@ -0,0 +1,25 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x7ffffffffff);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff);
+ uint64_t x18, ℤ x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) Syntax.TZ) (Return x16, Return x6, 0x3ff);
+ uint64_t x21, ℤ x22 = Op (Syntax.SubWithGetBorrow 43 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) Syntax.TZ) (Return x19, Return x8, 0x0);
+ uint64_t x24, ℤ x25 = Op (Syntax.SubWithGetBorrow 43 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) Syntax.TZ) (Return x22, Return x10, 0x200000);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 Syntax.TZ (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, Const 4398046510080);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0x7ffffffffff);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0x7ffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0x3ff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x43, uint8_t x44 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, 0x0);
+ uint64_t x45 = (x29 & 0x200000);
+ uint64_t x47, uint8_t x48 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x44, Return x24, Return x45);
+ uint64_t x49 = (x29 & Const 4398046510080);
+ uint64_t x51, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x48, Return x27, Return x49);
+ (Return x51, Return x47, Return x43, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/feadd.c b/src/Specific/solinas64_2e256m2e32m977_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e256m2e32m977_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/femul.c b/src/Specific/solinas64_2e256m2e32m977_6limbs/femul.c
new file mode 100644
index 000000000..cd2d8e297
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/femul.c
@@ -0,0 +1,58 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((0x2 * ((uint128_t)x9 * x19)) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + ((0x3d1 * (0x2 * ((uint128_t)x12 * x22))) + (0x100000000 * (0x2 * ((uint128_t)x12 * x22)))));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((uint128_t)x11 * x15)))) + ((0x3d1 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))) + (0x100000000 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23))))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + ((0x3d1 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))) + (0x100000000 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21))))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + ((0x3d1 * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19)))))) + (0x100000000 * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19))))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + ((0x3d1 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))) + (0x100000000 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17)))))))));
+ { uint64_t x30 = (uint64_t) (x24 >> 0x2a);
+ { uint64_t x31 = ((uint64_t)x24 & 0x3ffffffffff);
+ { uint128_t x32 = (((uint128_t)0x40000000000 * x30) + x31);
+ { uint64_t x33 = (uint64_t) (x32 >> 0x2a);
+ { uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff);
+ { uint128_t x35 = (((uint128_t)0x40000000000 * x33) + x34);
+ { uint64_t x36 = (uint64_t) (x35 >> 0x2a);
+ { uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff);
+ { uint128_t x38 = (x29 + ((0x3d1 * x36) + ((uint128_t)0x100000000 * x36)));
+ { uint128_t x39 = (x38 >> 0x2b);
+ { uint64_t x40 = ((uint64_t)x38 & 0x7ffffffffff);
+ { uint128_t x41 = (x39 + x28);
+ { uint128_t x42 = (x41 >> 0x2b);
+ { uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff);
+ { uint128_t x44 = (x42 + x27);
+ { uint128_t x45 = (x44 >> 0x2a);
+ { uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff);
+ { uint128_t x47 = (x45 + x26);
+ { uint128_t x48 = (x47 >> 0x2b);
+ { uint64_t x49 = ((uint64_t)x47 & 0x7ffffffffff);
+ { uint128_t x50 = (x48 + x25);
+ { uint128_t x51 = (x50 >> 0x2b);
+ { uint64_t x52 = ((uint64_t)x50 & 0x7ffffffffff);
+ { uint128_t x53 = (x51 + x37);
+ { uint64_t x54 = (uint64_t) (x53 >> 0x2a);
+ { uint64_t x55 = ((uint64_t)x53 & 0x3ffffffffff);
+ { uint128_t x56 = (x40 + ((0x3d1 * x54) + ((uint128_t)0x100000000 * x54)));
+ { uint64_t x57 = (uint64_t) (x56 >> 0x2b);
+ { uint64_t x58 = ((uint64_t)x56 & 0x7ffffffffff);
+ { uint64_t x59 = (x58 >> 0x2b);
+ { uint64_t x60 = (x58 & 0x7ffffffffff);
+ out[0] = x60;
+ out[1] = (x59 + (x57 + x43));
+ out[2] = x46;
+ out[3] = x49;
+ out[4] = x52;
+ out[5] = x55;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/femulDisplay.log b/src/Specific/solinas64_2e256m2e32m977_6limbs/femulDisplay.log
new file mode 100644
index 000000000..acddfec0b
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/femulDisplay.log
@@ -0,0 +1,44 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + ((0x2 * ((uint128_t)x9 * x19)) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + ((0x3d1 * (0x2 * ((uint128_t)x12 * x22))) + (0x100000000 * (0x2 * ((uint128_t)x12 * x22)))));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((uint128_t)x11 * x15)))) + ((0x3d1 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))) + (0x100000000 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23))))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + ((0x3d1 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))) + (0x100000000 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21))))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + ((0x3d1 * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19)))))) + (0x100000000 * ((0x2 * ((uint128_t)x9 * x22)) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + (0x2 * ((uint128_t)x12 * x19))))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + ((0x3d1 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))) + (0x100000000 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17)))))))));
+ uint64_t x30 = (uint64_t) (x24 >> 0x2a);
+ uint64_t x31 = ((uint64_t)x24 & 0x3ffffffffff);
+ uint128_t x32 = (((uint128_t)0x40000000000 * x30) + x31);
+ uint64_t x33 = (uint64_t) (x32 >> 0x2a);
+ uint64_t x34 = ((uint64_t)x32 & 0x3ffffffffff);
+ uint128_t x35 = (((uint128_t)0x40000000000 * x33) + x34);
+ uint64_t x36 = (uint64_t) (x35 >> 0x2a);
+ uint64_t x37 = ((uint64_t)x35 & 0x3ffffffffff);
+ uint128_t x38 = (x29 + ((0x3d1 * x36) + ((uint128_t)0x100000000 * x36)));
+ uint128_t x39 = (x38 >> 0x2b);
+ uint64_t x40 = ((uint64_t)x38 & 0x7ffffffffff);
+ uint128_t x41 = (x39 + x28);
+ uint128_t x42 = (x41 >> 0x2b);
+ uint64_t x43 = ((uint64_t)x41 & 0x7ffffffffff);
+ uint128_t x44 = (x42 + x27);
+ uint128_t x45 = (x44 >> 0x2a);
+ uint64_t x46 = ((uint64_t)x44 & 0x3ffffffffff);
+ uint128_t x47 = (x45 + x26);
+ uint128_t x48 = (x47 >> 0x2b);
+ uint64_t x49 = ((uint64_t)x47 & 0x7ffffffffff);
+ uint128_t x50 = (x48 + x25);
+ uint128_t x51 = (x50 >> 0x2b);
+ uint64_t x52 = ((uint64_t)x50 & 0x7ffffffffff);
+ uint128_t x53 = (x51 + x37);
+ uint64_t x54 = (uint64_t) (x53 >> 0x2a);
+ uint64_t x55 = ((uint64_t)x53 & 0x3ffffffffff);
+ uint128_t x56 = (x40 + ((0x3d1 * x54) + ((uint128_t)0x100000000 * x54)));
+ uint64_t x57 = (uint64_t) (x56 >> 0x2b);
+ uint64_t x58 = ((uint64_t)x56 & 0x7ffffffffff);
+ uint64_t x59 = (x58 >> 0x2b);
+ uint64_t x60 = (x58 & 0x7ffffffffff);
+ return (Return x55, Return x52, Return x49, Return x46, (x59 + (x57 + x43)), Return x60))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquare.c b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquare.c
new file mode 100644
index 000000000..e4d24df18
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquare.c
@@ -0,0 +1,52 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + ((0x2 * ((uint128_t)x6 * x6)) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + ((0x3d1 * (0x2 * ((uint128_t)x9 * x9))) + (0x100000000 * (0x2 * ((uint128_t)x9 * x9)))));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + ((0x3d1 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))) + (0x100000000 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10))))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + ((0x3d1 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))) + (0x100000000 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8))))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((0x3d1 * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6)))))) + (0x100000000 * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6))))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + ((0x3d1 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))) + (0x100000000 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4)))))))));
+ { uint64_t x17 = (uint64_t) (x11 >> 0x2a);
+ { uint64_t x18 = ((uint64_t)x11 & 0x3ffffffffff);
+ { uint128_t x19 = (((uint128_t)0x40000000000 * x17) + x18);
+ { uint64_t x20 = (uint64_t) (x19 >> 0x2a);
+ { uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff);
+ { uint128_t x22 = (((uint128_t)0x40000000000 * x20) + x21);
+ { uint64_t x23 = (uint64_t) (x22 >> 0x2a);
+ { uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff);
+ { uint128_t x25 = (x16 + ((0x3d1 * x23) + ((uint128_t)0x100000000 * x23)));
+ { uint128_t x26 = (x25 >> 0x2b);
+ { uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffff);
+ { uint128_t x28 = (x26 + x15);
+ { uint128_t x29 = (x28 >> 0x2b);
+ { uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff);
+ { uint128_t x31 = (x29 + x14);
+ { uint128_t x32 = (x31 >> 0x2a);
+ { uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff);
+ { uint128_t x34 = (x32 + x13);
+ { uint128_t x35 = (x34 >> 0x2b);
+ { uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffff);
+ { uint128_t x37 = (x35 + x12);
+ { uint128_t x38 = (x37 >> 0x2b);
+ { uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffff);
+ { uint128_t x40 = (x38 + x24);
+ { uint64_t x41 = (uint64_t) (x40 >> 0x2a);
+ { uint64_t x42 = ((uint64_t)x40 & 0x3ffffffffff);
+ { uint128_t x43 = (x27 + ((0x3d1 * x41) + ((uint128_t)0x100000000 * x41)));
+ { uint64_t x44 = (uint64_t) (x43 >> 0x2b);
+ { uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffff);
+ { uint64_t x46 = (x45 >> 0x2b);
+ { uint64_t x47 = (x45 & 0x7ffffffffff);
+ out[0] = x47;
+ out[1] = (x46 + (x44 + x30));
+ out[2] = x33;
+ out[3] = x36;
+ out[4] = x39;
+ out[5] = x42;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..f9b2d40b2
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesquareDisplay.log
@@ -0,0 +1,44 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + ((0x2 * ((uint128_t)x6 * x6)) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + ((0x3d1 * (0x2 * ((uint128_t)x9 * x9))) + (0x100000000 * (0x2 * ((uint128_t)x9 * x9)))));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + ((0x3d1 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))) + (0x100000000 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10))))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + ((0x3d1 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))) + (0x100000000 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8))))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + ((0x3d1 * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6)))))) + (0x100000000 * ((0x2 * ((uint128_t)x6 * x9)) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + (0x2 * ((uint128_t)x9 * x6))))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + ((0x3d1 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))) + (0x100000000 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4)))))))));
+ uint64_t x17 = (uint64_t) (x11 >> 0x2a);
+ uint64_t x18 = ((uint64_t)x11 & 0x3ffffffffff);
+ uint128_t x19 = (((uint128_t)0x40000000000 * x17) + x18);
+ uint64_t x20 = (uint64_t) (x19 >> 0x2a);
+ uint64_t x21 = ((uint64_t)x19 & 0x3ffffffffff);
+ uint128_t x22 = (((uint128_t)0x40000000000 * x20) + x21);
+ uint64_t x23 = (uint64_t) (x22 >> 0x2a);
+ uint64_t x24 = ((uint64_t)x22 & 0x3ffffffffff);
+ uint128_t x25 = (x16 + ((0x3d1 * x23) + ((uint128_t)0x100000000 * x23)));
+ uint128_t x26 = (x25 >> 0x2b);
+ uint64_t x27 = ((uint64_t)x25 & 0x7ffffffffff);
+ uint128_t x28 = (x26 + x15);
+ uint128_t x29 = (x28 >> 0x2b);
+ uint64_t x30 = ((uint64_t)x28 & 0x7ffffffffff);
+ uint128_t x31 = (x29 + x14);
+ uint128_t x32 = (x31 >> 0x2a);
+ uint64_t x33 = ((uint64_t)x31 & 0x3ffffffffff);
+ uint128_t x34 = (x32 + x13);
+ uint128_t x35 = (x34 >> 0x2b);
+ uint64_t x36 = ((uint64_t)x34 & 0x7ffffffffff);
+ uint128_t x37 = (x35 + x12);
+ uint128_t x38 = (x37 >> 0x2b);
+ uint64_t x39 = ((uint64_t)x37 & 0x7ffffffffff);
+ uint128_t x40 = (x38 + x24);
+ uint64_t x41 = (uint64_t) (x40 >> 0x2a);
+ uint64_t x42 = ((uint64_t)x40 & 0x3ffffffffff);
+ uint128_t x43 = (x27 + ((0x3d1 * x41) + ((uint128_t)0x100000000 * x41)));
+ uint64_t x44 = (uint64_t) (x43 >> 0x2b);
+ uint64_t x45 = ((uint64_t)x43 & 0x7ffffffffff);
+ uint64_t x46 = (x45 >> 0x2b);
+ uint64_t x47 = (x45 & 0x7ffffffffff);
+ return (Return x42, Return x39, Return x36, Return x33, (x46 + (x44 + x30)), Return x47))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/fesub.c b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesub.c
new file mode 100644
index 000000000..9bdf1ffa7
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((Const 17583596107870 + x5) - x15);
+ out[1] = ((0xffffffffffe + x7) - x17);
+ out[2] = ((0x7fffffffffe + x9) - x19);
+ out[3] = ((0xffffffffffe + x11) - x21);
+ out[4] = ((0xffffffffffe + x13) - x23);
+ out[5] = ((0x7fffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..2564c2ad6
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x7fffffffffe + x12) - x22), ((0xffffffffffe + x13) - x23), ((0xffffffffffe + x11) - x21), ((0x7fffffffffe + x9) - x19), ((0xffffffffffe + x7) - x17), ((Const 17583596107870 + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/freeze.c b/src/Specific/solinas64_2e256m2e32m977_6limbs/freeze.c
new file mode 100644
index 000000000..fefa8ecd5
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8791798053935);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x7ffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & Const 8791798053935);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0x7ffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0x3ffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0x7ffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0x7ffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0x3ffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e256m2e32m977_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e256m2e32m977_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..27a07ac5b
--- /dev/null
+++ b/src/Specific/solinas64_2e256m2e32m977_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, Const 8791798053935);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7ffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3ffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x7ffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x7ffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x3ffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & Const 8791798053935);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0x7ffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0x3ffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0x7ffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0x7ffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 43 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0x3ffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 42 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e266m3_6limbs/feadd.c b/src/Specific/solinas64_2e266m3_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e266m3_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e266m3_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e266m3_6limbs/femul.c b/src/Specific/solinas64_2e266m3_6limbs/femul.c
new file mode 100644
index 000000000..a42a8f09e
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + ((0x2 * ((uint128_t)x7 * x23)) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + ((0x2 * ((uint128_t)x13 * x17)) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x3 * ((uint128_t)x12 * x22)));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((uint128_t)x11 * x15)))) + (0x3 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x3 * (((uint128_t)x11 * x22) + ((0x2 * ((uint128_t)x13 * x23)) + ((uint128_t)x12 * x21)))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x3 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0x3 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))));
+ { uint64_t x30 = (uint64_t) (x29 >> 0x2d);
+ { uint64_t x31 = ((uint64_t)x29 & 0x1fffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint64_t x33 = (uint64_t) (x32 >> 0x2c);
+ { uint64_t x34 = ((uint64_t)x32 & 0xfffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint64_t x36 = (uint64_t) (x35 >> 0x2c);
+ { uint64_t x37 = ((uint64_t)x35 & 0xfffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint64_t x39 = (uint64_t) (x38 >> 0x2d);
+ { uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x2c);
+ { uint64_t x43 = ((uint64_t)x41 & 0xfffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x2c);
+ { uint64_t x46 = ((uint64_t)x44 & 0xfffffffffff);
+ { uint64_t x47 = (x31 + (0x3 * x45));
+ { uint64_t x48 = (x47 >> 0x2d);
+ { uint64_t x49 = (x47 & 0x1fffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x2c);
+ { uint64_t x52 = (x50 & 0xfffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e266m3_6limbs/femulDisplay.log b/src/Specific/solinas64_2e266m3_6limbs/femulDisplay.log
new file mode 100644
index 000000000..8e3d2938d
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + ((0x2 * ((uint128_t)x7 * x23)) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + ((0x2 * ((uint128_t)x13 * x17)) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x3 * ((uint128_t)x12 * x22)));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((uint128_t)x11 * x15)))) + (0x3 * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x3 * (((uint128_t)x11 * x22) + ((0x2 * ((uint128_t)x13 * x23)) + ((uint128_t)x12 * x21)))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x3 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0x3 * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))));
+ uint64_t x30 = (uint64_t) (x29 >> 0x2d);
+ uint64_t x31 = ((uint64_t)x29 & 0x1fffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint64_t x33 = (uint64_t) (x32 >> 0x2c);
+ uint64_t x34 = ((uint64_t)x32 & 0xfffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint64_t x36 = (uint64_t) (x35 >> 0x2c);
+ uint64_t x37 = ((uint64_t)x35 & 0xfffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint64_t x39 = (uint64_t) (x38 >> 0x2d);
+ uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint64_t x42 = (uint64_t) (x41 >> 0x2c);
+ uint64_t x43 = ((uint64_t)x41 & 0xfffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x2c);
+ uint64_t x46 = ((uint64_t)x44 & 0xfffffffffff);
+ uint64_t x47 = (x31 + (0x3 * x45));
+ uint64_t x48 = (x47 >> 0x2d);
+ uint64_t x49 = (x47 & 0x1fffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x2c);
+ uint64_t x52 = (x50 & 0xfffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e266m3_6limbs/fesquare.c b/src/Specific/solinas64_2e266m3_6limbs/fesquare.c
new file mode 100644
index 000000000..175fd89fc
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + ((0x2 * ((uint128_t)x4 * x10)) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x3 * ((uint128_t)x9 * x9)));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x3 * (((uint128_t)x8 * x9) + ((0x2 * ((uint128_t)x10 * x10)) + ((uint128_t)x9 * x8)))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0x3 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))));
+ { uint64_t x17 = (uint64_t) (x16 >> 0x2d);
+ { uint64_t x18 = ((uint64_t)x16 & 0x1fffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint64_t x20 = (uint64_t) (x19 >> 0x2c);
+ { uint64_t x21 = ((uint64_t)x19 & 0xfffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint64_t x23 = (uint64_t) (x22 >> 0x2c);
+ { uint64_t x24 = ((uint64_t)x22 & 0xfffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x2d);
+ { uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x2c);
+ { uint64_t x30 = ((uint64_t)x28 & 0xfffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x2c);
+ { uint64_t x33 = ((uint64_t)x31 & 0xfffffffffff);
+ { uint64_t x34 = (x18 + (0x3 * x32));
+ { uint64_t x35 = (x34 >> 0x2d);
+ { uint64_t x36 = (x34 & 0x1fffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x2c);
+ { uint64_t x39 = (x37 & 0xfffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e266m3_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e266m3_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..390b09a98
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + ((0x2 * ((uint128_t)x4 * x10)) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x3 * ((uint128_t)x9 * x9)));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0x3 * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x3 * (((uint128_t)x8 * x9) + ((0x2 * ((uint128_t)x10 * x10)) + ((uint128_t)x9 * x8)))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0x3 * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))));
+ uint64_t x17 = (uint64_t) (x16 >> 0x2d);
+ uint64_t x18 = ((uint64_t)x16 & 0x1fffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint64_t x20 = (uint64_t) (x19 >> 0x2c);
+ uint64_t x21 = ((uint64_t)x19 & 0xfffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint64_t x23 = (uint64_t) (x22 >> 0x2c);
+ uint64_t x24 = ((uint64_t)x22 & 0xfffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint64_t x26 = (uint64_t) (x25 >> 0x2d);
+ uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint64_t x29 = (uint64_t) (x28 >> 0x2c);
+ uint64_t x30 = ((uint64_t)x28 & 0xfffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x2c);
+ uint64_t x33 = ((uint64_t)x31 & 0xfffffffffff);
+ uint64_t x34 = (x18 + (0x3 * x32));
+ uint64_t x35 = (x34 >> 0x2d);
+ uint64_t x36 = (x34 & 0x1fffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x2c);
+ uint64_t x39 = (x37 & 0xfffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e266m3_6limbs/fesub.c b/src/Specific/solinas64_2e266m3_6limbs/fesub.c
new file mode 100644
index 000000000..fe58e8d37
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((0x3ffffffffffa + x5) - x15);
+ out[1] = ((0x1ffffffffffe + x7) - x17);
+ out[2] = ((0x1ffffffffffe + x9) - x19);
+ out[3] = ((0x3ffffffffffe + x11) - x21);
+ out[4] = ((0x1ffffffffffe + x13) - x23);
+ out[5] = ((0x1ffffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e266m3_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e266m3_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..b7fb76359
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x1ffffffffffe + x12) - x22), ((0x1ffffffffffe + x13) - x23), ((0x3ffffffffffe + x11) - x21), ((0x1ffffffffffe + x9) - x19), ((0x1ffffffffffe + x7) - x17), ((0x3ffffffffffa + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e266m3_6limbs/freeze.c b/src/Specific/solinas64_2e266m3_6limbs/freeze.c
new file mode 100644
index 000000000..bc7c0b19b
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffd);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xfffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xfffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xfffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xfffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0x1ffffffffffd);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0xfffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0xfffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0x1fffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0xfffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0xfffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e266m3_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e266m3_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..9f74404db
--- /dev/null
+++ b/src/Specific/solinas64_2e266m3_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffd);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xfffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xfffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xfffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xfffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0x1ffffffffffd);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0xfffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0xfffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0x1fffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 45 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0xfffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0xfffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 44 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e285m9_6limbs/feadd.c b/src/Specific/solinas64_2e285m9_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e285m9_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e285m9_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e285m9_6limbs/femul.c b/src/Specific/solinas64_2e285m9_6limbs/femul.c
new file mode 100644
index 000000000..389d4a67f
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ { uint64_t x30 = (uint64_t) (x29 >> 0x30);
+ { uint64_t x31 = ((uint64_t)x29 & 0xffffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint64_t x33 = (uint64_t) (x32 >> 0x2f);
+ { uint64_t x34 = ((uint64_t)x32 & 0x7fffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint64_t x36 = (uint64_t) (x35 >> 0x30);
+ { uint64_t x37 = ((uint64_t)x35 & 0xffffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint64_t x39 = (uint64_t) (x38 >> 0x2f);
+ { uint64_t x40 = ((uint64_t)x38 & 0x7fffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x30);
+ { uint64_t x43 = ((uint64_t)x41 & 0xffffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x2f);
+ { uint64_t x46 = ((uint64_t)x44 & 0x7fffffffffff);
+ { uint64_t x47 = (x31 + (0x9 * x45));
+ { uint64_t x48 = (x47 >> 0x30);
+ { uint64_t x49 = (x47 & 0xffffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x2f);
+ { uint64_t x52 = (x50 & 0x7fffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e285m9_6limbs/femulDisplay.log b/src/Specific/solinas64_2e285m9_6limbs/femulDisplay.log
new file mode 100644
index 000000000..2c96480f4
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ uint64_t x30 = (uint64_t) (x29 >> 0x30);
+ uint64_t x31 = ((uint64_t)x29 & 0xffffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint64_t x33 = (uint64_t) (x32 >> 0x2f);
+ uint64_t x34 = ((uint64_t)x32 & 0x7fffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint64_t x36 = (uint64_t) (x35 >> 0x30);
+ uint64_t x37 = ((uint64_t)x35 & 0xffffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint64_t x39 = (uint64_t) (x38 >> 0x2f);
+ uint64_t x40 = ((uint64_t)x38 & 0x7fffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint64_t x42 = (uint64_t) (x41 >> 0x30);
+ uint64_t x43 = ((uint64_t)x41 & 0xffffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x2f);
+ uint64_t x46 = ((uint64_t)x44 & 0x7fffffffffff);
+ uint64_t x47 = (x31 + (0x9 * x45));
+ uint64_t x48 = (x47 >> 0x30);
+ uint64_t x49 = (x47 & 0xffffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x2f);
+ uint64_t x52 = (x50 & 0x7fffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e285m9_6limbs/fesquare.c b/src/Specific/solinas64_2e285m9_6limbs/fesquare.c
new file mode 100644
index 000000000..0d70776b1
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ { uint64_t x17 = (uint64_t) (x16 >> 0x30);
+ { uint64_t x18 = ((uint64_t)x16 & 0xffffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint64_t x20 = (uint64_t) (x19 >> 0x2f);
+ { uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint64_t x23 = (uint64_t) (x22 >> 0x30);
+ { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x2f);
+ { uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x30);
+ { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x2f);
+ { uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffff);
+ { uint64_t x34 = (x18 + (0x9 * x32));
+ { uint64_t x35 = (x34 >> 0x30);
+ { uint64_t x36 = (x34 & 0xffffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x2f);
+ { uint64_t x39 = (x37 & 0x7fffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e285m9_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e285m9_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..fc3ae692b
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ uint64_t x17 = (uint64_t) (x16 >> 0x30);
+ uint64_t x18 = ((uint64_t)x16 & 0xffffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint64_t x20 = (uint64_t) (x19 >> 0x2f);
+ uint64_t x21 = ((uint64_t)x19 & 0x7fffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint64_t x23 = (uint64_t) (x22 >> 0x30);
+ uint64_t x24 = ((uint64_t)x22 & 0xffffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint64_t x26 = (uint64_t) (x25 >> 0x2f);
+ uint64_t x27 = ((uint64_t)x25 & 0x7fffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint64_t x29 = (uint64_t) (x28 >> 0x30);
+ uint64_t x30 = ((uint64_t)x28 & 0xffffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x2f);
+ uint64_t x33 = ((uint64_t)x31 & 0x7fffffffffff);
+ uint64_t x34 = (x18 + (0x9 * x32));
+ uint64_t x35 = (x34 >> 0x30);
+ uint64_t x36 = (x34 & 0xffffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x2f);
+ uint64_t x39 = (x37 & 0x7fffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e285m9_6limbs/fesub.c b/src/Specific/solinas64_2e285m9_6limbs/fesub.c
new file mode 100644
index 000000000..768d289e2
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((Const 562949953421294 + x5) - x15);
+ out[1] = ((0xfffffffffffe + x7) - x17);
+ out[2] = ((0x1fffffffffffe + x9) - x19);
+ out[3] = ((0xfffffffffffe + x11) - x21);
+ out[4] = ((0x1fffffffffffe + x13) - x23);
+ out[5] = ((0xfffffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e285m9_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e285m9_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..75a2f0bd0
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0xfffffffffffe + x12) - x22), ((0x1fffffffffffe + x13) - x23), ((0xfffffffffffe + x11) - x21), ((0x1fffffffffffe + x9) - x19), ((0xfffffffffffe + x7) - x17), ((Const 562949953421294 + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e285m9_6limbs/freeze.c b/src/Specific/solinas64_2e285m9_6limbs/freeze.c
new file mode 100644
index 000000000..de5684ced
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffff7);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x7fffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x7fffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0xfffffffffff7);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0x7fffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0xffffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0x7fffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0xffffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0x7fffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e285m9_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e285m9_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..ef01503b3
--- /dev/null
+++ b/src/Specific/solinas64_2e285m9_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffff7);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x7fffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x7fffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x7fffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0xfffffffffff7);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0x7fffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0xffffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0x7fffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0xffffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0x7fffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 47 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e291m19_6limbs/feadd.c b/src/Specific/solinas64_2e291m19_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e291m19_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e291m19_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e291m19_6limbs/femul.c b/src/Specific/solinas64_2e291m19_6limbs/femul.c
new file mode 100644
index 000000000..f4d373414
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x13 * (0x2 * ((uint128_t)x12 * x22))));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x13 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x13 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x13 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0x13 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ { uint64_t x30 = (uint64_t) (x29 >> 0x31);
+ { uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint64_t x33 = (uint64_t) (x32 >> 0x30);
+ { uint64_t x34 = ((uint64_t)x32 & 0xffffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint64_t x36 = (uint64_t) (x35 >> 0x31);
+ { uint64_t x37 = ((uint64_t)x35 & 0x1ffffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint64_t x39 = (uint64_t) (x38 >> 0x30);
+ { uint64_t x40 = ((uint64_t)x38 & 0xffffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x31);
+ { uint64_t x43 = ((uint64_t)x41 & 0x1ffffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x30);
+ { uint64_t x46 = ((uint64_t)x44 & 0xffffffffffff);
+ { uint64_t x47 = (x31 + (0x13 * x45));
+ { uint64_t x48 = (x47 >> 0x31);
+ { uint64_t x49 = (x47 & 0x1ffffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x30);
+ { uint64_t x52 = (x50 & 0xffffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e291m19_6limbs/femulDisplay.log b/src/Specific/solinas64_2e291m19_6limbs/femulDisplay.log
new file mode 100644
index 000000000..94c4c74e7
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x13 * (0x2 * ((uint128_t)x12 * x22))));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x13 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x13 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x13 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0x13 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ uint64_t x30 = (uint64_t) (x29 >> 0x31);
+ uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint64_t x33 = (uint64_t) (x32 >> 0x30);
+ uint64_t x34 = ((uint64_t)x32 & 0xffffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint64_t x36 = (uint64_t) (x35 >> 0x31);
+ uint64_t x37 = ((uint64_t)x35 & 0x1ffffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint64_t x39 = (uint64_t) (x38 >> 0x30);
+ uint64_t x40 = ((uint64_t)x38 & 0xffffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint64_t x42 = (uint64_t) (x41 >> 0x31);
+ uint64_t x43 = ((uint64_t)x41 & 0x1ffffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x30);
+ uint64_t x46 = ((uint64_t)x44 & 0xffffffffffff);
+ uint64_t x47 = (x31 + (0x13 * x45));
+ uint64_t x48 = (x47 >> 0x31);
+ uint64_t x49 = (x47 & 0x1ffffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x30);
+ uint64_t x52 = (x50 & 0xffffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e291m19_6limbs/fesquare.c b/src/Specific/solinas64_2e291m19_6limbs/fesquare.c
new file mode 100644
index 000000000..755f6f939
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x13 * (0x2 * ((uint128_t)x9 * x9))));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ { uint64_t x17 = (uint64_t) (x16 >> 0x31);
+ { uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint64_t x20 = (uint64_t) (x19 >> 0x30);
+ { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint64_t x23 = (uint64_t) (x22 >> 0x31);
+ { uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x30);
+ { uint64_t x27 = ((uint64_t)x25 & 0xffffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x31);
+ { uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x30);
+ { uint64_t x33 = ((uint64_t)x31 & 0xffffffffffff);
+ { uint64_t x34 = (x18 + (0x13 * x32));
+ { uint64_t x35 = (x34 >> 0x31);
+ { uint64_t x36 = (x34 & 0x1ffffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x30);
+ { uint64_t x39 = (x37 & 0xffffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e291m19_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e291m19_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..7226ad189
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x13 * (0x2 * ((uint128_t)x9 * x9))));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x13 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x13 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x13 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0x13 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ uint64_t x17 = (uint64_t) (x16 >> 0x31);
+ uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint64_t x20 = (uint64_t) (x19 >> 0x30);
+ uint64_t x21 = ((uint64_t)x19 & 0xffffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint64_t x23 = (uint64_t) (x22 >> 0x31);
+ uint64_t x24 = ((uint64_t)x22 & 0x1ffffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint64_t x26 = (uint64_t) (x25 >> 0x30);
+ uint64_t x27 = ((uint64_t)x25 & 0xffffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint64_t x29 = (uint64_t) (x28 >> 0x31);
+ uint64_t x30 = ((uint64_t)x28 & 0x1ffffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x30);
+ uint64_t x33 = ((uint64_t)x31 & 0xffffffffffff);
+ uint64_t x34 = (x18 + (0x13 * x32));
+ uint64_t x35 = (x34 >> 0x31);
+ uint64_t x36 = (x34 & 0x1ffffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x30);
+ uint64_t x39 = (x37 & 0xffffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e291m19_6limbs/fesub.c b/src/Specific/solinas64_2e291m19_6limbs/fesub.c
new file mode 100644
index 000000000..547e5a7d1
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((Const 1125899906842586 + x5) - x15);
+ out[1] = ((0x1fffffffffffe + x7) - x17);
+ out[2] = ((0x3fffffffffffe + x9) - x19);
+ out[3] = ((0x1fffffffffffe + x11) - x21);
+ out[4] = ((0x3fffffffffffe + x13) - x23);
+ out[5] = ((0x1fffffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e291m19_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e291m19_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..c611d0a71
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x1fffffffffffe + x12) - x22), ((0x3fffffffffffe + x13) - x23), ((0x1fffffffffffe + x11) - x21), ((0x3fffffffffffe + x9) - x19), ((0x1fffffffffffe + x7) - x17), ((Const 1125899906842586 + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e291m19_6limbs/freeze.c b/src/Specific/solinas64_2e291m19_6limbs/freeze.c
new file mode 100644
index 000000000..7abb503f8
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffed);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0x1ffffffffffed);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0xffffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0x1ffffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0xffffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0x1ffffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0xffffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e291m19_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e291m19_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..e4eb25461
--- /dev/null
+++ b/src/Specific/solinas64_2e291m19_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1ffffffffffed);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1ffffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x1ffffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0x1ffffffffffed);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0xffffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0x1ffffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0xffffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0x1ffffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 49 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0xffffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 48 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e321m9_6limbs/feadd.c b/src/Specific/solinas64_2e321m9_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e321m9_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e321m9_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e321m9_6limbs/femul.c b/src/Specific/solinas64_2e321m9_6limbs/femul.c
new file mode 100644
index 000000000..688d2ca13
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ { uint64_t x30 = (uint64_t) (x29 >> 0x36);
+ { uint64_t x31 = ((uint64_t)x29 & 0x3fffffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint64_t x33 = (uint64_t) (x32 >> 0x35);
+ { uint64_t x34 = ((uint64_t)x32 & 0x1fffffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint64_t x36 = (uint64_t) (x35 >> 0x36);
+ { uint64_t x37 = ((uint64_t)x35 & 0x3fffffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint64_t x39 = (uint64_t) (x38 >> 0x35);
+ { uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x36);
+ { uint64_t x43 = ((uint64_t)x41 & 0x3fffffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x35);
+ { uint64_t x46 = ((uint64_t)x44 & 0x1fffffffffffff);
+ { uint64_t x47 = (x31 + (0x9 * x45));
+ { uint64_t x48 = (x47 >> 0x36);
+ { uint64_t x49 = (x47 & 0x3fffffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x35);
+ { uint64_t x52 = (x50 & 0x1fffffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e321m9_6limbs/femulDisplay.log b/src/Specific/solinas64_2e321m9_6limbs/femulDisplay.log
new file mode 100644
index 000000000..a5811c0f9
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + ((0x2 * ((uint128_t)x7 * x21)) + (((uint128_t)x9 * x19) + ((0x2 * ((uint128_t)x11 * x17)) + ((uint128_t)x13 * x15))))) + (0x9 * (0x2 * ((uint128_t)x12 * x22))));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x9 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0x9 * ((0x2 * ((uint128_t)x11 * x22)) + (((uint128_t)x13 * x23) + (0x2 * ((uint128_t)x12 * x21))))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x9 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0x9 * ((0x2 * ((uint128_t)x7 * x22)) + (((uint128_t)x9 * x23) + ((0x2 * ((uint128_t)x11 * x21)) + (((uint128_t)x13 * x19) + (0x2 * ((uint128_t)x12 * x17))))))));
+ uint64_t x30 = (uint64_t) (x29 >> 0x36);
+ uint64_t x31 = ((uint64_t)x29 & 0x3fffffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint64_t x33 = (uint64_t) (x32 >> 0x35);
+ uint64_t x34 = ((uint64_t)x32 & 0x1fffffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint64_t x36 = (uint64_t) (x35 >> 0x36);
+ uint64_t x37 = ((uint64_t)x35 & 0x3fffffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint64_t x39 = (uint64_t) (x38 >> 0x35);
+ uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint64_t x42 = (uint64_t) (x41 >> 0x36);
+ uint64_t x43 = ((uint64_t)x41 & 0x3fffffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x35);
+ uint64_t x46 = ((uint64_t)x44 & 0x1fffffffffffff);
+ uint64_t x47 = (x31 + (0x9 * x45));
+ uint64_t x48 = (x47 >> 0x36);
+ uint64_t x49 = (x47 & 0x3fffffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x35);
+ uint64_t x52 = (x50 & 0x1fffffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e321m9_6limbs/fesquare.c b/src/Specific/solinas64_2e321m9_6limbs/fesquare.c
new file mode 100644
index 000000000..b2b14b5c2
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ { uint64_t x17 = (uint64_t) (x16 >> 0x36);
+ { uint64_t x18 = ((uint64_t)x16 & 0x3fffffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint64_t x20 = (uint64_t) (x19 >> 0x35);
+ { uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint64_t x23 = (uint64_t) (x22 >> 0x36);
+ { uint64_t x24 = ((uint64_t)x22 & 0x3fffffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x35);
+ { uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x36);
+ { uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x35);
+ { uint64_t x33 = ((uint64_t)x31 & 0x1fffffffffffff);
+ { uint64_t x34 = (x18 + (0x9 * x32));
+ { uint64_t x35 = (x34 >> 0x36);
+ { uint64_t x36 = (x34 & 0x3fffffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x35);
+ { uint64_t x39 = (x37 & 0x1fffffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e321m9_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e321m9_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..d28671d0a
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + ((0x2 * ((uint128_t)x4 * x8)) + (((uint128_t)x6 * x6) + ((0x2 * ((uint128_t)x8 * x4)) + ((uint128_t)x10 * x2))))) + (0x9 * (0x2 * ((uint128_t)x9 * x9))));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x9 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0x9 * ((0x2 * ((uint128_t)x8 * x9)) + (((uint128_t)x10 * x10) + (0x2 * ((uint128_t)x9 * x8))))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x9 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0x9 * ((0x2 * ((uint128_t)x4 * x9)) + (((uint128_t)x6 * x10) + ((0x2 * ((uint128_t)x8 * x8)) + (((uint128_t)x10 * x6) + (0x2 * ((uint128_t)x9 * x4))))))));
+ uint64_t x17 = (uint64_t) (x16 >> 0x36);
+ uint64_t x18 = ((uint64_t)x16 & 0x3fffffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint64_t x20 = (uint64_t) (x19 >> 0x35);
+ uint64_t x21 = ((uint64_t)x19 & 0x1fffffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint64_t x23 = (uint64_t) (x22 >> 0x36);
+ uint64_t x24 = ((uint64_t)x22 & 0x3fffffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint64_t x26 = (uint64_t) (x25 >> 0x35);
+ uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint64_t x29 = (uint64_t) (x28 >> 0x36);
+ uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x35);
+ uint64_t x33 = ((uint64_t)x31 & 0x1fffffffffffff);
+ uint64_t x34 = (x18 + (0x9 * x32));
+ uint64_t x35 = (x34 >> 0x36);
+ uint64_t x36 = (x34 & 0x3fffffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x35);
+ uint64_t x39 = (x37 & 0x1fffffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e321m9_6limbs/fesub.c b/src/Specific/solinas64_2e321m9_6limbs/fesub.c
new file mode 100644
index 000000000..8e1ad691e
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((0x7fffffffffffee + x5) - x15);
+ out[1] = ((0x3ffffffffffffe + x7) - x17);
+ out[2] = ((0x7ffffffffffffe + x9) - x19);
+ out[3] = ((0x3ffffffffffffe + x11) - x21);
+ out[4] = ((0x7ffffffffffffe + x13) - x23);
+ out[5] = ((0x3ffffffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e321m9_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e321m9_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..4d9559435
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x3ffffffffffffe + x12) - x22), ((0x7ffffffffffffe + x13) - x23), ((0x3ffffffffffffe + x11) - x21), ((0x7ffffffffffffe + x9) - x19), ((0x3ffffffffffffe + x7) - x17), ((0x7fffffffffffee + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e321m9_6limbs/freeze.c b/src/Specific/solinas64_2e321m9_6limbs/freeze.c
new file mode 100644
index 000000000..73c7dc587
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffff7);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x1fffffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3fffffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x3fffffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0x3ffffffffffff7);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0x1fffffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0x3fffffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0x1fffffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0x3fffffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0x1fffffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e321m9_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e321m9_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..a296ea7ed
--- /dev/null
+++ b/src/Specific/solinas64_2e321m9_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3ffffffffffff7);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x1fffffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x3fffffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1fffffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x3fffffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0x3ffffffffffff7);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0x1fffffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0x3fffffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0x1fffffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0x3fffffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0x1fffffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/feadd.c b/src/Specific/solinas64_2e322m2e161m1_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e322m2e161m1_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/femul.c b/src/Specific/solinas64_2e322m2e161m1_6limbs/femul.c
new file mode 100644
index 000000000..a43f6ae3f
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/femul.c
@@ -0,0 +1,65 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = ((0x2 * ((uint128_t)(x9 + x12) * (x19 + x22))) - (0x2 * ((uint128_t)x9 * x19)));
+ { uint128_t x25 = (((0x2 * ((uint128_t)(x7 + x13) * (x19 + x22))) + (0x2 * ((uint128_t)(x9 + x12) * (x17 + x23)))) - ((0x2 * ((uint128_t)x7 * x19)) + (0x2 * ((uint128_t)x9 * x17))));
+ { uint128_t x26 = ((((uint128_t)(x5 + x11) * (x19 + x22)) + (((uint128_t)(x7 + x13) * (x17 + x23)) + ((uint128_t)(x9 + x12) * (x15 + x21)))) - (((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))));
+ { uint128_t x27 = ((((uint128_t)(x5 + x11) * (x17 + x23)) + ((uint128_t)(x7 + x13) * (x15 + x21))) - (((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)));
+ { uint128_t x28 = (((uint128_t)(x5 + x11) * (x15 + x21)) - ((uint128_t)x5 * x15));
+ { uint128_t x29 = ((((0x2 * ((uint128_t)x9 * x19)) + (0x2 * ((uint128_t)x12 * x22))) + x27) + x24);
+ { uint128_t x30 = (((((0x2 * ((uint128_t)x7 * x19)) + (0x2 * ((uint128_t)x9 * x17))) + ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))) + x28) + x25);
+ { uint128_t x31 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21))));
+ { uint128_t x32 = (((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))) + x24);
+ { uint128_t x33 = ((((uint128_t)x5 * x15) + ((uint128_t)x11 * x21)) + x25);
+ { uint64_t x34 = (uint64_t) (x31 >> 0x35);
+ { uint64_t x35 = ((uint64_t)x31 & 0x1fffffffffffff);
+ { uint64_t x36 = (uint64_t) (x26 >> 0x35);
+ { uint64_t x37 = ((uint64_t)x26 & 0x1fffffffffffff);
+ { uint128_t x38 = (((uint128_t)0x20000000000000 * x36) + x37);
+ { uint64_t x39 = (uint64_t) (x38 >> 0x35);
+ { uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffffff);
+ { uint128_t x41 = ((x34 + x30) + x39);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x36);
+ { uint64_t x43 = ((uint64_t)x41 & 0x3fffffffffffff);
+ { uint128_t x44 = (x33 + x39);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x36);
+ { uint64_t x46 = ((uint64_t)x44 & 0x3fffffffffffff);
+ { uint128_t x47 = (x42 + x29);
+ { uint64_t x48 = (uint64_t) (x47 >> 0x36);
+ { uint64_t x49 = ((uint64_t)x47 & 0x3fffffffffffff);
+ { uint128_t x50 = (x45 + x32);
+ { uint64_t x51 = (uint64_t) (x50 >> 0x36);
+ { uint64_t x52 = ((uint64_t)x50 & 0x3fffffffffffff);
+ { uint64_t x53 = (x48 + x40);
+ { uint64_t x54 = (x53 >> 0x35);
+ { uint64_t x55 = (x53 & 0x1fffffffffffff);
+ { uint64_t x56 = (x51 + x35);
+ { uint64_t x57 = (x56 >> 0x35);
+ { uint64_t x58 = (x56 & 0x1fffffffffffff);
+ { uint64_t x59 = ((0x20000000000000 * x54) + x55);
+ { uint64_t x60 = (x59 >> 0x35);
+ { uint64_t x61 = (x59 & 0x1fffffffffffff);
+ { uint64_t x62 = ((x57 + x43) + x60);
+ { uint64_t x63 = (x62 >> 0x36);
+ { uint64_t x64 = (x62 & 0x3fffffffffffff);
+ { uint64_t x65 = (x46 + x60);
+ { uint64_t x66 = (x65 >> 0x36);
+ { uint64_t x67 = (x65 & 0x3fffffffffffff);
+ out[0] = x67;
+ out[1] = (x66 + x52);
+ out[2] = x58;
+ out[3] = x64;
+ out[4] = (x63 + x49);
+ out[5] = x61;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/femulDisplay.log b/src/Specific/solinas64_2e322m2e161m1_6limbs/femulDisplay.log
new file mode 100644
index 000000000..70b6e2902
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/femulDisplay.log
@@ -0,0 +1,51 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = ((0x2 * ((uint128_t)(x9 + x12) * (x19 + x22))) - (0x2 * ((uint128_t)x9 * x19)));
+ uint128_t x25 = (((0x2 * ((uint128_t)(x7 + x13) * (x19 + x22))) + (0x2 * ((uint128_t)(x9 + x12) * (x17 + x23)))) - ((0x2 * ((uint128_t)x7 * x19)) + (0x2 * ((uint128_t)x9 * x17))));
+ uint128_t x26 = ((((uint128_t)(x5 + x11) * (x19 + x22)) + (((uint128_t)(x7 + x13) * (x17 + x23)) + ((uint128_t)(x9 + x12) * (x15 + x21)))) - (((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))));
+ uint128_t x27 = ((((uint128_t)(x5 + x11) * (x17 + x23)) + ((uint128_t)(x7 + x13) * (x15 + x21))) - (((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)));
+ uint128_t x28 = (((uint128_t)(x5 + x11) * (x15 + x21)) - ((uint128_t)x5 * x15));
+ uint128_t x29 = ((((0x2 * ((uint128_t)x9 * x19)) + (0x2 * ((uint128_t)x12 * x22))) + x27) + x24);
+ uint128_t x30 = (((((0x2 * ((uint128_t)x7 * x19)) + (0x2 * ((uint128_t)x9 * x17))) + ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))) + x28) + x25);
+ uint128_t x31 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21))));
+ uint128_t x32 = (((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (((uint128_t)x11 * x23) + ((uint128_t)x13 * x21))) + x24);
+ uint128_t x33 = ((((uint128_t)x5 * x15) + ((uint128_t)x11 * x21)) + x25);
+ uint64_t x34 = (uint64_t) (x31 >> 0x35);
+ uint64_t x35 = ((uint64_t)x31 & 0x1fffffffffffff);
+ uint64_t x36 = (uint64_t) (x26 >> 0x35);
+ uint64_t x37 = ((uint64_t)x26 & 0x1fffffffffffff);
+ uint128_t x38 = (((uint128_t)0x20000000000000 * x36) + x37);
+ uint64_t x39 = (uint64_t) (x38 >> 0x35);
+ uint64_t x40 = ((uint64_t)x38 & 0x1fffffffffffff);
+ uint128_t x41 = ((x34 + x30) + x39);
+ uint64_t x42 = (uint64_t) (x41 >> 0x36);
+ uint64_t x43 = ((uint64_t)x41 & 0x3fffffffffffff);
+ uint128_t x44 = (x33 + x39);
+ uint64_t x45 = (uint64_t) (x44 >> 0x36);
+ uint64_t x46 = ((uint64_t)x44 & 0x3fffffffffffff);
+ uint128_t x47 = (x42 + x29);
+ uint64_t x48 = (uint64_t) (x47 >> 0x36);
+ uint64_t x49 = ((uint64_t)x47 & 0x3fffffffffffff);
+ uint128_t x50 = (x45 + x32);
+ uint64_t x51 = (uint64_t) (x50 >> 0x36);
+ uint64_t x52 = ((uint64_t)x50 & 0x3fffffffffffff);
+ uint64_t x53 = (x48 + x40);
+ uint64_t x54 = (x53 >> 0x35);
+ uint64_t x55 = (x53 & 0x1fffffffffffff);
+ uint64_t x56 = (x51 + x35);
+ uint64_t x57 = (x56 >> 0x35);
+ uint64_t x58 = (x56 & 0x1fffffffffffff);
+ uint64_t x59 = ((0x20000000000000 * x54) + x55);
+ uint64_t x60 = (x59 >> 0x35);
+ uint64_t x61 = (x59 & 0x1fffffffffffff);
+ uint64_t x62 = ((x57 + x43) + x60);
+ uint64_t x63 = (x62 >> 0x36);
+ uint64_t x64 = (x62 & 0x3fffffffffffff);
+ uint64_t x65 = (x46 + x60);
+ uint64_t x66 = (x65 >> 0x36);
+ uint64_t x67 = (x65 & 0x3fffffffffffff);
+ return (Return x61, (x63 + x49), Return x64, Return x58, (x66 + x52), Return x67))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquare.c b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquare.c
new file mode 100644
index 000000000..282118f83
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquare.c
@@ -0,0 +1,59 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = ((0x2 * ((uint128_t)(x6 + x9) * (x6 + x9))) - (0x2 * ((uint128_t)x6 * x6)));
+ { uint128_t x12 = (((0x2 * ((uint128_t)(x4 + x10) * (x6 + x9))) + (0x2 * ((uint128_t)(x6 + x9) * (x4 + x10)))) - ((0x2 * ((uint128_t)x4 * x6)) + (0x2 * ((uint128_t)x6 * x4))));
+ { uint128_t x13 = ((((uint128_t)(x2 + x8) * (x6 + x9)) + (((uint128_t)(x4 + x10) * (x4 + x10)) + ((uint128_t)(x6 + x9) * (x2 + x8)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))));
+ { uint128_t x14 = ((((uint128_t)(x2 + x8) * (x4 + x10)) + ((uint128_t)(x4 + x10) * (x2 + x8))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
+ { uint128_t x15 = (((uint128_t)(x2 + x8) * (x2 + x8)) - ((uint128_t)x2 * x2));
+ { uint128_t x16 = ((((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x9 * x9))) + x14) + x11);
+ { uint128_t x17 = (((((0x2 * ((uint128_t)x4 * x6)) + (0x2 * ((uint128_t)x6 * x4))) + ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))) + x15) + x12);
+ { uint128_t x18 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8))));
+ { uint128_t x19 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x8 * x10) + ((uint128_t)x10 * x8))) + x11);
+ { uint128_t x20 = ((((uint128_t)x2 * x2) + ((uint128_t)x8 * x8)) + x12);
+ { uint64_t x21 = (uint64_t) (x18 >> 0x35);
+ { uint64_t x22 = ((uint64_t)x18 & 0x1fffffffffffff);
+ { uint64_t x23 = (uint64_t) (x13 >> 0x35);
+ { uint64_t x24 = ((uint64_t)x13 & 0x1fffffffffffff);
+ { uint128_t x25 = (((uint128_t)0x20000000000000 * x23) + x24);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x35);
+ { uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
+ { uint128_t x28 = ((x21 + x17) + x26);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x36);
+ { uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
+ { uint128_t x31 = (x20 + x26);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x36);
+ { uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff);
+ { uint128_t x34 = (x29 + x16);
+ { uint64_t x35 = (uint64_t) (x34 >> 0x36);
+ { uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffffff);
+ { uint128_t x37 = (x32 + x19);
+ { uint64_t x38 = (uint64_t) (x37 >> 0x36);
+ { uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
+ { uint64_t x40 = (x35 + x27);
+ { uint64_t x41 = (x40 >> 0x35);
+ { uint64_t x42 = (x40 & 0x1fffffffffffff);
+ { uint64_t x43 = (x38 + x22);
+ { uint64_t x44 = (x43 >> 0x35);
+ { uint64_t x45 = (x43 & 0x1fffffffffffff);
+ { uint64_t x46 = ((0x20000000000000 * x41) + x42);
+ { uint64_t x47 = (x46 >> 0x35);
+ { uint64_t x48 = (x46 & 0x1fffffffffffff);
+ { uint64_t x49 = ((x44 + x30) + x47);
+ { uint64_t x50 = (x49 >> 0x36);
+ { uint64_t x51 = (x49 & 0x3fffffffffffff);
+ { uint64_t x52 = (x33 + x47);
+ { uint64_t x53 = (x52 >> 0x36);
+ { uint64_t x54 = (x52 & 0x3fffffffffffff);
+ out[0] = x54;
+ out[1] = (x53 + x39);
+ out[2] = x45;
+ out[3] = x51;
+ out[4] = (x50 + x36);
+ out[5] = x48;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..f6f72ce2b
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesquareDisplay.log
@@ -0,0 +1,51 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = ((0x2 * ((uint128_t)(x6 + x9) * (x6 + x9))) - (0x2 * ((uint128_t)x6 * x6)));
+ uint128_t x12 = (((0x2 * ((uint128_t)(x4 + x10) * (x6 + x9))) + (0x2 * ((uint128_t)(x6 + x9) * (x4 + x10)))) - ((0x2 * ((uint128_t)x4 * x6)) + (0x2 * ((uint128_t)x6 * x4))));
+ uint128_t x13 = ((((uint128_t)(x2 + x8) * (x6 + x9)) + (((uint128_t)(x4 + x10) * (x4 + x10)) + ((uint128_t)(x6 + x9) * (x2 + x8)))) - (((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))));
+ uint128_t x14 = ((((uint128_t)(x2 + x8) * (x4 + x10)) + ((uint128_t)(x4 + x10) * (x2 + x8))) - (((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)));
+ uint128_t x15 = (((uint128_t)(x2 + x8) * (x2 + x8)) - ((uint128_t)x2 * x2));
+ uint128_t x16 = ((((0x2 * ((uint128_t)x6 * x6)) + (0x2 * ((uint128_t)x9 * x9))) + x14) + x11);
+ uint128_t x17 = (((((0x2 * ((uint128_t)x4 * x6)) + (0x2 * ((uint128_t)x6 * x4))) + ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))) + x15) + x12);
+ uint128_t x18 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8))));
+ uint128_t x19 = (((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (((uint128_t)x8 * x10) + ((uint128_t)x10 * x8))) + x11);
+ uint128_t x20 = ((((uint128_t)x2 * x2) + ((uint128_t)x8 * x8)) + x12);
+ uint64_t x21 = (uint64_t) (x18 >> 0x35);
+ uint64_t x22 = ((uint64_t)x18 & 0x1fffffffffffff);
+ uint64_t x23 = (uint64_t) (x13 >> 0x35);
+ uint64_t x24 = ((uint64_t)x13 & 0x1fffffffffffff);
+ uint128_t x25 = (((uint128_t)0x20000000000000 * x23) + x24);
+ uint64_t x26 = (uint64_t) (x25 >> 0x35);
+ uint64_t x27 = ((uint64_t)x25 & 0x1fffffffffffff);
+ uint128_t x28 = ((x21 + x17) + x26);
+ uint64_t x29 = (uint64_t) (x28 >> 0x36);
+ uint64_t x30 = ((uint64_t)x28 & 0x3fffffffffffff);
+ uint128_t x31 = (x20 + x26);
+ uint64_t x32 = (uint64_t) (x31 >> 0x36);
+ uint64_t x33 = ((uint64_t)x31 & 0x3fffffffffffff);
+ uint128_t x34 = (x29 + x16);
+ uint64_t x35 = (uint64_t) (x34 >> 0x36);
+ uint64_t x36 = ((uint64_t)x34 & 0x3fffffffffffff);
+ uint128_t x37 = (x32 + x19);
+ uint64_t x38 = (uint64_t) (x37 >> 0x36);
+ uint64_t x39 = ((uint64_t)x37 & 0x3fffffffffffff);
+ uint64_t x40 = (x35 + x27);
+ uint64_t x41 = (x40 >> 0x35);
+ uint64_t x42 = (x40 & 0x1fffffffffffff);
+ uint64_t x43 = (x38 + x22);
+ uint64_t x44 = (x43 >> 0x35);
+ uint64_t x45 = (x43 & 0x1fffffffffffff);
+ uint64_t x46 = ((0x20000000000000 * x41) + x42);
+ uint64_t x47 = (x46 >> 0x35);
+ uint64_t x48 = (x46 & 0x1fffffffffffff);
+ uint64_t x49 = ((x44 + x30) + x47);
+ uint64_t x50 = (x49 >> 0x36);
+ uint64_t x51 = (x49 & 0x3fffffffffffff);
+ uint64_t x52 = (x33 + x47);
+ uint64_t x53 = (x52 >> 0x36);
+ uint64_t x54 = (x52 & 0x3fffffffffffff);
+ return (Return x48, (x50 + x36), Return x51, Return x45, (x53 + x39), Return x54))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/fesub.c b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesub.c
new file mode 100644
index 000000000..891564394
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((0x7ffffffffffffe + x5) - x15);
+ out[1] = ((0x7ffffffffffffe + x7) - x17);
+ out[2] = ((0x3ffffffffffffe + x9) - x19);
+ out[3] = ((0x7ffffffffffffc + x11) - x21);
+ out[4] = ((0x7ffffffffffffe + x13) - x23);
+ out[5] = ((0x3ffffffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..515b3aa45
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x3ffffffffffffe + x12) - x22), ((0x7ffffffffffffe + x13) - x23), ((0x7ffffffffffffc + x11) - x21), ((0x3ffffffffffffe + x9) - x19), ((0x7ffffffffffffe + x7) - x17), ((0x7ffffffffffffe + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/freeze.c b/src/Specific/solinas64_2e322m2e161m1_6limbs/freeze.c
new file mode 100644
index 000000000..56fd8aa6a
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffffff);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3fffffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffffffe);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x3fffffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0x3fffffffffffff);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0x3fffffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0x1fffffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0x3ffffffffffffe);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0x3fffffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0x1fffffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e322m2e161m1_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e322m2e161m1_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..430abdfab
--- /dev/null
+++ b/src/Specific/solinas64_2e322m2e161m1_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x3fffffffffffff);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0x3fffffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0x1fffffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x3ffffffffffffe);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0x3fffffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0x1fffffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0x3fffffffffffff);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0x3fffffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0x1fffffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0x3ffffffffffffe);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0x3fffffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 54 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0x1fffffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 53 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m17_6limbs/feadd.c b/src/Specific/solinas64_2e336m17_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e336m17_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e336m17_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m17_6limbs/femul.c b/src/Specific/solinas64_2e336m17_6limbs/femul.c
new file mode 100644
index 000000000..9e663e79f
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x11 * ((uint128_t)x12 * x22)));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x11 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x11 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x11 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0x11 * (((uint128_t)x7 * x22) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x12 * x17)))))));
+ { uint128_t x30 = (x29 >> 0x38);
+ { uint64_t x31 = ((uint64_t)x29 & 0xffffffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint128_t x33 = (x32 >> 0x38);
+ { uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint128_t x36 = (x35 >> 0x38);
+ { uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint128_t x39 = (x38 >> 0x38);
+ { uint64_t x40 = ((uint64_t)x38 & 0xffffffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x38);
+ { uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x38);
+ { uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
+ { uint128_t x47 = (x31 + ((uint128_t)0x11 * x45));
+ { uint64_t x48 = (uint64_t) (x47 >> 0x38);
+ { uint64_t x49 = ((uint64_t)x47 & 0xffffffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x38);
+ { uint64_t x52 = (x50 & 0xffffffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e336m17_6limbs/femulDisplay.log b/src/Specific/solinas64_2e336m17_6limbs/femulDisplay.log
new file mode 100644
index 000000000..dba3aac29
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x11 * ((uint128_t)x12 * x22)));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x11 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x11 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x11 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0x11 * (((uint128_t)x7 * x22) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x12 * x17)))))));
+ uint128_t x30 = (x29 >> 0x38);
+ uint64_t x31 = ((uint64_t)x29 & 0xffffffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint128_t x33 = (x32 >> 0x38);
+ uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint128_t x36 = (x35 >> 0x38);
+ uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint128_t x39 = (x38 >> 0x38);
+ uint64_t x40 = ((uint64_t)x38 & 0xffffffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint64_t x42 = (uint64_t) (x41 >> 0x38);
+ uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x38);
+ uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
+ uint128_t x47 = (x31 + ((uint128_t)0x11 * x45));
+ uint64_t x48 = (uint64_t) (x47 >> 0x38);
+ uint64_t x49 = ((uint64_t)x47 & 0xffffffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x38);
+ uint64_t x52 = (x50 & 0xffffffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m17_6limbs/fesquare.c b/src/Specific/solinas64_2e336m17_6limbs/fesquare.c
new file mode 100644
index 000000000..86e650785
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x11 * ((uint128_t)x9 * x9)));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x9) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + ((uint128_t)x9 * x4)))))));
+ { uint128_t x17 = (x16 >> 0x38);
+ { uint64_t x18 = ((uint64_t)x16 & 0xffffffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint128_t x20 = (x19 >> 0x38);
+ { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint128_t x23 = (x22 >> 0x38);
+ { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint128_t x26 = (x25 >> 0x38);
+ { uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x38);
+ { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x38);
+ { uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
+ { uint128_t x34 = (x18 + ((uint128_t)0x11 * x32));
+ { uint64_t x35 = (uint64_t) (x34 >> 0x38);
+ { uint64_t x36 = ((uint64_t)x34 & 0xffffffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x38);
+ { uint64_t x39 = (x37 & 0xffffffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e336m17_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e336m17_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..582686440
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x11 * ((uint128_t)x9 * x9)));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x11 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x11 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x11 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0x11 * (((uint128_t)x4 * x9) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + ((uint128_t)x9 * x4)))))));
+ uint128_t x17 = (x16 >> 0x38);
+ uint64_t x18 = ((uint64_t)x16 & 0xffffffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint128_t x20 = (x19 >> 0x38);
+ uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint128_t x23 = (x22 >> 0x38);
+ uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint128_t x26 = (x25 >> 0x38);
+ uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint64_t x29 = (uint64_t) (x28 >> 0x38);
+ uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x38);
+ uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
+ uint128_t x34 = (x18 + ((uint128_t)0x11 * x32));
+ uint64_t x35 = (uint64_t) (x34 >> 0x38);
+ uint64_t x36 = ((uint64_t)x34 & 0xffffffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x38);
+ uint64_t x39 = (x37 & 0xffffffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m17_6limbs/fesub.c b/src/Specific/solinas64_2e336m17_6limbs/fesub.c
new file mode 100644
index 000000000..3728606e2
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((0x1ffffffffffffde + x5) - x15);
+ out[1] = ((0x1fffffffffffffe + x7) - x17);
+ out[2] = ((0x1fffffffffffffe + x9) - x19);
+ out[3] = ((0x1fffffffffffffe + x11) - x21);
+ out[4] = ((0x1fffffffffffffe + x13) - x23);
+ out[5] = ((0x1fffffffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e336m17_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e336m17_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..6df841701
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x1fffffffffffffe + x12) - x22), ((0x1fffffffffffffe + x13) - x23), ((0x1fffffffffffffe + x11) - x21), ((0x1fffffffffffffe + x9) - x19), ((0x1fffffffffffffe + x7) - x17), ((0x1ffffffffffffde + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m17_6limbs/freeze.c b/src/Specific/solinas64_2e336m17_6limbs/freeze.c
new file mode 100644
index 000000000..ff74991e3
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffef);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0xffffffffffffef);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0xffffffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0xffffffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0xffffffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0xffffffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0xffffffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e336m17_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e336m17_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..d1153b6c6
--- /dev/null
+++ b/src/Specific/solinas64_2e336m17_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xffffffffffffef);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0xffffffffffffef);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0xffffffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0xffffffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0xffffffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0xffffffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0xffffffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m3_6limbs/feadd.c b/src/Specific/solinas64_2e336m3_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e336m3_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e336m3_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m3_6limbs/femul.c b/src/Specific/solinas64_2e336m3_6limbs/femul.c
new file mode 100644
index 000000000..879ec974c
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x3 * ((uint128_t)x12 * x22)));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x3 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x3 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x3 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0x3 * (((uint128_t)x7 * x22) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x12 * x17)))))));
+ { uint64_t x30 = (uint64_t) (x29 >> 0x38);
+ { uint64_t x31 = ((uint64_t)x29 & 0xffffffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint64_t x33 = (uint64_t) (x32 >> 0x38);
+ { uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint64_t x36 = (uint64_t) (x35 >> 0x38);
+ { uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint64_t x39 = (uint64_t) (x38 >> 0x38);
+ { uint64_t x40 = ((uint64_t)x38 & 0xffffffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint64_t x42 = (uint64_t) (x41 >> 0x38);
+ { uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x38);
+ { uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
+ { uint64_t x47 = (x31 + (0x3 * x45));
+ { uint64_t x48 = (x47 >> 0x38);
+ { uint64_t x49 = (x47 & 0xffffffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x38);
+ { uint64_t x52 = (x50 & 0xffffffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e336m3_6limbs/femulDisplay.log b/src/Specific/solinas64_2e336m3_6limbs/femulDisplay.log
new file mode 100644
index 000000000..9540c82ee
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + (((uint128_t)x7 * x23) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + (((uint128_t)x13 * x17) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0x3 * ((uint128_t)x12 * x22)));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + (((uint128_t)x7 * x19) + (((uint128_t)x9 * x17) + ((uint128_t)x11 * x15)))) + (0x3 * (((uint128_t)x13 * x22) + ((uint128_t)x12 * x23))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + (((uint128_t)x7 * x17) + ((uint128_t)x9 * x15))) + (0x3 * (((uint128_t)x11 * x22) + (((uint128_t)x13 * x23) + ((uint128_t)x12 * x21)))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0x3 * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0x3 * (((uint128_t)x7 * x22) + (((uint128_t)x9 * x23) + (((uint128_t)x11 * x21) + (((uint128_t)x13 * x19) + ((uint128_t)x12 * x17)))))));
+ uint64_t x30 = (uint64_t) (x29 >> 0x38);
+ uint64_t x31 = ((uint64_t)x29 & 0xffffffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint64_t x33 = (uint64_t) (x32 >> 0x38);
+ uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint64_t x36 = (uint64_t) (x35 >> 0x38);
+ uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint64_t x39 = (uint64_t) (x38 >> 0x38);
+ uint64_t x40 = ((uint64_t)x38 & 0xffffffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint64_t x42 = (uint64_t) (x41 >> 0x38);
+ uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x38);
+ uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
+ uint64_t x47 = (x31 + (0x3 * x45));
+ uint64_t x48 = (x47 >> 0x38);
+ uint64_t x49 = (x47 & 0xffffffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x38);
+ uint64_t x52 = (x50 & 0xffffffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m3_6limbs/fesquare.c b/src/Specific/solinas64_2e336m3_6limbs/fesquare.c
new file mode 100644
index 000000000..5ccf65c0c
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x3 * ((uint128_t)x9 * x9)));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x3 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x3 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0x3 * (((uint128_t)x4 * x9) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + ((uint128_t)x9 * x4)))))));
+ { uint64_t x17 = (uint64_t) (x16 >> 0x38);
+ { uint64_t x18 = ((uint64_t)x16 & 0xffffffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint64_t x20 = (uint64_t) (x19 >> 0x38);
+ { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint64_t x23 = (uint64_t) (x22 >> 0x38);
+ { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint64_t x26 = (uint64_t) (x25 >> 0x38);
+ { uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint64_t x29 = (uint64_t) (x28 >> 0x38);
+ { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x38);
+ { uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
+ { uint64_t x34 = (x18 + (0x3 * x32));
+ { uint64_t x35 = (x34 >> 0x38);
+ { uint64_t x36 = (x34 & 0xffffffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x38);
+ { uint64_t x39 = (x37 & 0xffffffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e336m3_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e336m3_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..1a676031c
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + (((uint128_t)x4 * x10) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + (((uint128_t)x10 * x4) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0x3 * ((uint128_t)x9 * x9)));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + (((uint128_t)x4 * x6) + (((uint128_t)x6 * x4) + ((uint128_t)x8 * x2)))) + (0x3 * (((uint128_t)x10 * x9) + ((uint128_t)x9 * x10))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + (((uint128_t)x4 * x4) + ((uint128_t)x6 * x2))) + (0x3 * (((uint128_t)x8 * x9) + (((uint128_t)x10 * x10) + ((uint128_t)x9 * x8)))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0x3 * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0x3 * (((uint128_t)x4 * x9) + (((uint128_t)x6 * x10) + (((uint128_t)x8 * x8) + (((uint128_t)x10 * x6) + ((uint128_t)x9 * x4)))))));
+ uint64_t x17 = (uint64_t) (x16 >> 0x38);
+ uint64_t x18 = ((uint64_t)x16 & 0xffffffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint64_t x20 = (uint64_t) (x19 >> 0x38);
+ uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint64_t x23 = (uint64_t) (x22 >> 0x38);
+ uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint64_t x26 = (uint64_t) (x25 >> 0x38);
+ uint64_t x27 = ((uint64_t)x25 & 0xffffffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint64_t x29 = (uint64_t) (x28 >> 0x38);
+ uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x38);
+ uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
+ uint64_t x34 = (x18 + (0x3 * x32));
+ uint64_t x35 = (x34 >> 0x38);
+ uint64_t x36 = (x34 & 0xffffffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x38);
+ uint64_t x39 = (x37 & 0xffffffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m3_6limbs/fesub.c b/src/Specific/solinas64_2e336m3_6limbs/fesub.c
new file mode 100644
index 000000000..f680cabb5
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((0x1fffffffffffffa + x5) - x15);
+ out[1] = ((0x1fffffffffffffe + x7) - x17);
+ out[2] = ((0x1fffffffffffffe + x9) - x19);
+ out[3] = ((0x1fffffffffffffe + x11) - x21);
+ out[4] = ((0x1fffffffffffffe + x13) - x23);
+ out[5] = ((0x1fffffffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e336m3_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e336m3_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..f11308491
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x1fffffffffffffe + x12) - x22), ((0x1fffffffffffffe + x13) - x23), ((0x1fffffffffffffe + x11) - x21), ((0x1fffffffffffffe + x9) - x19), ((0x1fffffffffffffe + x7) - x17), ((0x1fffffffffffffa + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e336m3_6limbs/freeze.c b/src/Specific/solinas64_2e336m3_6limbs/freeze.c
new file mode 100644
index 000000000..41a597f18
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffffd);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0xfffffffffffffd);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0xffffffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0xffffffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0xffffffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0xffffffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0xffffffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e336m3_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e336m3_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..64e67c28c
--- /dev/null
+++ b/src/Specific/solinas64_2e336m3_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0xfffffffffffffd);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0xffffffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0xfffffffffffffd);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0xffffffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0xffffffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0xffffffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0xffffffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0xffffffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e338m15_6limbs/feadd.c b/src/Specific/solinas64_2e338m15_6limbs/feadd.c
new file mode 100644
index 000000000..4a6bfb999
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/feadd.c
@@ -0,0 +1,21 @@
+static void feadd(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = (x5 + x15);
+ out[1] = (x7 + x17);
+ out[2] = (x9 + x19);
+ out[3] = (x11 + x21);
+ out[4] = (x13 + x23);
+ out[5] = (x12 + x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e338m15_6limbs/feaddDisplay.log b/src/Specific/solinas64_2e338m15_6limbs/feaddDisplay.log
new file mode 100644
index 000000000..e32995a81
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/feaddDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ ((x12 + x22), (x13 + x23), (x11 + x21), (x9 + x19), (x7 + x17), (x5 + x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e338m15_6limbs/femul.c b/src/Specific/solinas64_2e338m15_6limbs/femul.c
new file mode 100644
index 000000000..b1b0c9dbc
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/femul.c
@@ -0,0 +1,50 @@
+static void femul(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ { uint128_t x24 = (((uint128_t)x5 * x22) + ((0x2 * ((uint128_t)x7 * x23)) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + ((0x2 * ((uint128_t)x13 * x17)) + ((uint128_t)x12 * x15))))));
+ { uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0xf * ((uint128_t)x12 * x22)));
+ { uint128_t x26 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((uint128_t)x11 * x15)))) + (0xf * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))));
+ { uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0xf * (((uint128_t)x11 * x22) + ((0x2 * ((uint128_t)x13 * x23)) + ((uint128_t)x12 * x21)))));
+ { uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0xf * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ { uint128_t x29 = (((uint128_t)x5 * x15) + (0xf * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))));
+ { uint128_t x30 = (x29 >> 0x39);
+ { uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffffffff);
+ { uint128_t x32 = (x30 + x28);
+ { uint128_t x33 = (x32 >> 0x38);
+ { uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
+ { uint128_t x35 = (x33 + x27);
+ { uint128_t x36 = (x35 >> 0x38);
+ { uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
+ { uint128_t x38 = (x36 + x26);
+ { uint128_t x39 = (x38 >> 0x39);
+ { uint64_t x40 = ((uint64_t)x38 & 0x1ffffffffffffff);
+ { uint128_t x41 = (x39 + x25);
+ { uint128_t x42 = (x41 >> 0x38);
+ { uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
+ { uint128_t x44 = (x42 + x24);
+ { uint64_t x45 = (uint64_t) (x44 >> 0x38);
+ { uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
+ { uint128_t x47 = (x31 + ((uint128_t)0xf * x45));
+ { uint64_t x48 = (uint64_t) (x47 >> 0x39);
+ { uint64_t x49 = ((uint64_t)x47 & 0x1ffffffffffffff);
+ { uint64_t x50 = (x48 + x34);
+ { uint64_t x51 = (x50 >> 0x38);
+ { uint64_t x52 = (x50 & 0xffffffffffffff);
+ out[0] = x49;
+ out[1] = x52;
+ out[2] = (x51 + x37);
+ out[3] = x40;
+ out[4] = x43;
+ out[5] = x46;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e338m15_6limbs/femulDisplay.log b/src/Specific/solinas64_2e338m15_6limbs/femulDisplay.log
new file mode 100644
index 000000000..c00b329ae
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/femulDisplay.log
@@ -0,0 +1,36 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ uint128_t x24 = (((uint128_t)x5 * x22) + ((0x2 * ((uint128_t)x7 * x23)) + (((uint128_t)x9 * x21) + (((uint128_t)x11 * x19) + ((0x2 * ((uint128_t)x13 * x17)) + ((uint128_t)x12 * x15))))));
+ uint128_t x25 = ((((uint128_t)x5 * x23) + (((uint128_t)x7 * x21) + (((uint128_t)x9 * x19) + (((uint128_t)x11 * x17) + ((uint128_t)x13 * x15))))) + (0xf * ((uint128_t)x12 * x22)));
+ uint128_t x26 = ((((uint128_t)x5 * x21) + ((0x2 * ((uint128_t)x7 * x19)) + ((0x2 * ((uint128_t)x9 * x17)) + ((uint128_t)x11 * x15)))) + (0xf * ((0x2 * ((uint128_t)x13 * x22)) + (0x2 * ((uint128_t)x12 * x23)))));
+ uint128_t x27 = ((((uint128_t)x5 * x19) + ((0x2 * ((uint128_t)x7 * x17)) + ((uint128_t)x9 * x15))) + (0xf * (((uint128_t)x11 * x22) + ((0x2 * ((uint128_t)x13 * x23)) + ((uint128_t)x12 * x21)))));
+ uint128_t x28 = ((((uint128_t)x5 * x17) + ((uint128_t)x7 * x15)) + (0xf * (((uint128_t)x9 * x22) + (((uint128_t)x11 * x23) + (((uint128_t)x13 * x21) + ((uint128_t)x12 * x19))))));
+ uint128_t x29 = (((uint128_t)x5 * x15) + (0xf * ((0x2 * ((uint128_t)x7 * x22)) + ((0x2 * ((uint128_t)x9 * x23)) + (((uint128_t)x11 * x21) + ((0x2 * ((uint128_t)x13 * x19)) + (0x2 * ((uint128_t)x12 * x17))))))));
+ uint128_t x30 = (x29 >> 0x39);
+ uint64_t x31 = ((uint64_t)x29 & 0x1ffffffffffffff);
+ uint128_t x32 = (x30 + x28);
+ uint128_t x33 = (x32 >> 0x38);
+ uint64_t x34 = ((uint64_t)x32 & 0xffffffffffffff);
+ uint128_t x35 = (x33 + x27);
+ uint128_t x36 = (x35 >> 0x38);
+ uint64_t x37 = ((uint64_t)x35 & 0xffffffffffffff);
+ uint128_t x38 = (x36 + x26);
+ uint128_t x39 = (x38 >> 0x39);
+ uint64_t x40 = ((uint64_t)x38 & 0x1ffffffffffffff);
+ uint128_t x41 = (x39 + x25);
+ uint128_t x42 = (x41 >> 0x38);
+ uint64_t x43 = ((uint64_t)x41 & 0xffffffffffffff);
+ uint128_t x44 = (x42 + x24);
+ uint64_t x45 = (uint64_t) (x44 >> 0x38);
+ uint64_t x46 = ((uint64_t)x44 & 0xffffffffffffff);
+ uint128_t x47 = (x31 + ((uint128_t)0xf * x45));
+ uint64_t x48 = (uint64_t) (x47 >> 0x39);
+ uint64_t x49 = ((uint64_t)x47 & 0x1ffffffffffffff);
+ uint64_t x50 = (x48 + x34);
+ uint64_t x51 = (x50 >> 0x38);
+ uint64_t x52 = (x50 & 0xffffffffffffff);
+ return (Return x46, Return x43, Return x40, (x51 + x37), Return x52, Return x49))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e338m15_6limbs/fesquare.c b/src/Specific/solinas64_2e338m15_6limbs/fesquare.c
new file mode 100644
index 000000000..0c19e81c2
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/fesquare.c
@@ -0,0 +1,44 @@
+static void fesquare(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint128_t x11 = (((uint128_t)x2 * x9) + ((0x2 * ((uint128_t)x4 * x10)) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x9 * x2))))));
+ { uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0xf * ((uint128_t)x9 * x9)));
+ { uint128_t x13 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0xf * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))));
+ { uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xf * (((uint128_t)x8 * x9) + ((0x2 * ((uint128_t)x10 * x10)) + ((uint128_t)x9 * x8)))));
+ { uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xf * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ { uint128_t x16 = (((uint128_t)x2 * x2) + (0xf * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))));
+ { uint128_t x17 = (x16 >> 0x39);
+ { uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffffff);
+ { uint128_t x19 = (x17 + x15);
+ { uint128_t x20 = (x19 >> 0x38);
+ { uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
+ { uint128_t x22 = (x20 + x14);
+ { uint128_t x23 = (x22 >> 0x38);
+ { uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
+ { uint128_t x25 = (x23 + x13);
+ { uint128_t x26 = (x25 >> 0x39);
+ { uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffffff);
+ { uint128_t x28 = (x26 + x12);
+ { uint128_t x29 = (x28 >> 0x38);
+ { uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
+ { uint128_t x31 = (x29 + x11);
+ { uint64_t x32 = (uint64_t) (x31 >> 0x38);
+ { uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
+ { uint128_t x34 = (x18 + ((uint128_t)0xf * x32));
+ { uint64_t x35 = (uint64_t) (x34 >> 0x39);
+ { uint64_t x36 = ((uint64_t)x34 & 0x1ffffffffffffff);
+ { uint64_t x37 = (x35 + x21);
+ { uint64_t x38 = (x37 >> 0x38);
+ { uint64_t x39 = (x37 & 0xffffffffffffff);
+ out[0] = x36;
+ out[1] = x39;
+ out[2] = (x38 + x24);
+ out[3] = x27;
+ out[4] = x30;
+ out[5] = x33;
+ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e338m15_6limbs/fesquareDisplay.log b/src/Specific/solinas64_2e338m15_6limbs/fesquareDisplay.log
new file mode 100644
index 000000000..20434092e
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/fesquareDisplay.log
@@ -0,0 +1,36 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint128_t x11 = (((uint128_t)x2 * x9) + ((0x2 * ((uint128_t)x4 * x10)) + (((uint128_t)x6 * x8) + (((uint128_t)x8 * x6) + ((0x2 * ((uint128_t)x10 * x4)) + ((uint128_t)x9 * x2))))));
+ uint128_t x12 = ((((uint128_t)x2 * x10) + (((uint128_t)x4 * x8) + (((uint128_t)x6 * x6) + (((uint128_t)x8 * x4) + ((uint128_t)x10 * x2))))) + (0xf * ((uint128_t)x9 * x9)));
+ uint128_t x13 = ((((uint128_t)x2 * x8) + ((0x2 * ((uint128_t)x4 * x6)) + ((0x2 * ((uint128_t)x6 * x4)) + ((uint128_t)x8 * x2)))) + (0xf * ((0x2 * ((uint128_t)x10 * x9)) + (0x2 * ((uint128_t)x9 * x10)))));
+ uint128_t x14 = ((((uint128_t)x2 * x6) + ((0x2 * ((uint128_t)x4 * x4)) + ((uint128_t)x6 * x2))) + (0xf * (((uint128_t)x8 * x9) + ((0x2 * ((uint128_t)x10 * x10)) + ((uint128_t)x9 * x8)))));
+ uint128_t x15 = ((((uint128_t)x2 * x4) + ((uint128_t)x4 * x2)) + (0xf * (((uint128_t)x6 * x9) + (((uint128_t)x8 * x10) + (((uint128_t)x10 * x8) + ((uint128_t)x9 * x6))))));
+ uint128_t x16 = (((uint128_t)x2 * x2) + (0xf * ((0x2 * ((uint128_t)x4 * x9)) + ((0x2 * ((uint128_t)x6 * x10)) + (((uint128_t)x8 * x8) + ((0x2 * ((uint128_t)x10 * x6)) + (0x2 * ((uint128_t)x9 * x4))))))));
+ uint128_t x17 = (x16 >> 0x39);
+ uint64_t x18 = ((uint64_t)x16 & 0x1ffffffffffffff);
+ uint128_t x19 = (x17 + x15);
+ uint128_t x20 = (x19 >> 0x38);
+ uint64_t x21 = ((uint64_t)x19 & 0xffffffffffffff);
+ uint128_t x22 = (x20 + x14);
+ uint128_t x23 = (x22 >> 0x38);
+ uint64_t x24 = ((uint64_t)x22 & 0xffffffffffffff);
+ uint128_t x25 = (x23 + x13);
+ uint128_t x26 = (x25 >> 0x39);
+ uint64_t x27 = ((uint64_t)x25 & 0x1ffffffffffffff);
+ uint128_t x28 = (x26 + x12);
+ uint128_t x29 = (x28 >> 0x38);
+ uint64_t x30 = ((uint64_t)x28 & 0xffffffffffffff);
+ uint128_t x31 = (x29 + x11);
+ uint64_t x32 = (uint64_t) (x31 >> 0x38);
+ uint64_t x33 = ((uint64_t)x31 & 0xffffffffffffff);
+ uint128_t x34 = (x18 + ((uint128_t)0xf * x32));
+ uint64_t x35 = (uint64_t) (x34 >> 0x39);
+ uint64_t x36 = ((uint64_t)x34 & 0x1ffffffffffffff);
+ uint64_t x37 = (x35 + x21);
+ uint64_t x38 = (x37 >> 0x38);
+ uint64_t x39 = (x37 & 0xffffffffffffff);
+ return (Return x33, Return x30, Return x27, (x38 + x24), Return x39, Return x36))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e338m15_6limbs/fesub.c b/src/Specific/solinas64_2e338m15_6limbs/fesub.c
new file mode 100644
index 000000000..58f3e1e4b
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/fesub.c
@@ -0,0 +1,21 @@
+static void fesub(uint64_t out[6], const uint64_t in1[6], const uint64_t in2[6]) {
+ { const uint64_t x12 = in1[5];
+ { const uint64_t x13 = in1[4];
+ { const uint64_t x11 = in1[3];
+ { const uint64_t x9 = in1[2];
+ { const uint64_t x7 = in1[1];
+ { const uint64_t x5 = in1[0];
+ { const uint64_t x22 = in2[5];
+ { const uint64_t x23 = in2[4];
+ { const uint64_t x21 = in2[3];
+ { const uint64_t x19 = in2[2];
+ { const uint64_t x17 = in2[1];
+ { const uint64_t x15 = in2[0];
+ out[0] = ((0x3ffffffffffffe2 + x5) - x15);
+ out[1] = ((0x1fffffffffffffe + x7) - x17);
+ out[2] = ((0x1fffffffffffffe + x9) - x19);
+ out[3] = ((0x3fffffffffffffe + x11) - x21);
+ out[4] = ((0x1fffffffffffffe + x13) - x23);
+ out[5] = ((0x1fffffffffffffe + x12) - x22);
+ }}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e338m15_6limbs/fesubDisplay.log b/src/Specific/solinas64_2e338m15_6limbs/fesubDisplay.log
new file mode 100644
index 000000000..9eb96c91d
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/fesubDisplay.log
@@ -0,0 +1,7 @@
+λ x x0 : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x12, x13, x11, x9, x7, x5, (x22, x23, x21, x19, x17, x15))%core,
+ (((0x1fffffffffffffe + x12) - x22), ((0x1fffffffffffffe + x13) - x23), ((0x3fffffffffffffe + x11) - x21), ((0x1fffffffffffffe + x9) - x19), ((0x1fffffffffffffe + x7) - x17), ((0x3ffffffffffffe2 + x5) - x15)))
+(x, x0)%core
+ : word64 * word64 * word64 * word64 * word64 * word64 → word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)
diff --git a/src/Specific/solinas64_2e338m15_6limbs/freeze.c b/src/Specific/solinas64_2e338m15_6limbs/freeze.c
new file mode 100644
index 000000000..9163faff6
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/freeze.c
@@ -0,0 +1,34 @@
+static void freeze(uint64_t out[6], const uint64_t in1[6]) {
+ { const uint64_t x9 = in1[5];
+ { const uint64_t x10 = in1[4];
+ { const uint64_t x8 = in1[3];
+ { const uint64_t x6 = in1[2];
+ { const uint64_t x4 = in1[1];
+ { const uint64_t x2 = in1[0];
+ { uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffff1);
+ { uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
+ { uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
+ { uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1ffffffffffffff);
+ { uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
+ { uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
+ { uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ { uint64_t x30 = (x29 & 0x1fffffffffffff1);
+ { uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ { uint64_t x34 = (x29 & 0xffffffffffffff);
+ { uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ { uint64_t x38 = (x29 & 0xffffffffffffff);
+ { uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ { uint64_t x42 = (x29 & 0x1ffffffffffffff);
+ { uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ { uint64_t x46 = (x29 & 0xffffffffffffff);
+ { uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ { uint64_t x50 = (x29 & 0xffffffffffffff);
+ { uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ out[0] = x32;
+ out[1] = x36;
+ out[2] = x40;
+ out[3] = x44;
+ out[4] = x48;
+ out[5] = x52;
+ }}}}}}}}}}}}}}}}}}}}}}}}}
+}
diff --git a/src/Specific/solinas64_2e338m15_6limbs/freezeDisplay.log b/src/Specific/solinas64_2e338m15_6limbs/freezeDisplay.log
new file mode 100644
index 000000000..d2d9556a4
--- /dev/null
+++ b/src/Specific/solinas64_2e338m15_6limbs/freezeDisplay.log
@@ -0,0 +1,26 @@
+λ x : word64 * word64 * word64 * word64 * word64 * word64,
+Interp-η
+(λ var : Syntax.base_type → Type,
+ λ '(x9, x10, x8, x6, x4, x2)%core,
+ uint64_t x12, uint8_t x13 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x2, 0x1fffffffffffff1);
+ uint64_t x15, uint8_t x16 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x13, Return x4, 0xffffffffffffff);
+ uint64_t x18, uint8_t x19 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x16, Return x6, 0xffffffffffffff);
+ uint64_t x21, uint8_t x22 = Op (Syntax.SubWithGetBorrow 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x19, Return x8, 0x1ffffffffffffff);
+ uint64_t x24, uint8_t x25 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x22, Return x10, 0xffffffffffffff);
+ uint64_t x27, uint8_t x28 = Op (Syntax.SubWithGetBorrow 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x25, Return x9, 0xffffffffffffff);
+ uint64_t x29 = cmovznz64(x28, 0x0, 0xffffffffffffffffL);
+ uint64_t x30 = (x29 & 0x1fffffffffffff1);
+ uint64_t x32, uint8_t x33 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (0x0, Return x12, Return x30);
+ uint64_t x34 = (x29 & 0xffffffffffffff);
+ uint64_t x36, uint8_t x37 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x33, Return x15, Return x34);
+ uint64_t x38 = (x29 & 0xffffffffffffff);
+ uint64_t x40, uint8_t x41 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x37, Return x18, Return x38);
+ uint64_t x42 = (x29 & 0x1ffffffffffffff);
+ uint64_t x44, uint8_t x45 = Op (Syntax.AddWithGetCarry 57 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x41, Return x21, Return x42);
+ uint64_t x46 = (x29 & 0xffffffffffffff);
+ uint64_t x48, uint8_t x49 = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x45, Return x24, Return x46);
+ uint64_t x50 = (x29 & 0xffffffffffffff);
+ uint64_t x52, uint8_t _ = Op (Syntax.AddWithGetCarry 56 (Syntax.TWord 3) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 6) (Syntax.TWord 3)) (Return x49, Return x27, Return x50);
+ (Return x52, Return x48, Return x44, Return x40, Return x36, Return x32))
+x
+ : word64 * word64 * word64 * word64 * word64 * word64 → ReturnType (uint64_t * uint64_t * uint64_t * uint64_t * uint64_t * uint64_t)